Reaktor 6 Midi FX (Logic) - How To Pass/Modify All CCs?

Rob Gray
Rob Gray Member Posts: 53 Member

I'm working on a CC modulator and trying to see which of my MIDI FX plugins is best for the job. I'm currently using Reaktor 6 as a Midi FX in Logic to process the notes. I've gotten as far in Reaktor as using a Note In and Midi Out block to pass through some notes and send CCs but I can't figure out how to do the following:

  • Take all MIDI data (incl. all CCs) and simply pass it through to the output. The Note In Block only has Pitch Bend and Mod Wheel, and the Midi Out block only supports 4 CCs per block.
  • Receive a specific CC and pass it to the output. I can figure out how to modify PB and MW because they're in the Note In block but after that it's unclear where I can receive specific CCs from so I can modify them.

Perhaps this is pre-Blocks Reaktor stuff that I just never learned as I started with Blocks. Can any Reaktor experts help out?

Comments

  • Simon A. Billington
    Simon A. Billington Member Posts: 26 Member

    Are you able to post any screenshots??

  • Rob Gray
    Rob Gray Member Posts: 53 Member
    edited January 25

    I did a little digging and it looks like all the stuff I need to do is Reaktor 5-era things which I couldn't even find in the Reaktor 6 manual. Had to open up the Reaktor 5 manual. Blocks appear to be monophonic in nature.

    Through some trial and error and looking at a CC remap ensemble I came up with this. It might not be the most efficient but it seems to work as a pass-through for notes and CCs and gives me access to manipulate the CC data.

    Routing a Channel Message In straight to another Channel Message Out seemed to only result in stuck notes, but I guess this works even though I'm not sure why this works and the other approach didn't.


  • Simon A. Billington
    Simon A. Billington Member Posts: 26 Member

    Sounds like something was happening to your Note Off messages in this instance. A bit bizarre.

    It sounds like you developed a solution so that is good news.

  • Rob Gray
    Rob Gray Member Posts: 53 Member
    edited January 26

    I suspect there's some kind of unintuitive and undocumented order in Reaktor that Channel Messages need to be sent out in for them not to hang. When you look at a lot of old Reaktor 4 and 5 ensembles with Channel Messages they have this sort of pattern at the end of them. Perhaps the MIDI message order is re-ordered internally so if you just send them out directly like I was trying to do they're out of order and the Note Off doesn't work.

    I suppose an old hand at Reaktor would just know all this stuff as "the way Reaktor Core works," kind of like hardware synths and their individual Sysex quirks.

  • colB
    colB Member Posts: 747 Guru
    edited January 26

    If you read the info/tool tips on the chan message modules, you will understand why notes are dropped if you wire them up.

    input says:

    "A MIDI Channel Messages received by the instrument creates a group of events at the outputs of this module. The order of the events is from the top to the bottom."

    ...the tool tip for the St input on the output Chan Message says:

    "An event at this input reads the values from the 3 audio inputs and triggers the sending of a MIDI message. Therefore the audio inputs have to be set before the triggering event arrives."

    So if you wire them together directly, the first event is St, then the others follow, but the output chan message module needs St to be the last event... oops... so you need a bunch of order and value modules in primary, or latches in core.


    This should work for passing midi messages through (untested):

    Although I do most midi related stuff in core because core provides some guarantees, so as things get complex, maintenance is at least possible.

  • colB
    colB Member Posts: 747 Guru

    Midi processing in Reaktor is not particularly easy. MIDI in general is not easy because it is designed to be extremely flexible but also to work on the ancient slow tech from the 80s.

    Blocks were never meant to be used for processing MIDI, Blocks are supposed to be an analogy for a monophonic modular synth modules. They are designed to use audio signals for everything, control signals and sound... MIDI access is provided via interface Blocks, but it's just the basic minimum, because MIDI doesn't make a whole lot of sense in a Blocks context.

    Blocks are really just monophonic instruments built in Reaktor to follow a framework of restrictions designed to ensure that you can use blocks built by different builders and they will all work together seamlessly.

    Reaktor is way more than just Blocks.

    For MIDI processing, you need to use Primary, and ideally Core (just easier when things get tricky).

    MIDI is a monophonic sequential stream of events... even for playing chords on a polysynth, MIDI is still just a sequential monophonic stream (those chord notes get switched on one at a time, then switched off one at a time). MIDI doesn't really understand what 'notes' are, there is no way to represent note duration in MIDI, it only knows about note-on event, note-off event, and various other events representing control parameters...

    Handling a data stream like this is non-trivial, and really requires some sort of data structure processing - at least buffering of events, and sometimes sorting depending on the design requirements of the project. That's really quite difficult to do in Reaktor. Which is why most of the midi processing you need for making synths and samplers is done under the hood and presented in the form of note module, gate module etc. As soon as you need functionality that doesn't have a built in module, and you have to 'roll your own' using channel Message modules, it's gets much more difficult. It's definitely doable, but I would say it's intermediate to advanced level.

    Evidence to this is the fact that the N.I. factory Note-in Block shipped with a bug that causes notes to be dropped in some circumstances. I'm not sure if it's ever been fixed, it's not an easy thing to get right! (There is at least one alternative in the UL if you ever have trouble with the factory one)

    You might not need any of the tricky stuff anyway, it really depends on what you are trying to achieve with your project. What the intended feature set is etc. so just crack on with it!

  • Rob Gray
    Rob Gray Member Posts: 53 Member

    Thanks for this example! It's very clear now. None of that information was in the Reaktor 6 manual.

  • colB
    colB Member Posts: 747 Guru
    edited January 27

    For module level specs and technical information, tool tips have always been a good place to start. Modules usually have some basic info, and often individual I/O ports have separate info too. The manuals used to be hard copy, so there were space limitations. It would be somewhat wasteful to duplicate all of that tool tip text in the printed manuals. (I have nice glossy R5 hardcopy manuals :))

    R6 manuals always seemed less meaty compared to the R5 ones. I don't think Reaktor has the development resources for a complete rewrite of documentation these days. The old forum was an exceptional resource, but that was deleted, so... here we are!


    EDIT: to be fair, the introduction manual does mention "info hints" multiple times, and the building in primary manual also gives examples:

    and:

    ...I mean, c'mon, that last one is right at the start of the main module reference section, they start by telling you to use the info hints ;-)

Back To Top