View Full Version : MonoNoteAU update...
Just a quick update to keep everyone informed. I've updated the hosting system for the MonoNote AudioUnit to include a stack, so we can have multiple presets in the AU. Later on there will be some sort of 'preset playlist' feature. And, before anyone asks: No, there will not be multiple modules for this plugin, just the MonoNote, and a simple AU hosting option. I'm doing just the MonoNote for now, other stuff will come later.... ;)
I have also implemented AU Preset support so you can save and load state. That code uses a new binary format for storing modules which will make it easy to implement module copy-n-paste and module presets for the pro version, so there is much work going on that is reusable.
However, I still have a day or so of updates left before I'm ready to send out a test build to the private testers list, so hang on...
Also, btw, I have also been working on stuff for the 2.2 build. Just a few more things to fix and I'll have a new build up shortly.
Cheers,
Jim
vanhaze
08-23-2009, 08:17 AM
Many thx for your note Jim , i can't wait !!
Per Boysen
08-24-2009, 03:27 AM
FYI, Hypercyclic is somewhat related: http://www.mucoder.net/hypercyclic/
john brennan
08-24-2009, 08:20 AM
Hi per
Just had a look at this seems very interesting . Just by loading one drum sequencer and the plug in and routing midi to battery and absynth 4 all manner of deviant sounds are created !! Good shout
FYI, Hypercyclic is somewhat related: http://www.mucoder.net/hypercyclic/
Note their instructions about using the AU version. You all have been contacting Apple/Ableton/MOTU about the "AU's that generate MIDI" issue, haven't you?
Best,
Jim
I think Apple has a big problem with MIDI output of AU because Logic is not designed for handling it. The basic problem is that tracks in Logic don't have an input port selector for receiving MIDI directly from an AU. In fact, Logic's sequencer knows nothing at all about input ports since the environment doesn't transmit port information. This means that proper handling of AU MIDI output in Logic would require a major redesign, including the environment. It seems unlikely that Apple will update the AU specs as long as the issues with Logic are not resolved.
I do expect that there are some internal technical issues along those lines, but all I really expect (and need) is for them to do is to treat MIDI coming from an AU just like MIDI coming from a virtual port created by any other piece of software, just with better latency performance. As far as the AU spec goes, it already supports plugins that generate MIDI, and has for several years. I'm certainly not going to hold my breath on this issue, but I do encourage everyone who wants to see this feature added to express their interest (at bugreport.apple.com), they do actually pay attention to postings on that system.
Jim
I do expect that there are some internal technical issues along those lines, but all I really expect (and need) is for them to do is to treat MIDI coming from an AU just like MIDI coming from a virtual port created by any other piece of software..
It's interesting that 'noatikl' from intermorphic works very well as AU plugin sending MIDI out over IAC. When recording the generated notes in Logic there is latency/jitter of only 2-3 msecs. Basically the same timing as standalone with MIDI clock. I guess it works well because noatikl is a pure MIDI processor, so the AU doesn't have to deal with coordination of MIDI and audio.
shamburglar
08-28-2009, 12:10 PM
Kind of OT. But it struck me as pretty comical that the MonoNote AU will show up as a Audio Unit inside Numerology. Mama and a baby.
vanhaze
08-28-2009, 05:19 PM
mate, can u tell something about how the midi timing is of the midi output from mononote au ??
Kind regards,
Rob
Right now the plugin uses the same algorithm I use in Numerology's ReWire driver to generate MIDI timestamps. These timestamps are 64-bit values that determine how accurately MIDI messages are timed when sent from one program to another, or from a program to a hardware driver. The algorithm is pretty good, but it currently has about 1ms of jitter.
I expect I can significantly reduce any jitter in that algorithm, so you'll get less of that when transmitting MIDI from the MonoNoteAU to a synth or MIDI track. However, we are all at a bit of a disadvantage. There is a spot in the render call to an AU that should include the base MIDI timestamp the plugin should use to generate MIDI. That value would allow AU plugins to generate sample-accurate MIDI without any problems, but none of the hosts I have tested (Logic, DP & Live) fill in that value, even though they all get it for free when rendering. Without that value, any AU plugin generating MIDI has to estimate it manually, not a trivial task.
I'll be revising the algorithm for generating timestamps over the next couple weeks, with an eye toward getting jitter extremely low (< 1920 ppqn at 120bpm). I'll report my findings once I have everything updated.
Cheers,
Jim
vanhaze
08-29-2009, 11:59 AM
Thank you Jim for informing us !
This afternoon i installed Mononote AU and fiddled around with it in Logic Pro 9.
(I have Snow Leopard also installed !).
These are my findings : (maybe i am stating nothing new with this :) )
- About every 10 seconds an audio overload message in Logic. (but you stated this will be solved).
- when starting PLAY in logic , the first 2 seconds or so , the midi timing is way off : the generated midi data is rushing way before the metronome.
But after these 2 seconds the midi timing becomes fairly good in sync with metronome, although i can hear it is not rocksolid : there is some jitter.
However , i find the jitter quite acceptable (way better than Eloquence !).
- I wanted to change the audio buffersize in logic (making it larger) to see if this influenced the jitter but it led to a crash from Logic : tried this several times and it looks like changing buffersize in logic when having mononote on an instrument track will make logic definitely crash.
In the end i noticed that a larger audio buffersize wasn't making the jitter better.
I then tried to cable the mononote output directly to an audio instrument in the environment.
I did this to see if this direct cable would improve the midi timing of the mididata from mononote.
This led instantly to a crash in Logic.
Hope this gives some useful info for you Jim !
Kind regards,
Rob
Thanks for the report -- but please send future ones to me via email, it is much easier for me to track them that way. (as with all bug reports)
The buffer-size-change crash is no surprise -- there's no code yet in the plugin to handle those changes.
Cheers,
Jim
vanhaze
08-29-2009, 03:08 PM
ok, will do !
As far as the AU spec goes, it already supports plugins that generate MIDI, and has for several years.
Are you sure? As far as I know, the only AU types dealing with MIDI are "aumu" (music instruments) and "aumf" (music effects). Both have MIDI input, but only audio output. What would be the type of a MIDI generating AU?
if you have the dev tools installed, look at
/System/Library/Frameworks/AudioUnit.framework/Headers/AudioUnitProperties.h
there are two properties:
kAudioUnitProperty_MIDIOutputCallbackInfo
kAudioUnitProperty_MIDIOutputCallback
That solution does seem to be a bit inconsistent with the way MIDI input is specified, but that's just how they did it...
Cheers,
Jim
Thanks Jim. Found it.
But it doesn't seem to be included in Apple's API documentation..
Thanks Jim. Found it.
But it doesn't seem to be included in Apple's API documentation..
As are several other items, such as correctly determining all possible I/O output formats for an AU. I find I need to read both the new doc (in XCode 3), the old doc (html, used to be installed with the AU SDK), and the header files, and then, sometimes, a general scouring of postings to the coreaudio-api list.
I recommend filing something at bugreporter.apple.com. While you're at it, you might consider adding items for no AU MIDI output support in either AU Lab or Logic.... ;)
Cheers,
Jim
Done. I've tried to point out the incompleteness of AU Lab.
atari5200
10-01-2009, 09:53 PM
I just started playing with the latest Mononote AU beta today and have really been enjoying it. I was wondering if you were planning on implementing a feature to allow MIDI sliders to be mapped to the various fader controls within the GUI? It would be awesome to be able to use it like a hardware sequencer in which a pattern would just be running and you would be able to change the gate, pitch, velocity, etc values by hand using sliders on your MIDI controller. I don't know anything about coding, so I have no idea if that is an unnecessarily difficult thing. It's certainly not a dealbreaker not to have that feature, it's still an amazing plug-in, but it seems like that could be a useful function.
Cheers,
Nathan
Yes, I do plan to add MIDI learn. I will also add some automatic mapping of MIDI program change messages to the presets, to make it easy to sequence them from the host.
Cheers,
Jim
atari5200
10-02-2009, 08:55 PM
Very cool Jim, thanks for the reply. I'm a long time Numerology user and it's great to see the same unique functionality moving in this direction.
Logos Lover
11-13-2009, 04:40 PM
Quick question...
will the mononote AU be capable of sequencing hardware synths which I have set up in Logic Pro?
If possible how will it work? In the same way as Logic's "external instrument" plug in for using hardware synths on a software track? (ie external instrument plug lets you set which midi port, and return out from your audio interface to use from within the plug-in)
Quick question...
will the mononote AU be capable of sequencing hardware synths which I have set up in Logic Pro?
If possible how will it work? In the same way as Logic's "external instrument" plug in for using hardware synths on a software track? (ie external instrument plug lets you set which midi port, and return out from your audio interface to use from within the plug-in)
It will definitely work, you can route MIDI directly from the MonoNote to the hardware synth (or any other MIDI output)
Cheers,
Jim
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.