Jump to content

Building velocity-sensitive polysynth using 2xMidiBox CV


Recommended Posts

Posted

Is it possible?

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?

Posted

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.

Posted

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 :-/

Best Regards, Thorsten.

Posted

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...

Posted
- 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...

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

        ;; get note
        lfsr    FSR0, CV_C1_NOTE
        movf    CV_CURRENT_CHANNEL, W, BANKED
        movff  PLUSW0, TMP1
[/code] by:
[code]
        ;; get velocity of note
        lfsr    FSR0, CV_C1_NOTE
        movf    CV_CURRENT_CHANNEL, W, BANKED
        movf PLUSW0, W
        lfsr    FSR0, VELOCITY_VALUES
        movff PLUSW0, TMP1

Best Regards, Thorsten.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...