Music band spree client and engine
I have been reading through spree code and wondering what engines I could write to learn more about this type of filesystem. Here is one idea that incorporates signalfs.
The aim is to create a distributed electronic music band. Each player is a client to spree and can create instrument objects and play notes on these instruments. The other players will have the instruments and sounds replicated locally by their spree client; and similarly instruments and notes they play are heard by the other musicians. Each spree client runs a separate signalfs but with a common set of signal modules.
The spree action commands will be SKINI with extra commands for creating and configuring the instruments. The spree engine manages the shared configuration of instruments. Note events are broadcast to all players. The spree client is therefore a type of sequencer, using timing and note events from the engine to trigger reading sound from the signalfs and writing to /dev/audio
Using OpenAL, or implementing it in signalfs, each instrument and player is placed in 3D space. The engine manages the positioning of objects, which now includes listeners, and each player hears the sound relative to their position in the virtual room. This requires a surround sound speaker system.
If this is implemented successfully it not be too difficult to generalize. Surely if we get the synchronization working for audio we could do the same for visual object simulations.
These ideas are influenced by my recent reading about Croquet. I'd like to see the implementation of the TeaTime protocol. The time synchronization seems the most challenging aspect of this idea.