Mappare i sysex in cc midi (Ob3 che controlla il B4)

ruggero 23-11-09 23.59
Su suggerimento di un forumer vi posto l'articolo di presentazione che spedivo agli interessati in merito alla mappatura dei SYSex del clone OB3 per pilotare in modo completo il B4....
CORREVA L'ANNO 2005!!!
grazie per i thanks....


Per molte persone il programma B4 della Native Intruments è il migliore clone hammond ora presente sul mercato sia come suono e come interfaccia. L'unica pecca se vogliamo trovarla è l'implementazione midi e la possibilità di controllare il programma attraverso interfacce hardware. Le possibilità sono limitate perché i canali di controllo dei drawbars e delle manopole non sono modificabili. Serve quindi un hardware che si adatti ai parametri del B4.
Io possiedo un OB3 squared con tastiera ed era da tempo che cercavo un rilancio del mio strumento oramai sorpassata da molti anni da nuove generazioni di cloni. L'OB però ha un difetto: non trasmette se non pochi messaggi di canale CC, il resto sono sysEx messages.
Ho fatto quindi una piccola ricerca su internet cercando di capire se i messaggi di sistema potevano essere tradotti in messaggi di canali percettibili dal B4. Si sa che i CC messages sono traducibili attraverso programmi come MIDIOX, ma questo programma non fornisce traduzione per i Sys Ex in entrata. Ho trovato allora un altro programma molto semplice: Bome's Midi Translator. Un traduttore efficace che trasforma praticamente qualunque messaggio in input in qualunque messaggio in output basta che si programmi con numeri già tradotti in sistema esadecimale (facile compito visto che il programma è già fornito di convertitore di numeri decimali ad esadecimali e viceversa).
Per prima cosa ho mappato il controllo più importante: il leslie speed e l'interruttore on-off. Come si sa l'OB è fornito di tasti dedicati.

prosegue...
Edited 23 Nov. 2009 23:00
ruggero 24-11-09 00.01
E' importante notare che i primi parametri di ogni messaggio sysex F0 31 01 01 è comune perché indica il modello del prodotto, il costruttore ecc ecc.

L'OB usa il messaggio F0 31 01 01 0E 01 F7 per dire che il leslie è ON.
I messaggi di canale hanno la sintassi seguente: B0 cc xx dove cc è il canale (espresso in esadecimali) e xx è il valore compreso tra 0 e 127 (0 e 7F)
Il B4 usa uno switch virtuale dove i valori dei messaggi di canale minori di 63 (40 in esadecimali) portano off il pulsante, per valori superiori di 64 portano a on.
Il canale per controllare l'on-off del Leslie del B4 è il 68 (44 in esadecimale). Ho scelto il valore 127 (7F) perl'on e 0 per l'off.
Quindi il comando da dare a Bome's Translator è:
F0 31 01 01 0E 01 F7 (SYSEX) to B0 44 7F (CC)
Questo è il metodo che può essere seguito per mappare qualunque interruttore on-off del B4 (vibrato upper/lower, drive, percussion, etc.). Ho preferito tralasciare l'interruttore della distorsione. Per me è meglio mantenerlo sempre su on visto che sui leslie non esiste tale possibilità e così controllo l'ammontare di saturazione con la manopola "Overdrive" presente sull'OB. La stessa tastiera poi non possiede uno switch per attivare on-off la percussione. Ho provato ad assegnare allo stesso sysEx due messaggi di canale (premendo l'armonico di percussione 2nd o 3rd si sarebbe dovuta attivare anche lo switch della percussione on-off sul B4) ma non è possibile: non si posson assegnare allo stesso syseX due CC differenti, riconosce solo il primo assegnato. Quindi per superare il problema ho usato l'interruttore "bass" dell'OB che non poteva avere altri utilizzi.
Ora veniamo alla parte più difficile: mappare i controlli rotativi e le slitte dell'OB. La tastiera invia dei Sysex particolari, non lineari: F0 31 01 01 cc oo pp F7 dove cc è il canale pp è il valore ma il problema riguarda oo che può essere 00 o 01. Praticamente la slitta da 0 a 4 usa dei parametri in uscita così:
F0 31 01 01 36 00 00 F7
F0 31 01 01 36 00 01 F7
F0 31 01 01 36 00 02 F7
...
F0 31 01 01 36 00 7F F7

da 4,1 a 8:
F0 31 01 01 36 01 00 F7
F0 31 01 01 36 01 01 F7
F0 31 01 01 36 01 02 F7
...
F0 31 01 01 36 01 7F F7
E' una vera rogna! Se non si sfruttano tutti i messaggi la slitta sul B4 reagirà in modo sbagliato ai movimenti della slitta dell'OB (può accadere che con metà corsa della slitta dell'OB si controlli tutta la drawbar del B4: orrendo).


prosegue
ruggero 24-11-09 00.01
Dopo ore e ore a pensare... mi è venuta l'idea di usare due canali distinti CC per sorpassare l'ostacolo per poi mixare i due canali su uno unico (quello corrispondente al CC della slitta del B4) utilizzando il programma MIDIOX perfetto per questo scopo.
Così ho mappato F0 31 01 01 36 01 xx F7 (corrispondente alla seconda metà della corsa del drawbar sull'OB) per esempio CC#95 (5E Hex) e ho sincronizzato i valori del CC con le variabili SYSex:
F0 31 01 01 36 01 xx F7 translated to B0 5E xx
il comando funziona come un'equazione dove qualunque variabile xx coincide (coincidono quindi i valori in ingresso con quelli in uscita.
L'altra metà dei messaggi della slitta

F0 31 01 01 36 00 xx F7
li ho diretti verso un altro CC (in questo caso ho scelto i CC propri del B4 realtivi alle drawbars: per la slitta del 16' il CC è il 12=0C in esadecimale)

F0 31 01 01 36 00 xx F7 to B0 0C xx.
Così ho dato il comando a MIDIOX di tradurre i valori del CC B0 0C xx da 0-127 a 0-63 e i valori del CC B0 5E xx da 0-127 a 64-127.
Lo so che è una soluzione cervellotica ma se non farete così la slitta sul B4 sembrerà impazzita quando provate a muovere quella sul'OB.
Passiamo ora ai controlli relativi agli armonici di percussione. Il selettore del B4 ha 9 posizioni ognuna corrispondente an un click del CC. Per avere il controllo su queste manopole virtuali si deve costruire un comando per Bome's Translator che invia un particolare valore relativo al CC quando un sysEx è ricevuto: semplice no?
ruggero 24-11-09 00.01
Premendo il tastino 3rd percussion sull'OB esso invia il messaggio F0 31 01 01 14 F7. Sul B4 il terzo armonico è posizionata a metà della corsa della manopola virtuale cioè ad un valore di 64 (40 in esadecimale).
Il comando da inviare con il programma Bome's Translator sarà:
,F0 31 01 01 14 F7 to B0 48 40
dove naturalmente 48 è il canale usato dal B4. I valori assegnati possono essere i più disparati e si dovrà quindi provare e riprovare per calibrare il giusto valore. Poiché ci sono molte possibilità per gli armonici sul B4, un musicista potrebbe calibrare i tasti del proprio controller hardware su valori diversi dalle classiche 2nd o 3rd harmonics.
Concludendo la lezione bisogna precisare che affinché tutto funzioni a dovere si devono utilizzare delle porte midi virtuali come MIDIYOKE (freeware) in questo modo:
MIDI IN >MIDI TRANSLATOR > MIDI Yoke port1 >MIDI-OX > MIDI Yoke Port2 > B4

Grazie per l'attenzione


Links
Native Instruments (B4) - http://www.nativeinstruments.de

MIDI-OX - http://midiox.com/

Bome's MIDI Translator - http://www.bome.com/midi/translator/


alchemy1 24-11-09 10.54
Grande!bellissimo post.emo
Anche se non ho un ob3....
Ps per la versione Ob3II è la stessa cosa, immagino..?!?!No?
ruggero 24-11-09 11.08
si, l'ob3 squadred ha lo stesso sistema operativo come pure il DB5 e l'OB5...
garubi 18-12-09 18.52
Io sto facendo la stessa cosa sempre con OB3(squared) ma per pilotare il VB3...

Io mi sono semplificato la vita di molto prendendo la verisone PRO di Bone Midi Translator: questa supporta le cosiddette "rules" ovvero la possibilità di eseguire calcoli sui parametri in ingresso e in uscita. In questo modo posso convertire molto facilmente i sysex in CC (se volete vi posto le regole...) ed evito completamente MIDIOX...

Sempre grazie alle "regole" della verisone PRO ora sto implementando l'uso di alcuni pulsanti dell'OB3 come "shift" ovvero quando per esempio il pulsante Bass è acceso i Drawbars dell'OB3 comandano i lower del plugin, quando non è acceso comandano gli upper... e così via...

Ora devo pensare un modo "furbo" per usare i pulsanti dei present sull'OB3 per richiamare i preset del plugin che ovviamente sono di più dei disponibili...

Se l'argomento interessa possiamo approfondire scambiandoci idee e... righe di programma ;-)

Stefano

P.S.
Se vuoi inviare più messaggi al ricevimento di un determinato sysex (per esempio per switchare la percussione on/off alla pressione del pulsante 3rd e 2nd, puoi usare due Translators con lo stesso midi message in e due diverse regole in out)
ruggero 18-12-09 18.55
Garubi... della serie quando il discepolo supera il maestro!
ottimo!
garubi 18-12-09 19.04
pensa che ho iniziato a cercare informazioni su 'sta roba qui 2 mesi fa ... ma qui sul forum non avevo trovato nulla ...

dimenticavo... con la versione PRO (che cosat 59 euro) hai integrate anche 4 o 5 (non ricordo esattamente) porte midi virtuali IN e OUT e un discreto midi Mapper per combinarle come vuoi...
Considerando che tutti questi settaggi possono variare con il singolo progetto caricato ma anche con il singolo preset del Translator... beh cambiare setup midi per comandare vari plugine filtrare a piacimento diventa davvero semplice!

Stef.
ruggero 18-12-09 19.06
spero tu abbia tratto qualche idea interessante dal mio post.
Mi ritenevo un figo quando avevo trovato il modo di comandare la manopola del vibrato con le 6 posizioni :)
io poi non mi ero spinto coì in avanti come te a controllare anche i lower drawbars: andavo a presets...
garubi 18-12-09 19.49
Molte idee interessanti!
...la verità è che io sono più capace a fare queste cose che a suonare.. :-(

:-D

emo

Buon fine settimana!

Stef.
sercik 31-05-12 14.17
Ciao! credo che mi servirà questo metodo per poter usare gli slider del roland jv90 e poter controllare l'organo vst..

P.S. molti dicono che il vb3 sia migliore, ma a me piace di più vintage organs della native instruments.

Sapete come posso accertarmi che il roland jv90 emetta segnali di tipo sysex quando si spostano gli slider?
dovrei andare la prossima settimana a Genova per provare il jv90 e valutarne l'acquisto.. cosa dovrei portarmi dietro per provare a mappare anche un solo slider, per vedere se la cosa è possibile...
Mi date una mano?
lucapianola 31-05-12 14.54
ciao!scusate l'OT
Io posseggo un DB3 exp ...il suo sistema operativo secondo voi è uguale al Ob3 ?!?
dal manuale c'è scritto quanto segue:
3 modi di Tx/Rx (canalizzazione Unica - Split - Politimbrica) - 2 modi di trasmissione dei controlli (Sys-ex, CC) - Bulk Dump - Send PG
l'idea di utilizzare il modulo della viscount per "pilotare" un organo vst mi piace parecchio ...
thanks in anticipo!