This shows you the differences between two versions of the page.
Next revision Both sides next revision | |||
how_to_use_midibox_cv_with_a_dout_german [2006/03/27 14:29] talion created |
how_to_use_midibox_cv_with_a_dout_german [2006/03/27 14:46] talion |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | Midibox CV um dout's erweitern | ||
- | Wem zwei bzw. acht Gates zu wenig sind, oder Vintage Drummer (Roland x0x) Triggern will, wird schnell feststellen, dass er mit der | ||
- | vorhandenen Hardwareausstattung der Midibox CV nicht auskommt. Die Lösung ist denkbar einfach und wird im Folgenden | ||
- | erläutert. | ||
- | |||
- | Hardwareseitig - | ||
- | wird ein dout Modul benötigt, welches mit J8 des Coremodules verbunden wird. Ein doutx4 stellt 32 Gates/Trigger bereit. An dieser | ||
- | Stelle der Hinweis: Da hier ohne Optokopller oder Transistoren gearbeitet wird, unbedingt darauf achten das die Gates/Trigger nicht | ||
- | "belastet" oder gar kurz geschlossen werden. | ||
- | |||
- | Softwareseitig - | ||
- | sind einige Änderungen am Code zu machen. Zum einen muss das dout bei einem NoteOn der entsprechenden Note den Gate/Trigger | ||
- | aktivieren, zum anderen kann man optional die Dauer des Impulses, unabhängig der Länge der Note, auf 1ms reduzieren. Hintergrund | ||
- | ist die eigenart mancher Drummer. So lösen die x0x-Boxen (606, 808, 909 ...) den Sound nicht bei Anschwellen der Gatespannung, sondern | ||
- | beim wieder Abflachen aus. | ||
- | |||
- | DOUT AKTIVIEREN: | ||
- | |||
- | Sourcen von Midibox CV herunterladen http://www.ucapps.de/mios_download.html und in main.asm nach dieser Stelle suchen: | ||
- | |||
- | |||
- | USER_MPROC_NotifyReceivedEvent | ||
- | ;; process MIDI event | ||
- | call CV_MIDI_NotifyReceivedEvent | ||
- | |||
- | ;; for best latency: branch to USER_Tick so that the new CV values | ||
- | ;; will be mapped immediately | ||
- | rgoto USER_Tick | ||
- | |||
- | |||
- | Mit diesem Code ersetzen: | ||
- | |||
- | USER_MPROC_NotifyReceivedEvent | ||
- | |||
- | ;; BEGIN --- control DOUT pins via Note events at channel #1 | ||
- | movf MIOS_PARAMETER1, W ; Note Off -> Note On with velocity 0 | ||
- | andlw 0xf0 | ||
- | xorlw 0x80 | ||
- | bnz USER_MPROC_NRE_NoNoteOff | ||
- | USER_MPROC_NRE_NoteOff | ||
- | bsf MIOS_PARAMETER1, 4 | ||
- | clrf MIOS_PARAMETER3 | ||
- | USER_MPROC_NRE_NoNoteOff | ||
- | |||
- | movlw 0x90 ; check for Note On at channel #1 | ||
- | IFNEQ MIOS_PARAMETER1, ACCESS, rgoto USER_MPROC_NRE_NoNoteChn1 | ||
- | USER_MPROC_NRE_NoteChn1 | ||
- | ;; MIOS_DOUT_PinSet expects pin number in WREG, value in MIOS_PARAMETER1 | ||
- | movf MIOS_PARAMETER3, W ; velocity == 0: off, velocity != 0: on | ||
- | skpz | ||
- | movlw 0x01 | ||
- | movwf MIOS_PARAMETER1 | ||
- | |||
- | movf MIOS_PARAMETER2, W ; pin number: note number - 0x24, we start with C-2 | ||
- | addlw -0x24 | ||
- | andlw 0x7f | ||
- | call MIOS_DOUT_PinSet | ||
- | USER_MPROC_NRE_NoNoteChn1 | ||
- | ;; END --- control DOUT pins via Note events at channel #1 | ||
- | |||
- | ;; process MIDI event | ||
- | call CV_MIDI_NotifyReceivedEvent | ||
- | |||
- | ;; for best latency: branch to USER_Tick so that the new CV values | ||
- | ;; will be mapped immediately | ||
- | rgoto USER_Tick | ||
- | |||
- | |||
- | |||
- | Was passiert hier? Midibox CV lauscht nun auf dem ersten Channel ab der Note C-2 auf einen NoteOn und aktiviert bei gespielter Note | ||
- | den entsprechenden dout. Bei einem NoteOff wird dieser wieder abgeschaltet. | ||
- | |||
- | |||
- | 1MS ERWEITERUNG FÜR VINTAGE DRUMMER: | ||
- | |||
- | Wer Vintage Drummer triggern will muss diesen Code zusätzlich in die main.asm einsetzen. Nach folgender Stelle suchen: | ||
- | |||
- | USER_SR_Service_Finish | ||
- | ;; ---[ handle with control surface variables (flashing cursor, etc) ]--- | ||
- | goto CS_MENU_TIMER | ||
- | |||
- | |||
- | Und mit diesem Code ersetzen: | ||
- | |||
- | USER_SR_Service_Finish | ||
- | clrf MIOS_PARAMETER1 | ||
- | movlw 0x00 | ||
- | call MIOS_DOUT_SRSet | ||
- | movlw 0x01 | ||
- | call MIOS_DOUT_SRSet | ||
- | movlw 0x02 | ||
- | call MIOS_DOUT_SRSet | ||
- | movlw 0x03 | ||
- | call MIOS_DOUT_SRSet | ||
- | |||
- | ;; ---[ handle with control surface variables (flashing cursor, etc) ]--- | ||
- | goto CS_MENU_TIMER | ||
- | |||
- | |||
- | Hiermit erreicht man, dass bei jedem Cycle die dout's zurückgesetzt werden - das dauert 1ms. Somit kann man die Drummodule mit 1ms Latenz | ||
- | triggern. | ||
- | |||
- | |||
- | |||
- | Themen im Forum: | ||
- | |||
- | http://www.midibox.org/forum/index.php?topic=2701.0 | ||
- | http://www.midibox.org/forum/index.php?topic=6333.0 |