stephenc29

Documentation and tutorials

This project is maintained by stephenc29

Full Collaboration

You will now split into pairs/groups to start the collaborative part of this music session. Choose one person to act as the master; this person will drive the beat tempo.

Clock synchronisation for collaboration

Collaboration has one main problem: clock synchronisation. The beats are scheduled based on the system clocks so these must be synchronised so beats occur at the same time. A master must be chosen to synchronise the clocks, but also synchronise the values for bpm and latency, mentioned in previous sections.

Berkeley nodes

Berkely nodes are to be put on a different flow and are needed due to the clock synchronisation problem mentioned above. One user will run a berkeley-master node and all other users in the same group will run berkeley-slave nodes.

Berkeley node on separate flow

Deployment mode

Change the deployment mode to “flow”. In this mode, only flows that are changed are re-deployed. This stops the Berkeley nodes being re-deployed which would ruin the synchronisation.

Pair examples

If you are the master in your group, go to import -> Library -> synchronisation -> masterBeatGenerator. If you are not the master in your group, go to import -> Library -> synchronisation -> slaveBeatGenerator. Both are these are very similar to the beat example shown earlier in this tutorial, but with the added difference of modified inject nodes and a beat-combined node.

Beat-combined

The beat-combined node allows one person to be a master and multiple others to be slaves to that master. The master drives the tempo, the latency and also chooses a band name (this is used when saving performances -> mentioned below)

Modified inject nodes

These act like normal inject nodes but save the instructions generated in the group given by the band name in the master’s node.

Finding IP addresses

Open a command line terminal and type “hostname -I” to discover your IP address. If you are the master in your group, tell the other members your IP address. If you are not the master in your group, type this IP into the berkeley-slave node and the beat-combined node.

Recording the performance

The performance you create in your band will be recorded in a Version Control System (Git) using the band group name chosen by the master so it is important that this is unique.

If you want to make multiple performances with the same group, I recommend including a performance name in the name of the band, e.g “Group name - performance 1”.

Starting the performance

Start node-red servers by typing “node-red” in the terminal. Change the deployment mode to “flow”. The master in each group must deploy first (this is so the slave’s know what their band group name is and can save their performance in the correct group).

Ending the performance

Saving the actions involved in a performance can sometimes take some time, so please do not exit the node-red server immediately after finishing; wait 1 minute and then exit.