2011-05-26 6 views
6

Chcę utworzyć instrument VST z 16 wejściami MIDI i co najmniej 16 wyjściami audio. Podobnie jak to robi kontakt lub halion.Narzędzie wielokrotnego wejścia i wyjścia instrumentu VST

Wszelkie pomysły?

+1

Ale czy masz już jakieś doświadczenie z programowaniem vst? Zaskakujące jest to, że 16 kanałów powinno być trudniejsze do wdrożenia niż 2, nie jest tak w przypadku budowania wtyczek vst z oprogramowaniem takim jak SynthMaker (to jedyny sposób, w jaki zrobiłem to do tej pory). Tam możesz po prostu dodać dowolną ilość wejść i wyjść. – leftaroundabout

+0

Niektóre doświadczenia, użyłem wcześniej syntezatora. Ale mój nowy projekt musi być w C++. –

+2

Kolejna sprawa: czy naprawdę potrzebujesz 16 wejść MIDI, czy tylko 16 kanałów MIDI _channels_ (która jest liczbą oferowaną przez dowolne połączenie MIDI)? – leftaroundabout

Odpowiedz

4

Jak zauważyłem w Wyższej Szkole, jest mało prawdopodobne, że potrzebujesz 16 wejść i wyjść, szczególnie dla instrumentu. Jednak posiadanie 16 wejść MIDI i 16 wyjść audio jest bardzo powszechne w automatach perkusyjnych i innych wielościeżkowych instrumentach, gdzie użytkownik może chcieć przetwarzać każdy głos indywidualnie. Wejścia audio w ogóle nie są szczególnie przydatne dla instrumentów jako całości.

Powiedział, że po prostu instancję swoje wtyczki tak:

MyPlugin::MyPlugin(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, 0, kNumParameters) { 
    if(audioMaster) { 
    setNumInputs(0); 
    setNumOutputs(16); 
    } 
    // other constructor stuff ... 
} 

to punkt początkowy. Jednakże, ponieważ ogromna większość wtyczek jest tylko stereo, jest jeszcze kilka innych czynności, które musisz wykonać, aby host dostarczył ci 16 kanałów wyjściowych (zakładając, że to obsługuje). Najprawdopodobniej będziesz musiał zadzwonić pod numer getSpeakerArrangement() i setSpeakerArrangement() w pewnym momencie, a także zastąpić getOutputProperties().

Jeśli chodzi o kanały MIDI, host nie powinien ich traktować inaczej niż normalnie. Dostarczymy regularne zdarzenia MIDI w postaci VstMidiEvent s, które będą zawierać zwykłe dane MIDI (tj. Dla wszystkich 16 kanałów, jeśli użytkownik tak wybierze). To jest łatwa część - polega na tym, że konfiguracja wyjść to podstawa.

+0

Zakładam, że wiesz, jak działa Kontakt. Jak skonfigurować mój vst, aby każdy kanał MIDI mógł zostać wysłany do innego kanału wewnątrz vst? –

+2

Wszystkie zdarzenia midi są wysyłane razem. Ręcznie oddziela przychodzące zdarzenia midi zgodnie z numerem kanału. – Shannon

+1

Co @Shannon powiedział. ;) Zasadniczo pobiera się niższą próbkę od bajtu statusu, aby uzyskać kanał i wysłać go do odpowiedniego głosu. Sposób obsługi 16 kanałów jest częścią wewnętrznego projektu wtyczki i nie ma nic wspólnego z całą strukturą VST. –

Powiązane problemy