Instrument Maker is a collection of open source resources for digital instrument building with sensors, featuring a library for running Pure Data on embedded computers such as Bela or Raspberry Pi + Arduino.
Instrument Maker is a tool for rapidly creating what is often described as accessible music technology (AMT), by using established programming languages and affordable hardware to create standalone instruments. Its parameters have been chosen to reflect the options usually requested in music workshop settings:
Instrument Maker was conceived as a complete workshop package including hardware. The main resource is a library of objects for Pure Data that can be used independently.
Having downloaded the library, create and connect building blocks in the form of obects with the im.
prefix: e.g. inputs, outputs, tuning systems, processors, and synthesisers.
Upload this code to Bela, or use a Raspberry Pi or laptop with an Arduino-type device connected.
This is for our current demo setup for desktops/RPi. Deken release coming soon!
We recommend using Patchbox OS for Raspberry Pi installations - once installed, follow the instructions below.
Download the latest release here, decompress somewhere in your user folder and follow the instructions for installation. https://github.com/matthewscharles/instrument-maker/releases
This has been the preferred option for collaborators, but realistically requires some knowledge of Git and/or terminal.
Download GitHub Desktop and clone: https://github.com/matthewscharles/instrument-maker
Install Pure Data Vanilla: http://msp.ucsd.edu/software.html (sorry, no Purr Data support yet).
Copy the im
folder to the existing search path in Pure Data (usually within your user/Library folder), load Pure Data.
Add the folder to the preferences.
Find a list of objects by opening _im-object-overview.pd
from the main folder
Right-click on the objects found here to open help files. This is a convention from Pure Data and similar languages - most help files contain editable examples!
This should be plug and play: use the im.keypress and im.makeymakey objects to experiment!
Use a Bare Conductive Touch Board set to generic_midi_controller. This will connect to im.electrode and im.tb
Set your MIDI controller to CC 0-7 on channel 1. This should work with im.sensor in the same way as our custom boards.
We have developed hardware and web interfaces, but in the interest of some solid testing, our attention is on the core software library using PD for now.
As we begin revisiting the web elements we also hope to start re-engaging with screen reader access and other often overlooked interfaces in this field..but we are not attempting to deliver a blanket solution by any means.
Distributed under the terms of the GNU Public license version 3.
Through this framework, we hope to ensure more people have direct access to the act of coding and customisation. This is a tool made by and for our community, and we look forward to opening it up to a more inclusive approach.
All too often in instrument development settings such as hackathons, it is assumed that the setup of a new instrument will be the domain of a specialist separate from a musician as an end user. This can maintain a divide between specialists without lived experience of disability creating resources for disabled people. We need more collaborative spaces.
The project was established by Charles Matthews, Gift Tshuma, and Roybn Steward, starting from Gift's question: "can you give me a Pure Data demo lasting one minute, if it's supposted to be such an accessible way into building instruments?"
Follow our collective project Blurring the Boundaries for news of future events.
This is not an attempt to make the process easier in a way that detracts from artistic integrity, nor is it an attempt to force independence! Rather, our intention is to establish options for more people to engage with the creation of music technology from more accessible starting points. Access is different for everyone, but the barriers that we can remove often overlap.
Read more about the philosophy behind this framework on the Bela.io blog.
Throughout this site you will encounter graphics playing on the classic "AAC" aesthetic often found in classrooms..find out more about this project here: Instrument Maker Communication Symbols
Our focus has so far on a separation between graphical interface and interactions - there are no on-screen objects that act as sliders or buttons, as we encourage users to work toward physical outcomes. Of course, this decision in itself represents more access barriers, but we're working back toward something a bit more integrated.
Instrument Maker objects are named through something we feel is a bit closer to conversational "plain English", or rather the kind of language we might expect to use in a workshop setting with non-specialists. That's not to say there is anything wrong with the abbreviations found in Pure Data and similar language, we're just trying to cut down on explanations for that initial experience.
Pure Data code relies on a user placing arguments immediately after an object name, in a particular order. Our latest updates introduce the idea of non-case-sensitive parameters that can be placed in any order. We are also introducing more conventional units such as Hz, ms, and note names.
All Instrument Maker objects run at audio rate, and we have deliberately omitted the tilde (~) usually used to distinguish this process. However, for people running later versions of Pd, many objects will accept "control"-style messages.
We wanted to avoid obscure names that might clash with existing Pd objects.
By installing the IM folder within Pd's built-in search path, it's still possible to create im/sensor
etc. with a slash instead of a dot.