Tuesday, February 28, 2012

Teaser II (?): Improved MIDI output Codec demo...

uh... well... users kept asking me if this'n'that was possible, so, while explaining how to do it I ended up adding stuff to the Codec, namely, it even sends MIDI Program Change now :]

Here I'm showing the larger note range: 104 notes now, from C-1 to G7 through the use of 4 Codec instances, each controlling 32 note segments, like shown at the end of the video.

These technical demos are always a bit boring, I know, especially non-voiced over ones (and with lame note/chord sequences ;), but I'm in a noisy room at the moment so... I preferred doing yet another "silent" video with just the synths output being recorded. Sorry :)

oh, and I keep using VSTi's just because it's easier to capture everything on screen, but any external hardware device could be the target of the MIDI output. Then you can simply record its audio into a Reason audi track, et voila'!

6 comments:

  1. This is great-n-all, but I can't see where you've made this available to your readers... maybe I missed that.

    ReplyDelete
  2. Hi meowsqueak :)

    I see you're as excited about this as I am about releasing Version 0 of it ;) (well, V.0.1)

    But seriously, there's still some stuff I want to try to add, now that I had the trouble to come this far, this is why there's still no public release, yet.

    I forgot to add channel-aftertouch support (oops) which is quite easy to add (that's for V.0.2) and I'm even interested to see if MIDI Clock sync out is possible (not sure about that, but, I can always try, can't I?)

    After that, I'll be doing some tests and maybe I'll release it, if Reason 7 doesn't show up all of a sudden with MIDI out properly implemented ;)

    Honestly, even though this works, I'm not that proud of how clumsy it is to set it up :/ ...you need at least 4 virtual MIDI ports being merged into another virtual or physical MIDI port. Then, this version of the Codec has MIDI Channel 1 hardcoded, so everything's being sent out as Ch1.

    So, while testing, I'll be also thinking of a more clever way to at least use other MIDI Channels, besides the obvious source-code change by the user or presenting this as 16 sets of 4 Codecs... quite a brute-force solution to this, right?

    Anyway... no hurry, I think, since noone's paying for this, so, it'll be ready when it's ready :)

    ReplyDelete
  3. Cool - if you need any help testing on OSX, or want someone to test your instructions, you know where to find me :)

    Otherwise, I'll be watching with great interest - good luck!

    ReplyDelete
    Replies
    1. Thanks meowsqueak! :)

      btw, I just implemented a very elegant solution (well, IMHO ^^) for dynamic selection of the MIDI Channel, so that's the end of the temporary hard-coded Channel 1 I was using initially (for convenience).

      I'm very happy with how it's working :D

      Now, all that's left, I think, is to see if MIDI beat clock can be implemented in a usable way (as in, not drift too much).

      Delete
  4. hey man! oddly enough I'm working in almost the same thing you are.. Got a remote codec, a special patch that does midi to CV and a little c++ app that converts this to midi... My day job makes development REALLY slow...

    Odd thing i got full midi note range with only one codec... anyway contact me if you're interested in any help...

    ReplyDelete
  5. Hey Jed, thanks for your comment!

    I just realized that my initial reply to your comment vanished and was never posted (darn Blogger! ...or maybe darn my internetz!) anyway, I think I recall saying at the time that, maybe you got full midi note range because you were doing a monophonic stream of any note (thus covering the full range, one note at a time) ?

    I had to use that 4 device trick to be able to implement polyphony through the Remote Codec, using the lightest process possible, to add the least latency to the process... but still, Remote isn't "fast" (i.e. time accurate) enough for this to be a generic solution to everyone, even though it works and it's usable, depending on what we're trying to achieve :)

    ReplyDelete