Technical Development

Overview:
I plan for the device to use a combination of electronic sensors and a PureData patch. Data will be passed from the sensors to the PD patch via an I-cubeX digitizer. The PD patch passes data to Garageband via the computers built in midi driver.

 

 

PureData (PD):
Due to the nature of the project, PureData was the obvious programming environment to choose. This is mainly due to PD having the ability to take readings from connected sensors/switches through a digitizer and convert those into midi control numbers that could be outputed through the computers own midi driver.

Currently the patch is an estimated 70-80% complete, with the majority of the key features working well with connected sensors.

 

Midi Input:
The device uses the 'ctlin' object within PD to take midi readings from the usb connected digitizer. This object has two inputs: the control number and the reading. The reading from the object gets assigned to the 'trig' variable, and stored for future use, while the control number is checked to see if any readings are coming from controls 21 and 24. This is due to those controls being assigned for percussive input that will require an alternate process to be carried out.

 

Percussive Process:
Due to the erratic nature of the percussive input, a different process is required to convert the readings into useful information. The diagram below shows how a series of 'split' objects can be used to gather an average input. Another series of split objects is also used to determine which percussive input device is being used at the time so as to ensure each device triggers different samples.

 

Midi Scale:
From a melodic perspective, it is the midi scale that determines the midi control numbers that will be outputed to Garageband. Alterations by adding or subtracting from the basic scale are made to these numbers as users select tonality, key and pitch.

 

Percussive/Melodic Toggle:
This section determines whether or not the user is choosing to write a melodic or percussive piece. The flow of the patch from here splits into two paths depending on the choice of the user. Should melodic be selected, the user is selecting to use a scale made up of midi control numbers that will be altered depends on other settings chosen (tonality etc). Should the user select percussive, there is a selection of midi numbers chosen that trigger appropriate samples (e.g. kick drum, snare, hi-hat etc). In order for the percussive selection to be effective, the user must select 'drum kit' as the midi-instrument to be used on the track via the Garageband interface.

 

Major/Minor Toggle:
This section is to check what tonality the user has chosen to use on thier creation. This is achieved through using a split object. Depending on the users selection, the midi scale outputed to Garageband is altered by adding or subtracting numbers where appropriate.

 

Key Change:
The user is able to select from scales ranging from B to C (including all sharps). Depending on the selected key, numbers are added or subtracted onto the midi scale altering it as desired.

 

Pitch Change:
This control alters the pitch of the midi scale. Depending on the users selection, an addition or subtraction of 12 is inforced upon the midi scale to alter it. In the prototype, the user is able to select three different pitches.

 

Midi Output:
Shown below is a standard midi output patch in PD. Through this selection the patch, the velocity and volume of the midi not to be triggered can be changed. This particular part of the patch also takes the melodic and percussive readings from the stored variables of 'melod' and 'percus, depending on which has been chosed at an earlier stage.

 

 

Electronics:
A variety of electronics will be used on the final device, ranging from different switch types to shock sensors. Care was taken into the selection of switches in particular to ensure that interacting with the device was responsive.

 

Neck Switch:
For the proposed neck section of the device, rounded 'momentary' switches were chosen. Connected to the circuit was a 4k7 resistor, and a 3-pin connector for use with an i-cubeX digitizer.

 

Toggle Switch:
This type of switch was chosen for tonality selection and melodic/percussive selection. Fitted with a 4k7 resistor, these switches offer a self explanatory way in which to make selections.

 

Lever Switch:
For key input (piano etc) on the device, I chose to use lever switches that could be trimmed to fit thekeys used on the final device. There switches again are fitted with a 4k7 resistor and have the added bonus of pressure sensitive readings depending on how far down the lever is pressed. In the final version of the device, this reading will most likely be assigned to velocity.

 

Potentiometer:
These were chosen for selections that had more than two possible choices, in this case key selection and pitch. A series of 'split' objects are used within PD to determine selection as the potentiometer is turned.

 

Shock Sensor:
Initially for percussive input, I desired to use piezoelectric drum pads constructed of foam. After much testing and circuit wiring, it was determined that this was not feasable due to inaccurate readings through the digitizer. As a replacement, basic shock sensors are currently in testing and seem to be providing more accurate outputs.