As an added note to my previous comments, I really like the app interface that mpd uses. Writing ascii events using some spec or another to a file descriptor (socket in mpd's case) seems to be a terrific way to communicated with apps and libs. I run the svn pksampler like this:
pksampler | pkaudiod I could just as easily have either use a socket or some other pipe, and this is easy to debug, script, profile, etc. On the client and server sides, I wrap my 10-minute rpc into an interface with generic calls. Everything having to do with input (MIDI, OSC, whatever) happens in the app code. The interface functions resemble those of FMODEx's interface; add sample, connect to channel, set sample attrs, etc. As an interface designer, the first thing I look for on an engine's project site is some sort of asynchronous API - I should never concern myself with anything outside referencing the api from my app's one windowing thread. FMOD, gstreamer, and my dead pkaudio project do this very well. I don't ever want to worry about what thread it happens in, what threads it will affect, or what the performance effects of *making* the call will be (as opposed to residual effects). This is why I like $ interface | engine > engine.log On 4/7/06, Dmitry Baikov <[EMAIL PROTECTED]> wrote: > On 4/7/06, Patrick Stinson <[EMAIL PROTECTED]> wrote: > > What are you working on, if I may pry? > > In short, smth like Ableton Live, but with support for several tempos > and subclips (i.e. clips with complex structure, not just looped > wav/midi piece). > Can't call it "working" since I have only few hacks and smth like > design-document. > -- Patrick Kidd Stinson http://www.patrickkidd.com/ http://pkaudio.sourceforge.net/ http://pksampler.sourceforge.net/
