Web Musebots.
We have been working on moving the musebots to the web!
Using WebRTC, we have the possibility of an online beat generating WebConductor (one function of the old Conductor) and individual SubConductors on separate machines that act as message servers (the other function of the old Conductor).
At the moment, only one WebConductor can run at a time, and one SubConductor must run on each computer to receive the WebConductor's timing information.
In order to translate the WebRTC messages into musebot messages, and retain standard OSC musebots, we have developed a TunnelingServer to do this. The TunnelingServer is a terminal application that needs to run on each computer.
Lastly, we have developed some Javascript musebots that run online. At the moment, they are using node.js to communicate with one another and their own Conductor; we will incorporate them into the system by August 1.
Tested successfully using Google Chrome, on both Mac and Windows.
Thanks to Jim Andrews, Peter Courtemanche, and Matthew Horrigan.
Using WebRTC, we have the possibility of an online beat generating WebConductor (one function of the old Conductor) and individual SubConductors on separate machines that act as message servers (the other function of the old Conductor).
At the moment, only one WebConductor can run at a time, and one SubConductor must run on each computer to receive the WebConductor's timing information.
In order to translate the WebRTC messages into musebot messages, and retain standard OSC musebots, we have developed a TunnelingServer to do this. The TunnelingServer is a terminal application that needs to run on each computer.
Lastly, we have developed some Javascript musebots that run online. At the moment, they are using node.js to communicate with one another and their own Conductor; we will incorporate them into the system by August 1.
Tested successfully using Google Chrome, on both Mac and Windows.
Thanks to Jim Andrews, Peter Courtemanche, and Matthew Horrigan.
-
WebRTC
-
node.js
-
Musebots for Web
<
>
Running the WebRTC system
- Download the Tunneling Server here, then run the program;
- On Mac, run 2018_MuseTunnel; on Windows, run musetunnel.exe;
- In Chrome, clear browsing data
- Chrome > Clear Browsing Data… > Cached Images and Files;
- In Chrome, go to Settings > Advanced. Turn off “Protect you and your device from dangerous sites” and “Automatically send some system information and page content to Google to help detect dangerous apps and sites”.
- Chrome auto-turns the first of these settings back on, periodically. So turn it off each time you use the Musebot system;
- The Tunneling Server sends Chrome messages in the form of scripts. Unfortunately, Chrome is in the habit of scanning such scripts for malware, which takes time. So the first step is to stop Chrome from scanning those messages for malware.
- Launch the SubConductor (http://vispo.com/musebots/app1/subconductor.htm).
- Enter a unique user name, then click "Connect";
- Launch (only one computer can do this) the WebConductor (http://vispo.com/musebots/app1/webconductor.htm).
- Click "Start WebConductor",
- Enter BPM (i.e. 108), click “Set BPM”,
- Enter Time Sig Number (i.e. 4), click “Set time sig numerator”;
- Enter Time Sig Denominator (i.e. 4), click "Set time sig denominator";
- Timing code should now be heard as clicks;
- Launch one or more standalone Musebots, found here;
- In SubConductor tab, select port numbers (i.e. 7000, 7001, etc.) that musebots are listening to.
- Example musebots all have "hard-wired" ports that are visible when they are launched.
- Musebots should receive timing code from the WebConductor, routed through the SubConductor and the Tunnelling Server.
- The WebConductor can be paused by clicking "Click to turn off";
- Conductor's click volume can be controlled in the SubConductor by adjusting "Beep Volume";
- The SubConductor can stop sending messages to local musebots by clicking "Stop passing timecode to Musebots";
- Network latency can be adjusted by delaying the Conductor's timecode in the individual SubConductors. Best practices would be to delay every SubConductor to match the computer with the highest latency.
Using the javascript WebBots (when someone else is running the node.js server)
Note that only needs to be done if you intend to run the node server; only one computer on the network needs to do this.
As shown in the Terminal window when launching the node server, it is possible to communicate with the web.bots
- Download the web musebots here
- Open a new page on your browser, and enter the IP of the server, followed by :3000/ This IP will be available once the person running the server double clicks the run.command (see below).
- for example, 192.168.1.5:3000/
- for example, 192.168.1.5:3000/
- You can run as many versions of the javascript web.bots as you like: they remain independent.
Note that only needs to be done if you intend to run the node server; only one computer on the network needs to do this.
- Install node.js on your computer. Currently, we have only tested and run this on a Mac...
- Find it here: https://nodejs.org/en/download/
- Restart your computer after the installation
- Check if it installed by opening the Terminal, and typing "node -v"
- Try running the javascript to see which dependencies are missing
- Double click the run.command file
- Make a note of the missing dependency, and find it here:
- Node Package manager, https://www.npmjs.com/
- For example, if you are missing express, the webpage will instruct you to type "npm install express" in the Terminal
- Double clicking on the run.command will inform you, in the Terminal, of which musebots are available:
- "Serving these bots:: DownbeatBOT.html, DrumBOT.html, HarmonyBOT.html, SynthBOT.html"
- An IP address will be displayed in the Terminal that can be command-double-clicked; do this to launch a start page.
- At least one person on the network needs to run the DownbeatBOT.
As shown in the Terminal window when launching the node server, it is possible to communicate with the web.bots
- port 33334 sends messages to them
- port 33333 receives messages from them
Musebots that interact with the Web
We have provided some musebots that can run on your local machine and can either be controlled from a TimeCodeBot on your machine, or the WebRTC Conductor and SubConductor.
Musebots as standalone applications can be found here.
How to use these musebots
PercBot, ModalChordBot, NoodleBot
We have provided some musebots that can run on your local machine and can either be controlled from a TimeCodeBot on your machine, or the WebRTC Conductor and SubConductor.
Musebots as standalone applications can be found here.
How to use these musebots
PercBot, ModalChordBot, NoodleBot
- These are standalone applications for Mac or Windows.
- They receives on specific ports (7001, 7007, 7010 respectively, as shown in their panes). Set these radioboxes in the SubConductor.
- They will name themselves after the name entered into the SubConductor: i.e. "arne-PercBot"
- Turn them on by clicking the toggle-box in the top left hand corner which displays its name.
- Incoming messages (i.e. from the SubConductor or TimeCodeBot) will be displayed in italics.
- The default output for PercBot and NoodleBot is to the internal General MIDI synth on channels 10 and 1, respectively. You can send the MIDI to an external sequencer or VST by selecting a MIDI destination in the menu object within the musebot.
- ModalChordBot only generates a harmonic progression, and doesn't generate any audio.. Generate a new progression by clicking on the "new progression" button; its messages should appear in NoodleBot under "chordscale".
- NoodleBot and PercBot have density parameters, which determine how active they are in their generated material. You can make these sliders independent by selecting their own names, or you can have these controlled by another musebot sending these parameters by selecting another musebot's name. Feedback is avoided by only sending the values every few seconds, so it will take a few seconds before the values actually change after you follow another musebot's density.
- These are two example musebots created in Pd.
- They receive on specific ports (7004 and 7003 respectively, as shown in their patches). Set these radioboxes in the SubConductor.
- Note that these patches require PD to run; both can be open at the same time.
- PD-W-drummer_bot will play using the included samples; PD-W-bass_bot will send out MIDI note messages out of PD. Set the output in Pd's preferences.
- This musebot is only needed if not using the WebRTC Conductor and SubConductor, it combines these two modules into one musebot.
- Select a time signature and tempo, and select which ports to send timing information.
- This musebot can be used as a separate SubConductor - i.e. only transmitting messages and timecode, but not downbeats - by opening it, and not clicking the Play button. This will generate timecode based upon downbeat messages received from a TimeCodeBot on another machine on the network.
- The TimeCodeBot can also control the javascript web.bots running via the node.js server. Simply change the second menu from "Musebots only" to "+Web.Bots".