I am a quite amateurish clarinetist myself but I always liked to experiment with my instrument. Within this project I managed to add two robotic fingers which push two of the side-keys of the clarinet. Those keys are traditionally used for trills and for multiphonics, but their usage distracts the right hand of the performer from its common position. By robotizing the side-keys, they can be opened and closed while the right hand is free to operate on the lower half of the clarinet. After building the whole thing I wrote a piece for Natalie Eriksson.
You can also find the track on Spotify, part of my CD "The Expanded Body".
Apart from that, motorized keys can provide extreme precision in time (allowing for polyrhythmic play with the two human hands) and extreme speeds, impossible for a human being to achieve.
I used Reaper.fm as a DAW environment. To the music score to be read by the clarinetist I synced a MIDI file (containing note events that control the solenoids) as well as the live electronic processes (filters, reverb and delays).
Two small solenoids are providing the pushing force. Since they need to be pointed above the side-keys, I have designed a mount that I printed in 3D: first in PLA, and then, after discovering that the heat caused by the solenoids actually was so high that the PLA started warping, I decided to go for a 3D printer (actually, a sinterer) which used nylon powder.
The mount is secured around the central joint of the clarinet with a small screw. This model was designed to fit a cheap 50β¬ clarinet, but then with some manual adjustments it proved to work well on a Buffet R13 clarinet.
In order to make the impact of the solenoids on the keys more soft, I 3D-printed some PLA caps into which the solenoids were screwed, and a "Bb key limiter", a small piece I added to avoid a sort of kickback happening on one of the automatized keys.
The circuit is really simple. Look at my former tutorial, "The sound compass", from which this project is derived. Here is the schematics:
Copy the following text and select "New from clipboard" under the file menu in Max in order to make the patch appear.
<pre><code>
----------begin_max5_patcher----------
1170.3oc2Z0zjahCD8r8uBJN6MEs9fO1a6gMG28Pxss1JE1VYBYAAEfmcRRk
+6KpEFy3XvxAIOaMWLExxz50utesZg+15U9aKeRz368qd+k2pUea8pU3PpAV
0e+J+hzm1km1fSyeWYQgP15uQ+cshmZwwemHWrq0qQTmkl6UUVOLksOrqLur
Vajf2jjDFDEyn.MhvYIaLdn.u+t+IJOTjIyEs3JBFsRrggfQFJaOhsxse9Wf
.+SVu7P6QyGzOZUZ6tOkIe3C0ctA8R.hIuIn6AxX3Edf5BAAh52780qUerwP
G+1CsskR+4bAiVtzgkaUZcZgnUT+AgLcatX7h94P43iQOT6WpDZb3uMU9f+f
S4BHkSiTXKLV8Ikd7yeJbNU.16+828dulxbgrLaeyqqfKR7MGbw6bv7MdL.i
sBBuiwVPz8L1JDv7Ff.VH3RJ92ND7CwV6E4oewivCtnKfbABi4aaXRvjGHNA
yjPXRH2E9j+BHU7+L5z1rImysGaNAJyKS2iKDSKIvsMJgDjKIQXnaXvhP4T5
9+4ae6qKwdJ61E6Ac1BiqurHw9Icz+wqL+L8l8yzfX64mKDMMoOH9A+LgXpr
DEtwL1YyVYQHpXDcdZhZ6C+zYqSBNikbSrI1nwgtGa.XL3hrJwoKY5XvYL13
Vk33f8v1DEJaD4cEm7htbrI8BPbBkC5rUJ2b5pIPtWjgm3h8Fb6Pl3RH2GA6
THePVkt6eLcyPjIjVISg2LUES8k4EhPxkn2+WDrHjNUtZj4prAVMYEzsYpwH
k3BZrtaII7Ldm6PxMxiFjd1iK.6uN9ElAgXGrG.Rb+F2cAC90buZwiFiuPGQ
fPLVRg5DwFkTiWf4gow1sl43yUjG5B.JKaEYlehP2XwiQholno1i2.DuLpSx
HqpyN0SzUCZY1jO6aildrIOmDvVKpDx8O6f4uJqRsJJi0Ro.RlQINgE2ZLCZ
0VqHc.gzUs.hhb3VzSMEbINf2rCzlb6p3aMZqWWq8CZperT19wzcmeJjyeFW
yWLQ8Hax9J9HUAfyKOcxsn9cxzB768+M0Z0+p6umGgA5gZsqjybX3i1OOSd9
aeCefpwetWro7P8tiqudN16zwdrWzzlISayJkiliJA1aJhxTCEahgBsfg3FX
HUi0ilTQ19pxN1p2GxYg52IBCuL5tgeQY8dAddSf6WqOaNCFNXQFlZhkUkmV
LcnN7oqZIaDfodUkW0P7K6LA2aYvjPN.BTWBgjg6rMySRtS7wY4XNzP76kgX
ljtlLGOGRiFIsPS3ijVV1ZSAPvv01xszU8BbaXIhAX5n9xxsjoEMVlk.S3Ih
KjoLxzpyIXzjrknyMDxLg.YntXLf+cEngAC2sPBALQO7rXdK4UPSe0XAaDea
FHCtL0urnNvnx.vrhl5xgLPqVFyFt6EYwdVY.aELDZxlHrg.NvtS0KA58xPv
8pKFSLTrkrCXfcfKzMXZU0ih5l9Iilnq64Oqe+3wavayj5awde8qEOlcb9Lb
jz5t1Qa65E8Psta0mB0mUkeQYW3t7PVexVG35LI1Ytpy1lp9NswF3W+80+Gv
p.bmN
-----------end_max5_patcher-----------
</code></pre>
You should see more or less something like this:
The a and b button on the left are used to select your serial port.
The middle section of the patch receives notes from any MIDI device or software (you can double-click the notein
object to select the appropriate port). Then it sorts the notes selecting notes 60 and 72 (C4 and C5), and understanding if they are note-ons (velocity > 0) or note-offs (velocity 0). The MIDI messages are translated into four values: 1, 2, 11 and 22. See the next paragraph to understand how Arduino will handle these values.
This means that to control the solenoids we can set up a MIDI file with C4 and C5 note messages; or we could use a MIDI keyboard to send live messages. The corresponding solenoids will be pushing for the exact duration of the note events.
The buttons on the right side of the Max patch are manual controls to test the solenoids.
Detail of the Arduino codeconst int sol1 = 4;
const int sol2 = 2;
These first two lines declare the variables used for the two solenoid pins.
void setup() {
Serial.begin(9600); // open a serial connection to your computer
pinMode(sol1, OUTPUT);
pinMode(sol2, OUTPUT);
digitalWrite(sol1, LOW);
digitalWrite(sol2, LOW);
}
In the setup
section the serial port is initialized. Pins 4 and 2 are set as outputs. A LOW
value is then written to the solenoid pins just to make sure that they start with no voltage.
void loop() {
if (Serial.available()) {
byte command = Serial.read();
Serial.print("command");
Serial.print("\t");
Serial.println(command);
For each loop iteration, the serial port delivers a byte called command, which we can see printed in the serial monitor.
Then the byte is tested against the four values: 1, 11, 2 and 22.
if (command == 1) {
digitalWrite(sol1, LOW);
}
if (command == 11) {
digitalWrite(sol1, HIGH);
}
if (command == 2) {
digitalWrite(sol2, LOW);
}
if (command == 22) {
digitalWrite(sol2, HIGH);
}
}
}
When the byte is 1 or 2, solenoid 1 or 2 respectively are deactivated. Conversely, when 11 and 22 are received, the corresponding solenoids are powered.
Comments