NodeBeat is an experimental node-based audio sequencer and generative music application for the multitouch tables (through TUIO), iPhone, iPod Touch and iPad.
By combining music and playful exploration, NodeBeat allows anyone to create an exciting variety of rhythmic sequences and ambient melodies in a fun and intuitive fashion.
This app is really a tribute to the power of openFrameworks. I wouldn’t of had the courage to dive into iOS without the framework and the communitie’s help along the way.
[b]You can get try the desktop version (flash) or get the iOS version at
NodeBeat is an experimental node-based audio sequencer and generative music application for the iPhone, iPod Touch and iPad and iPod Touch.
Generators (Octaves/Drums) and Notes make up the two types of nodes. Generators pulse and send messages to Notes within proximity.
It’s made with openFrameworks and libpd for audio using the ofxPD addon (https://github.com/danomatika/ofxPd).
Wow. nice one Seth. Thats truly excellent!! Very cool.
If anyone would like a promo code (for ipad or iphone) let me know. I’d be happy to share.
Hey - looks very cool!
A question: how are you handling the timing? I’m also building a sequencer and NSTimer doesn’t seem up to the task.
The main timing is actually being handled in PureData since I’m using ofxPD. I have a [metro] object which is basically a metronome with precise timing. Openframeworks sends a list of notes to play and the metronome quantize it so things line up in time. So, unfortunately I’m not sure I’ll be much help in that regard since I’m not using objective-c. Have you tried doing a timer just in c++? I do use ofxTimer for some of the pulsing, but it’s not meant to be 100% accurate since the main metronome is controlling timing.
Hey - thanks for the quick reply.
I’m using the Bass MIDI lib right now (not in oF because I needed soundfonts/synth) but afaik it doesn’t have a clock/timer (or I haven’t figured out where it is). I will take a look at PD. I’m asking around because I’m just barely functional in C++/ObjC and don’t want to invent any more square wheels…
Yeah I hear you. I imagine a self-correcting type timer would work. Meaning, you get the time difference between the last frame and current and make adjustments based on that. I’m not too familiar with doing that myself either though, but if you look up code for timers on google there’s a lot of information I’ve seen for trying to get a more precise clock. Definitely let me know how it goes though because i’d be interested if you come up with anything; if I think of anything else i’ll let you know.
BTW, do you have a link to Bass MIDI lib? Is it something that can run soundfonts on iOS/android? I was searching for something like that.
Bass is here: http://www.un4seen.com/
It works great on iOS. Don’t know @ Android. Bass can play both midi files (local and from URL) and dynamic midi events and do a whole bunch of other audio stuff. It also now handles Midi in on iOS 4.3+ but I haven’t tested that yet.
It’s C and I’m using it with ObjC - wouldn’t know how to go about wrapping it in oF. Not too hard to get working. Be aware of the difference between ‘BASS_MIDI_StreamEvent’ and ‘BASS_MIDI_StreamEvents’ - the former is for sending single midi events and does NOT trigger sync callback functions. Lost an evening sorting that one out… It’s in the docs but I missed it.
Thanks for the info. Unfortunately, their licensing costs are way too much for me. So I doubt i’ll even try it. I think the reactable mobile is using FluidSynth http://sourceforge.net/apps/trac/fluidsynth/ for some stuff, but not positive what the legality of that is since it’s LGPL. However, looks like they got away with it fine.
Thanks for the info. Unfortunately, their licensing costs are way too much for me. So I doubt i’ll even try it. I think the reactable mobile is using FluidSynth (forum won’t let me post the link) for some stuff, but not positive what the legality of that is since it’s LGPL. However, looks like they got away with it fine.
Yeah - I’m using it for a prototype for a client so it’s part of their investment. I did look at a bunch of other open source/shareware libs - Fluid, Timidity, FMOD, Crimson but either I couldn’t get them working on iSO, the licensing or feature set didn’t compare to Bass, or there was the GPL/LGPL question. Seems like that is a murky area - if one of the devs files a complaint (like with the VLC media player) then Apple will pull it.
Yeah, I’m curious about contacting Fluid to see what their policy is. Reactable is pretty prominent and in the opensource scene, so I imagine if they’re using it - they would of checked with them. I’ll definitely look into Bass in the future, but since I’m an independent developer who really just does it on the side, I can’t really justify the license cost (which rules out both FMOD and Bass for personal work).
I hadn’t heard of Timidity (but I guess that’s ruled out since it’s GPL) and I was looking at Crimson earlier, but they don’t specify the costs anywhere. I might inquire just to get an idea.
Bass was the least expensive of the commercial ones I looked at - plus it has an absurdly huge feature set - but I get it: a lot of apps to sell just to recoup costs. There may be other libs out there - but I spent way too much time googling around.
fwiw - there is mobileSynth http://code.google.com/p/mobilesynth/ I needed more than that for this client project but it is very lightweight and easy to tinker with - depends what you are wanting to do. For my personal project I need to make a sequencer of sorts so I’m back to the timing/clock question…
nice, nice, nice and nice and great…
Thanks Dudley. I also merged the topic with another one I had, so now the newer video is up top.
Thanks for the information skinnyTOD. I guess I lead us off topic a bit. I actually don’t need MIDI playback for anything in particular. I was just considering that it could be a nice option to be able to load soundfonts (since there’s so many options for those) in the future rather than using samples or having to create synthesized sounds like I do in NodeBeat. So it’s not really essential for me - more just I was curious about using as a time saver. There used to be a PureData object for using Fluid which would be the most ideal for me since then it would load soundfonts, but also have all the aspects that PD does (real-time dsp, effects, recording, etc, etc).