I mean, connecting two MidiBoxes CV to the same Midi In, and setting one to respond to notes (in Poly mode), while the second responding to velocity. The problem is, that it should respond to the same notes - so there is a ‘Poly’ mode for velocities necessary. Let’s look at the example:
note C1 with velocity 64 has been received
first Midibox forwards its pitch to CV channel 1
second Midibox has to forward its velocity to its CV channel 1
when next note is received, and its pitch is forwarded to channel 2, its velocity should be also forwarded to channel 2 on ‘velocity MidiBox’.
Is it possible with current version of software? What changes are needed?
Because i need eight voices, so eight CV channels are needed for pitch, and another eight for velocity. And my question is, how to ‘bind’ or ‘gang’ pitch channels with velocity channels.
Such a mode is not implemented in MBCV - it would require, that the velocity values are stored together with the note values in the note stack. Programming isn’t so difficult here, but when I look into my ToDo list, I know that I don’t have the time for an update in the next year :-/
So, correct me if I’m wrong, and I’ll try to modify software myself:
I have to add ‘velocity stack’
I have to push velocity values on this stack together with pushing notes on note stack (probably by adding some lines to note stack handler)
I have to send out to CV channels velocity values instead of note numbers…
Well… I need to become more familiar with PIC assembly language (some instructions are strange to me - I’ve found a book on PIC16, but it seems that PIC18 has larger instruction set…) and there is a chance, that it will be done… But at first I want to finish basic, non-velocity-sensitive version of my synth, and then maybe add velocity option…
I have to push velocity values on this stack together with pushing notes on note stack (probably by adding some lines to note stack handler)
I have to send out to CV channels velocity values instead of note numbers…
yes, this is correct. If you want to make it easy and less RAM memory efficient (which would be ok, since there is enough free in the MBCV application), you could store the received velocity values in an array of 128 bytes:
in app_defines.inc, add:
VELOCITY_VALUES EQU 0x200 ; ... 0x27f - used as velocity value storage
[/code]
Within CV_MIDI_NoteOn, you can store the velocity value:
[code]
lfsr FSR0, VELOCITY\_VALUES
movf MIOS\_PARAMETER2, W ;; use note number (0x00..0x7f) as index for the array
movff MIOS\_PARAMETER3, PLUSW0 ;; works like: VELOCITY\_VALUES[note] = velocity
now a really quick&dirty solution: in cv_map.inc, CV_MAP_Hlp_Note function, you can send the velocity instead of the note in following way: replace