Jump to content

Building velocity-sensitive polysynth using 2xMidiBox CV


adamstan
 Share

Recommended Posts

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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...