I’m a life-long Csound newbie. Maybe this’ll be the case that finally convinces me to learn something.
I have a room where I’d like to play sound from a single source, over two output channels (say, “left and right”, but maybe more eventually); to coordinate two executions, I only have WiFi; no wired network, and there isn’t the right space for cabling a single source across two parts of the room.
So, I thought: why not have two mini machines (a pair of Raspberry Pi’s, for instance), closely linked in time by NTP, with one doing the right channel, the other doing the left? There are science projects doing things like this, where time syncing is more sensitive that sound, so…?
My first guess for an app to handle this was MPD:
…but I’ve been told that MPD isn’t that sort of a tool, it’s more like the delivery system of the files, not the execution of them. I think.
And, I can’t find any playback apps that do something like this either – like, where “instance A” just happens to have its left channel turned down, “instance B” happens to have the right channel turned down, and the two are set to run sound closely timed, according to some common set of files.
So! Hi! I’m a proud owner of The Book, but there it sits. I know that if you want some kind of sound to happen, Csound can do it, in a variety of circumstances, but, um, how?
My ideal would be something like:
-
there’s a source of sound files stored on the network, reachable on a shared filesystem; ← this is done
-
we have a set of PC’s (Pi, laptops, whatever) running Csound; ← this is done
-
…they each have at least one speaker attached; ← yeah, yeah…
-
there’s a source of commands, something like:
‘play [file] over [channel] at [time]’
…where “time” is a constantly changing, agreed-upon number, from NTP;
…“file” refers to one shared over some common source;
…and “channel” is set set up however;
- then, there’s some simple user interface (web page, app, whatever) that can act as a jukebox: choose the file from some list; start/stop, louder, softer, pause… like Amberol, Ario, Rhythmbox, Snapcast, whatever, but with Csound providing the active layer.
I know (right?) that Csound contains all the libraries for handling something like this, but I don’t have a clue how I would use it to set this sort of thing up. So, cluse? Tell me what I should read? I can’t be the first person who’s had this idea. Successfully I mean.
Thanks.
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here