Hi all,
So I'm writing some LV2 plugins to wrap up the Aubio audio analysis
library<http://aubio.org/>g/>,
and I'm not sure exactly how to handle functions like "onset" detection.
Currently, it just outputs clicks to an audio port (0 when no beat, 1 when
beat is detected). However, this doesn't take advantage of the power of
LV2. It is unclear to hosts and other plugins exactly what sort of data is
coming out.
I was thinking that maybe it would output MIDI, as midi matches the "event
based" aspect of beat detection. Perhaps sending out MIDI beat clock
signals <http://en.wikipedia.org/wiki/MIDI_beat_clock>? However, that
doesn't really match the sort of data that the Aubio functions detect. Maybe
it could just send a midi note on event?
It seems like maybe some sort of LV2 specific extension might be in order?
The Event Port <http://lv2plug.in/ns/ext/event/#EventPort> extension seems
to define everything I need: sending timestamped events with no extra
information attached. The question is: does it require some sort of further
extension to define what a beat port is in the way the MidiEvent extension
does?
Of course, this raises the question: Is a port specific for "beats" even
necessary? I can think of a few cases:
- DAW uses beat signals to set up markers on a track
- DAW uses beat signals to break a percussive track up into beats.
- Delay effect uses beat signals to have a timed delay
- Automatic drummer adds on a percussion part to audio with varying tempo
- ? other beat-synchronous effects?
Anyway, I'm wondering what you all think would be the best option, or
whether you think functionality like this is even warranted in an LV2 plugin
(should analysis plugins stick to VAMP?). So let me know what you think.
Jeremy Salwen