Linux/Wine VST hardware host && drum machine Paweł Piątek Puck 2015 1
Ogólnie Co to jest? Zwykły PC, który działa jako automat perkusyjny i multiinstrument muzyczny. Wymaga jedynie klawiatury sterującej MIDI-USB i zasilania 2
Ogólnie Dlaczego? emulacje klasyczych syntezatorów zmiana konfiguracji na innej maszynie komercyjne rozwiązania są drogie wersjonowanie konfiguracji częśći zamienne wyzwanie 3
Ogólnie Zalożenia: obsługa VST ( Win32 ) minimum M$ tylko darmowe oprogramowanie ( najlepiej FLOSS ) bez HDD wymienialność bez niepotrzebnych procesów automatyczne wykrywanie klawiatur MIDI-USB 4
Hardware vs Software http://dispatchmag.com/wp-content/uploads/vince_019.jpg 5
Hardware vs Software Dlaczego nie hardware? dużo kabli drogi sprzęt transport problem z presetami 6
Hardware Dell Optiplex 755 (Core 2 Duo 2,3GHz 1GB DDR2) Pendrive 7
MIDI Musical Instrument Digital Interface system (interfejs, oprogramowanie i zestaw komend) służący do przekazywania informacji pomiędzy elektronicznymi instrumentami muzycznymi. Stworzony w 1983 Alternatywy: OSC, CV/Gate 8
MIDI 9
Realtime System czasu rzeczywistego to taki, w którym poprawność obliczeń zależy nie tylko od logicznej poprawności samych obliczeń, ale także od czasu w jakim zostanie wyprodukowany wynik. Mówimy że system zawiódł, jeśli założenia czasowe nie zostały dotrzymane. ( FAQ comp.realtime ) Kernel CONFIG_PREEMPT_RT patch m.in. konwertuje przerwania na wątki w klasie RT 10
Realtime Wine-RT Łatka Wine-RT pozwala programom używającym priorytetów M$Win osiągnięcie podobnej funkcjonalności pod linuxem. Mapuje priorytety windows na linux. Robi to samo co chrt 11
JACK Audio Connection Kit biblioteka libjack oraz daemon jackd klienci wewnętrzni (alsa, ffado etc.) zewnętrzni klienci rejestrują callback realtime lowlatency połączenia audio, MIDI 12
JACK Audio Connection Kit 13
JACK Audio Connection Kit 14
JACK Audio Connection Kit Jack1 vs Jack2 Jack 1 napisany w C, używa mniej RAM, mniej procesów, zombie Jack2 napisany w C++, wsparcie wieluprocesorów, osobny process do notyfikacji, DBUS 15
JACK Audio Connection Kit JackSession zapis ( snapshot ) stanu zarządzanych aplikacji oraz ich połączeń. klient rejestruje callback menadżer sesji przekazuje uuid, katalog sesji klient odpowiada jakim poleceniem należy go uruchomić i zapisuje swoje ustawienia w katalogu sesji 16
JACK Audio Connection Kit JackTransport: start, stop, repozycjonowanie klientów Timebase Master aplikacja obliczająca/narzucająca tempo, metrum, punkt w czasie aktywna może być tylko jedna 17
JACK Audio Connection Kit Netjack zarządzanie qjackctl CLI np. jack_connect, jack_lsp, jack_transport njconnect 18
VST VST (ang. Virtual Studio Technology) stworzony przez firmę Steinberg Media Technologies. VST 1.0-1996r VST 2.0-1999r - VSTi ( VSTi - Obsługa MIDI ) VST 2.4-2006r - 64bit VST 3.0-2008r Interfejs: AUDIO: process, processreplacing, processdoublereplacing MANAGE: setparameter, getparameter, dispatcher Plugin->Host audiomaster callback Pliki ze stanem pluginu FXB/FXP 19
VST alternatywy ( LV2, DSSI, RTAS, AU, DXi, linuxvst ) 20
VST - FSTHost 32 and 64 bit plugins load/save state to LASH, JackSessions, FPS files (own XML format) load/save FXB/FXP files Jack Transport Jack MIDI Jack autoconnection LADIsh - L1 or L2 (JackSession) Dump settings via SysEx MIDI CC automation (MIDI learn) bypass/resume state (also via MIDI CC or SysEx) simple midi filters volume control plugins which not handling MIDI Program Change messages easily plugin discovering (-g option) GTK2/GTK3 ( you can compile even without GTK ) control using TCP socket ( e.g. via telnet ) Menu Perl/GTK{2,3} 21
Hydrogen automat perkusjny bazujący na patternach kilka patternów może być odgrywanych w jednym czasie patterny można łączyć w jeden song można także grać live baza zestawów perkusyjnych humanize / swing tempo markers ( zmiana tempa ) midi actions JackTransport JackSessions 22
Hydrogen Dlaczego "advanced"? piano mode tap tempo / beat counter sample editor wtyczki LADSPA 23
Sesje Snapshot stanu klientów Zapis połączeń Możliwość przywrócenia JackSessions, lash, ladish, nonsm 24
Sesje Snapshot stanu klientów Zapis połączeń Możliwość przywrócenia JackSessions, lash, ladish, nonsm Kontrola wersji ( subversion, git etc. ) 25
Sesje NXJSM ( alternatywy ( Qjackctl, Ladish ) ) 26
FHCTRL Agreguje ustawienia ( i.e. songs, subsessions ) Obsługa zwykłych klientów/urządzeń MIDI Specjalny protokół oparty na MIDI SysEx Automatycznie podłącza się do fizycznych urządzeń MIDI 27
FHCTRL 28
Slackware Because it works! nie ma problemu z kompilacją bez niepotrzebnych zależności stabilność slapt-get 29
Slackware Set_rlimits - mały program umożliwiający dostęp do RT dla konta innych niż root Plik conf: /etc/set_rtlimits.conf Przykładowa linia: @audio /usr/bin/startx nice=-1 rtprio=99 memlock=1048576 30
Slackware X11vnc Zarządzanie zdalne z dowolnego komputera Obraz z karty graficznej 31
Co zrobić aby po prostu grało? Fluidsynth + dowolny zestaw sampli SF2 + dowolny hardware ( np. Rasp ) 32
Dziękuję 33