1. Hi everyone,

    Apple just released Logic Pro 10.5 for MacOS 10.15. We found out that Crush Pack, Mod Pack, Replika, and Replika XT will crash.

    Our teams are currently working on a fix, and we hope to have this out to you as soon as we can!

    Best wishes, 
    The NI Team

    Dismiss Notice

Midi Divisi / Midi channel chord splitting HELP

Discussion in 'Building With Reaktor' started by Valfo, Mar 22, 2020.

  1. Valfo

    Valfo New Member


    i'm a reaktor "newbie", i use for a long time ( version 3 ) but usually doesn't go deep into modifications of ensembles.
    i searched the manual and forum, but doesn't find much info directly related to this.
    maybe i don't know the right terms / words...

    if someone can point me in the right direction it will be very kind !

    this is what i'm trying to achieve :
    What = a midi effect - midi in > midi out. used as VST in cubase 10 or Live.
    Goal = i want to be able to split / spread notes of a chord to differents midi channels
    Parameter of note sorting = number of notes OR lowest to highest note OR key zone / split

    Exemples >
    1/ use i can have of this with analog synth :
    first three notes ( 1 to 3 ) > out midi channel 1
    more than three notes ( 4 to 6 ) > out midi channel 2
    more than six notes ( 7 to 9 ) > out midi channel 3

    2/ for strings divisi
    lowest note > midi channel 1
    second lowest note > midi channel 2
    Third lowest note > midi channel 3
    highest note > midi channel 4
  2. colB

    colB NI Product Owner

    That sort (heh) of thing would be an intermediate to advanced project, which might surprise you, but it's often the case that conceptually simple stuff is difficult to implement. Also, if something you think might be useful and a pretty basic process for music doesn't exist already in the library, then there's a good chance that it will be difficult to build or someone would have already done it.

    Reaktor has a lot of audio generation and processing stuff ready to go, but it's MIDI library is rudimentary and low level. If you want to do interesting stuff, you will have to get into some level of data structure coding, which is just plain difficult in Reaktor.
    You need sorting, and for sorting you need structures to store the data to be sorted, and algorithm implementations to do the sorting. There have been threads on the forum about sorting, so that might be a good place to start:

    Also check out an ensemble I uploaded ages ago. What it does is turn a chord hit into a delayed strum. It doesn't do any sorting, but it does store and process incoming midi, so it might be worth a look:
    Another to check out would be my note2CV block - that has some note specific stuff deep in the structure - some code for keeping track of the temporal order of active notes and some code that can find the lowest and highest active note.
    The factory note2 is also worth looking at, it does the same thing in a completely different way - e.g. for lowest and highest note, they use a brute force iterator approach, I use a bitmap structure and a bit twiddling binary tree based search.

    This is definitely achievable, but you will have to roll up your sleeves and get your hands dirty - just don't forget to use hand sanitiser afterwards!
  3. Valfo

    Valfo New Member

  4. colB

    colB NI Product Owner

    Yes, I would check those out - the challenge will be in working out how to use the sorted list and break it up into sections so you can send those notes to different channels. But having half the job already done would help ;)