Shekeré is a recent piece and yet some of the technologies used for its original version are now obsolete. The following patch is designed to work with multiple midi and keyboard devices and you should contact me if it isn’t clear how to support your device.
Here are a few instructions on running the patch which you can download here. Open the “main.pd” file with Pure Data and follow the following steps:
1) Click on keyboard on/off toggle switch to activate keyboard control, or alternatively on Midi. Be sure to configure your midi pedalboard.
2) On the keyboard, Use spacebar to move forward, the “b” key to move back in the sound groups. The “l” key to activate and deactivate loops. If using midi, configure your patch to output noteon as 100, and pedals 1 through 9 to output notes 0 through 8. note 9 turns looping on and off.
3) Make sure your input level for the mic and the output level are ok. Attacks of different intensities trigger different sounds, loops stop when you change sound group or stop the loop.
4) Test that you don’t have any feedback from the speaker into your mic by activating a sample without looping. If your computer keeps outputing samples without you playing anything on the shekere, then you either need to lower your gain or place mics and speakers in a different configuration.
5) The intensity of your attacks triggers different samples. The limits for the range of activation are controlled by lims 1 through 5. Nothing happens below lim1, the first sample is triggered by attacks between lims 1 and 2, and so on. Tune these lims to your playing and save the configuration with the save button. an intensity measure is provided as a reference.
6) Be sure you have sound configured correctly. The patch is sending 4 channels out by default, 1 and 2 are a front stereo image and 3 and 4 are a back stereo image (traditional quad). Click on stereo if you’d like to rehearse with two speakers.
This is a very simple patch. Essentially each microphone is sent through a ring modulator and then to an output. There are five cues. You can move through each of these cues with the spacebar. Cue 1 happens at bar 1, cue 2 @ bar 42, cue 3 @ bar 61, cue 4 @ bar 81, and cue 5 @ bar 89. Lastra Fa goes to [adc~ 1], Lastra Mi to [adc~ 2], and Lastra Do# to [adc~ 3].
pd2ly is pure data to lilypond or pitch-duration to lilypond. It is in a very early and experimental version although it is currently working consistently.
For it to work, you must give it:
1. A valid full path (no relative paths I think) and filename, for example the message “open /yourfullpath/myscore.ly”
2. A reference duration, which will be the smallest duration you need in your piece (i.e. a 32nd would have the message “refdur = 32”)
3. A meter (i.e. 4/4 would have the message “meter 4 4”)
I have not been able to use two in the same patch, but I generally use a generative patch to make .txt files and then use pd2ly to convert them into lilypond files. Btw, negative pitch numbers create silences.
Below is a list of parts. I hope I am not forgetting anything, otherwise you’ll probably need to go back to the stores and leave me a comment. If this happens do let me know to update this tutorial and for your comment to guide someone else that decides to embark in the project. Prices are approximate and I this time I include brands and models as this might be helpful for you. Do go over the building part before you buy all this stuff to make sure you have enough of everything and understand where to cut things if you can cut them in the stores.
As mentioned elsewhere the MANO controller is a black surface with a camera and some lights. So you need to buy:
a piece of wood: Proportions are 4:3 just like with TV and perhaps you might want to consider something slightly bigger on the 3 side if you want to give it a small margin at the top. I’ll measure the exact size when I am back in front of it next month.
black fabric: you need a fabric that absorbs light instead of reflecting it, so velvet sounds like an option. I don’t exactly know what fabric I actually have. Then you need to cover the wood with the fabric and sow it so that it doesn’t fall. Let’s say this will cost 20$ and this might be guessing a bit higher.
Once you have the black surface, you need to make an arm to hold the camera.
You need to go online or find a store that sells manfrotto equipment. This is I think some of the best equipment, but someone else may provide a better solution. As we will see in the building and calibration sections, the challenge is to get a camera holding system that achieves the most consistent positioning over time.
We need two things from them:
A “Super-Clamp” (figure 2 – about 20$)
A “2-Section Single Articulated Arm w/Camera Bracket” (figure 3 – about 40$)
I don’t have specific model numbers. Total cost of this step is about 60$.
The next stop is at any electronics store or amazon if available, to buy a webcam. The camera that I am using is a Playstation Camera called PS3eye which I use ob ubuntu with GUVCview. Unfortunately the mac “macam” driver is now outdated and it is difficult to control robustly. The reason why I use this camera is that it can achieve more than 30fps (actually up to 120fps) at 320×240 resolution for a price of $40 at stores (if you can still find it) and around 18$ at amazon. The image quality is great for our purposes.
You will also need some kind of system to illuminate the board. I use four of these 28-LED USB powered lamps (as opposed to the big incandescent lamps in the picture above). Buy a couple more in case some of them break. Only one out of six has broken in a couple years.
Precisely because I use four of these USB lamps, you’ll need a four port usb hub. Make sure all ports are facing the same way and it will be easy to wrap the articulated arm with these flexible lamps.
Finally, it is a good thing to have some USB extender cables so you can make the camera and usb hub reach your computer.
Optionally, you can get a couple pedals to control the instrument, which my patches use. I use this really nice USB MIDI pedal by Logidy, and an expression pedal of some sort.
The following code was used with gem 0.93-3 and pd-0.43 in os x 10.7:
1) download gem binaries for os x and gem source / only source in linux.
2) Create a project in /extra just like the other projects there.
3) modify the config files as specified in “README-EXTRA.txt”
4) run ./autogen.sh
5) run ./configure –enable-fat-binary=i386 –with-pd=/path (ignore the –enable-fat-binary=i386 flag in linux, just use it in recent versions of OSX)
6) cd into the project folder (gem/extra/pix_myexternal) and run make
7) put the project folder in the path of Pd.
Once the drum is ready, we need to setup tracking. If you are unsure if this will work in OS X or Linux, then you can also try this first. [1. If you have to use windows, this will not work out of the box. However, all the sources for the objects are inside the src folder for you to compile. I don’t have a windows machine and can’t make that happen. right now. If you manage to compile all or some of these externals, please send them to me to include them. Current versions of gem already contain pix_drum and other of my externals in the /extra folder, so if you download a precompiled version of GEM you’ll be able to use these objects. You can also follow Epic Jefferson’s instructions for windows.]
Tracking and sound patches are separate for processing reasons and to allow sending the tracking data to other programs such as Max/MSP or others. It is currently sending messages through netsend/netreceive.
Uncompress and open the main.pd patch. This will load a pre-compiled library of GEM as well as best_match and fill0s externals. If you have Pd pointing to another copy of GEM you need to disable it. If you’d like to have pix_drum in your own copy of GEM you can include the sources in the /pixes folder and recompile or get the latest GEM. [3. As mentioned previously, pix_drum is now in the extra folder of GEM, so you can get it from GEM too.]
main.pd patch for video tracking
In the main.pd patch there is a select camera option. This is only helpful in OS X. It will open a dialog to choose the camera and frame rate, as long as you have the correct drivers for the PS3 EYE camera. In this dialog you should also select the 320×240 resolution.
In linux it should go directly to the PS3eye camera, if it is the only video device open. Size and frame rate must be set separately through modprobe.[4. I commonly use:
(to load the driver with a 320×240 resolution and fixed exposure at 75 fps)
All parameters are listed here and here. Thanks to Kaswy for the hack!!]
A window should be created automatically, but you can create a window in the “create window” dialog at the top.
Most video tracking parameters are already set in advance for 320×240 resolution. You will only need to adjust the threshold to your own lighting situation. The other variables are left there in case you want to explore what they do.
You’ll also need to adjust the bounds to the area of analysis desired. Right and left should reach the edges of the drum (of the open area). top should be right below the spandex head and bottom should be adjusted to the lowest the head can be pressed.
Once variables are set, press the “save” button to save the variables. They will be loaded automatically the next time you open the patch.
Once the receiving (netreceive) patch is open, press connect to send the data.
It is important to note that the camera must be correctly positioned before tracking. Ideally, the left and right extremes of the video shot must fit the edges of the drum. This will constraint the distance. The key point however is that the drum head must be flat. If it is pointed from below or from above, you will see a black oval; if it is perfectly positioned you’ll see a line. This constraints the angle. (a matter of perspective…)
The output of this patch is described here. You can also consult the pix_drum-help.pd patch in the /src folder.
In this post I will try to explain in as much detail as possible how to build a MANO Controller. The MANO Controller is an open source instrument and the code for pix_mano is released under the GPL license.
I currently run it in a Quad Core i7 linux box (around 3.4Ghz), running the camera at 75fps. Similar machines should make it…
1) The first step is to cut the drum in 3 parts. The reason to do this is two-folded. On the one hand it needs to have one third of it completely open so as to let the camera see the shape of the spandex head when it deforms and the second is to make a device with which one can travel. If you bought a 14 inch drum, the circumference is about 44 inches. I cut mine in three sections of around 16, 15.5 and 12.5 inches. I left the 15.5 inch section out as the open section. In figure 1 you can see one of the sections.
The drum you bought should have included the body of the drum and two metal rims with their respective screws. It will also probably come with one or two drum heads which we will not use.
Figure 2. Attaching the two sections
2) the next step is to make two small holes (that coincide with the metal piece of fig 6 in the parts list) at the top, or what we want the top to be, so that they can be held together as seen in figure 2.
Attach them together with two screws and bolts. You can put some washers there if you want.
We should now have 2/3rds of a drum.
Figure 3. Bottom rim and screw.
3) Now we need to attach the lower rim to the 2/3rds of a drum we achieved in the previous step.
Use the rim and screws that came with the drum. The drum key will come in handy for this part. It should look like Figure 3. Note the rim is upside down. Regularly, rims are used to stretch a drum head, we on the contrary, are using it to get the drum to be compact/solid/strong after cutting it in pieces.
Figure 4. sawed spandex
4) The next step is to prepare the spandex head and the rim. I used two layers of spandex fabric and a thick elastic band. Choosing the spandex is not straightforward. I just went to a textile shop and chose one. The key is that it deforms easily, but recovers its flat shape very fast and doesn’t wear too much over time.
Figure 5. rim with spandex
Form a circle with the elastic band, then saw a fold of the two layers of spandex over it and saw them as shown in figure 4.
After sawing the spandex, attach it to the top rim with the nylon (I use it because it is resistant, but you can use something else). Make sure that the spandex head is stretched at the lower level of the metal rim as seen in figure 5.
I’ll post new pictures when i get some time to build a new head.
Figure 6. Top Rim
The top rim needs to be adjusted to the drum body. Use the cut rod and nut numbered 2 in fig. 4 of the parts list.
After screwing the rod into the body of the drum, use a nut to set the level at which the rim will rest as shown in figure 6.1.
Fit the rim in the rods until it rests on top of the nut as seen in Figure 6.2.
Then adjust the rim with the nuts and cap (shown in figure 5 of the parts list) as seen in Figure 6.3.
The lower part of the rim needs to be fixed at the level where the body of the drum ends. The result should look like Figure 7.
Figure 7. modified drum
Figure 8. Paper and paperclips
Once the structure is built, we need to prepare for tracking.
Get the white cardboard (it should be a flexible and light reflective thick white paper).
Cut it so as to cover all the interior of the drum.Once you have it cut, hold it to the body of the drum with paper clips as seen in Figure 8.
It is important to make sure that when you press the spandex, it doesn’t get stuck with the white cardboard/paper.
The result should now look like Figure 9.
Figure 9. white reflective inside
Figure 10. Two views of the Clamp in the Lower Rim.
At this point the drum structure is ready.
We now need to attach the clamp and arm. the clamp must be attached to the lower metal rim as seen in Figure 10. I put it to a side to allow visibility by the audience, but, it can be set at any part of the rim. It is crucial that the clamp does not move at all.
Figure 11. Insert arm into Clamp
Once the clamp is tightly attached, we need to insert the arm into the clamp as seen in Figure 11.
The camera needs to be prepared in advance. Remove the base of that comes with the PS3eye camera. You can do this by removing the plastic covers that are on top of the screws, opening it up (carefully!), removing the base, and screwing it up again. You can see someone doing it in the embedded video below. We are not interested in removing the IR filter, just so you know how and what to expect when opening the camera without breaking it.
Use two nuts (that are the same size as the screw in the bracket) and stick them to the back of the camera. Use very strong glue, I use a strong weld. Superglue and the like won’t be enough.
Figure 12. Camera and Bracket
The camera then should look like it does in Figure 12.
Finally the camera should be fixed by screwing it to the bracket. We’ll calibrate and position it correctly in the tracking software section.
We can now attach the drum to the stand and attach the lamp to the stand as well and we have all the hardware in place. Below are some images.
These steps have worked out of the box in fedora 10 and 11. You may have to fix things in other releases/platforms, for example, I’ve had a lot of trouble in Fedora 13. See http://nuigroup.org on the web to see some possible solutions.