Introduction: Acoustic Sound Texture Generator and Controller

The aim of this project is to explore the limitation of a simple four strings instruments with the help of a digital calculator.

Making it a whole thing with a digital synth ends up on having no limitation on sound exploration.

From limited to unlimited.

Nothing is trivial anymore.

The instrument structure will be itself the mean of the sound modulation through the help of the laws of physics (electromagnetism), by being a capacitive sensor.

Step 1: How Does It Work?

A string based wood instrument amplified through a piezo microphone is augmented trough sensors and controllers connected to an Arduino UNO.
all the sensor are in communication with a patch in max that allows you to record your performance on the instrument and play with it through the instrument itself.

The sound engine is based on a granular synth that is helped by some effects and audio processing (filters, reverb and delay).

It is present a switch that allows to play different settings of the controllers built in on the instrument.


1) Button -> Record

2) Pot 1 -> Gain

3) Pot 2 -> Grain size

4) Pot 3 -> Grain Random position

5) Pot 4-> Pitch

6) Pot 5 -> N of Grains

7) LDR (light dependent resistor) -> Random Pitch Value

8) Strings as Capacitive sensor -> OFF


1) Button -> Loop play

2) Pot 1 -> Position of the loop

3) Pot 2 -> Grain size

4) Pot 3 -> Grain Random position

5) Pot 4-> Pitch

6) Pot 5 -> N of Grains

7) LDR (light dependent resistor) -> Random Pitch Value

8) Strings as Capacitive sensor -> Reverb & Delay

Step 2: Materials & Tools

Of course we'll need tools to work with the wood altogether with electrical components.



Wooden Plates


2x Steel Profiles

4x Guitar Strings

4x Machine heads for guitar

Soldering Iron

Arduino UNO

1x 10 MOhm Resistor

3x 10kOhm Resistor Jumper Cables

1x Push button

1x Toggle Switch

5x 10k Potentiometers

1x Light Dependent Resistor

2x BreadBoards

1x Piezo Sensor

1x Jack cable

Step 3: Build the Structure

Cut three wooden plates (5mm) with measures 60x17 cm.

Cut a whole (arbitrary shape) for the sounding board, and cut two pieces of 17x17 in order to cover the sides of the structure, leaving the bottom open. One of the two sides should leave the space for the mechanical heads, while the other some holes that will harbor the strings.

The steel profiles will be our bridges, and at the bottom four bolts for the sliding.

Step 4: Create the Microphone

Open up a jack cable, and solder the two extremity respectively to the upper and bottom part of the piezo.
Choose the size of the last one in order to fit the space between the upper bridge and the sound board, is there that we're gonna put our microphone (that is gonna be connected to an external sound card).

Step 5: Wire the Potentiometers

The left pin of the pot is gonna be connected to the 5V pin of our Arduino uno, the latter to the Ground pin(there are bunches on the Arduino Uno board, choose the one you prefer.

The middel pin will be attached to the Analog In pins of the board, respectively A0 A1 A2 A3 A4.

Step 6: Wire the Toggle Switch

One of the pin of the switch is gonna be connected to Ground, the middle one to the Digital Pin 8 of the board, while the third pin goes at the 5V with a 10k resistance.

Step 7: Wire the Push Button

As in figure, one of the pin goes directly to 5V wgile the other one goes to Digital pin 13, and to ground with a 10k resistance.

Step 8: Wire the LDR

The first pin will go to both 5V and to the Analogue Input A5, while the other one is connected to ground with again a 10k resistance.

On the arduino sketch is included a calibration for that sensor that will improve the sensibility (for gesture control) and for limiting and ranging the values in output.

Step 9: The String Sensor

Our sting will function as a Theremin for controlling the effects applied on out sound texture generator.

As in the pictures, connect the strings to pin 4,2 (send,receive) through a 1MOhm resistance. Try with different values, the highr the resistance the higher the values you will get.
Those values are then processed both in Arduino and Max/msp in order to controll our interaction with them and with the overall structure!.


Capacitive sensing may be used in any place where low to no force human touch sensing is desirable. An Arduino and the library may be used to sense human touch through more than a quarter of an inch of plastic, wood, ceramic or other insulating material (not any kind of metal though), enabling the sensor to be completely visually concealed.
A capacitive sensor covered with paper or other insulator also acts as fairly good (human touch) pressure sensor with an approximately logarithmic response. In this regard it may surpass force sensing resistors in some applications.


The capacitiveSensor method toggles a microcontroller send pin to a new state and then waits for the receive pin to change to the same state as the send pin. A variable is incremented inside a while loop to time the receive pin's state change. The method then reports the variable's value, which is in arbitrary units.
Watch a short video demonstration (YouTube) The physical setup includes a medium to high value (100 kilohm - 50 megohm) resistor between the send pin and the receive (sensor) pin. The receive pin is the sensor terminal. A wire connected to this pin with a piece of foil at the end makes a good sensor. For many applications, a more useful range of values is obtained if the sensor is covered with paper, plastic, or another insulating material, so that users do not actually touch the metal foil. Research has shown that a small capacitor (100 pF) or so from sensor pin to ground improves stability and repeatability. When the send pin changes state, it will eventually change the state of the receive pin. The delay between the send pin changing and the receive pin changing is determined by an RC time constant, defined by R * C, where R is the value of the resistor and C is the capacitance at the receive pin, plus any other capacitance (e.g. human body interaction) present at the sensor (receive) pin. Adding small capacitor (20 - 400 pF) in parallel with the body capacitance, is highly desirable too, as it stabilizes the sensed readings.

In this project ww'll use the capacitive sensor library and it's methods

Step 10: Test on the Breadboard

Step 11: Drill Everything Together

Enclose all your components as in the picture above or according to your structure and taste

Step 12: The Max Patch and Arduino

The Max patch is based on a Granular Synthetiser. Granular synthesis is a basic sound synthesis method that operates on the microsound time scale.

It is based on the same principle as sampling. However, the samples are not played back conventionally, but are instead split into small pieces of around 1 to 50 ms. These small pieces are called grains. Multiple grains may be layered on top of each other, and may play at different speeds, phases, volume, and frequency, among other parameters. At low speeds of playback, the result is a kind of soundscape, often described as a cloud, that is manipulatable in a manner unlike that for natural sound sampling or other synthesis techniques. At high speeds, the result is heard as a note or notes of a novel timbre. By varying the waveform, envelope, duration, spatial position, and density of the grains, many different sounds can be produced..

Both have been used for musical purposes: as sound effects, raw material for further processing by other synthesis or digital signal processing effects, or as complete musical works in their own right. Conventional effects that can be achieved include amplitude modulation and time stretching. More experimentally, stereo or multichannel scattering, random reordering, disintegration and morphing are possible.

In Max you're able to visualize the buffer you're recording in and the manipulation you're applying to waveform and the value of the parameters as well.