User Tools

Site Tools


how_to_use_midibox_cv_with_a_dout

This is an old revision of the document!


Midibox CV to extend “douts”

Who considers 2 or rather 8 gates to less or wants to trigger Vintage Drummer (Roland x0x) will find out that the existing hardware of the Midibox CV will not be sufficient. The solution is plain simple.

Hardware: A dout module is needed which will be connected to J8 of the coremodule. A doutx4 provides 32 gates/triggers. At this point some advice: Because it will be worked without any optokopller or transistors it is necessary not to energize the Gates/Triggers and to prevent short circuit.

Software: A few changes have to be made in the sourcecode. On the one hand the dout has to activate the gates/triggers at a NoteOn of the corresponding note on the other hand you can reduce the duration of an impulse optionally to 1ms independent from the duration of the Note. Background is the characteristic of some drummers. The x0x-boxes (606,808,909…) trigger the sound at decrease of voltage at the gate instead of increase.

Activate dout:

Download sources of Midibox CV at http://www.ucapps.de/mios_download.html and search for the following in “main.asm”:

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

Replace it with:

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

What happens here? Midibox CV is listening to the first channel (beginning from tune C-2) for a NoteOn and activates the corresponding dout. A NoteOff deactivates the dout.

1mw extension for Vintage Drummer:

Those who want to trigger Vintage Drummer have to modify the sourcecode as follows: Search for the following:

USER_SR_Service_Finish

;; ---[ handle with control surface variables (flashing cursor, etc) ]---
goto	CS_MENU_TIMER

Replayce it with:

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

This leads to a reset of all douts at every cicle - this lasts 1ms. So the drumm modules can be triggered with a 1ms latency.

Forum articles:

http://www.midibox.org/forum/index.php?topic=2701.0 http://www.midibox.org/forum/index.php?topic=6333.0

how_to_use_midibox_cv_with_a_dout.1143469849.txt.gz · Last modified: 2006/10/15 09:35 (external edit)