Digital instruments allow us to do things that were not possible with purely acoustic instruments. For example musicians can share data between instruments in real-time, in effect creating distributed multi-musician super-instruments. Musicians such as The Hub have been doing this since at least the 1970s. Contemporary digital musicians often write their own software instruments to re-create these functionalities.
Bf-pd is a library built in PureData (Pd) which enables communication and cooperation between digital instruments. Bf-pd can be integrated into any instrument built in Pd. It provides a collaboration window from which musicians can view each others’ activity and share control of instrument parameters and other musical data.
The design of bf-pd is based on the BOEUF conceptual framework which consists of a classification of modes of collaboration used in collective music performance, and a set of components which affords them. More details on the BOEUF conceptual framework can be found on this page.
Starting from an existing instrument made in PureData :
Parameters correspond to controls you have over your instrument and that you want to share with others.
Outputs have the same properties but correspond to musical content produced by your instruments (notes, onsets, envelopes …). They can be used to control others parameters. Three default outputs are automatically created by bf-pd and extracted from the audio you send to bf-instrument : pitch, onsets, loudness.
Parameters and outputs have the same arguments :
The collaboration window is a collaboration interface that comes with bf-pd and provides a way to connect your instrument with other instruments in the session.
To open the collaboration window, simply check the collab toggle in the bf-instrument object.
The leftmost green column shows your instrument with its outputs and parameters. The grey columns show the other instruments in the session with their respective activity, outputs and parameters.
By default, all your parameters are in the granted mode, which means that all the other musicians can change your parameter values. You can of course change this by clicking the red grant toggle for each parameter, or the grant all toggle at the top of your column. When your parameter is not granted, values asked by others are only displayed on the gray widgets. You can accept their ask by using the 1x bang.
A watch bus selector is placed below each parameter and output of the other instruments. By choosing a bus other than 0, the values are sent to the corresponding bus and can be sent to your parameters connected to the same bus using the watching selector.
Symmetrically, you can control others parameters by choosing a non-zero bus on the ask selector and the same asking bus below one of your outputs or parameters. This requires however that the parameter that you want to controlled is granted (i.e. that the green granted toggle is checked).
You can also ask another instrument’s parameter to be set to a specific value by interacting with the white sliders/toggles/bangs. It the access is granted, the value will be directly set.
Video demoing the collab window for bf-pd.
Documentation for each of the user objects in bf-pd can be found in objects.md and on help patches directly in PureData (right-click an object -> Help)
The BOEUF conceptual framework describes the modes of collaboration used in musical collaboration and describes a set of components for realizing these modes in a software framework. Bf-pd is based on this framework. More info can be found in boeuf.md.