Friday, 26 December 2014

Mapping Modules

The software elements for several mapping modules have been created using SuperCollider. Max Msp was also used to create a user interface whilst developing the code and will be replaced with hardware later.

These modules are focused around the mapping and transformation of signals. Similar functions and parameters have been combined, allowing interface configurations to be shared facilitating multi functionality and reducing the spatial requirements of the instrument.



















The modules include:

- Threshold / Gate / Compressor
- Combine / Compare
- Divider / Gate / SAH

MAX: https://www.dropbox.com/s/a2ep3aunbnuicun/ThreshGateComp.maxpat?dl=0
SC: https://www.dropbox.com/s/ebw9s5pt4ynj1fa/ThreshGateComp.scd?dl=0

MAX: https://www.dropbox.com/s/89yhnzhjgnencqu/CombineCompare.maxpat?dl=0
SC: https://www.dropbox.com/s/8qog4wffbmek0ux/CombineCompare.scd?dl=0

MAX: https://www.dropbox.com/s/nvcualcmfvbtbl4/DivGateSah.maxpat?dl=0
SC: https://www.dropbox.com/s/p4sbpwx1zvde7gr/DivGateSah.scd?dl=0

Wednesday, 24 December 2014

Macro Sliders Module

The aim of this module is to provide macro level control of parameters. This is achieved using multiple layers of data from each slider. These layers can be configured to have different curves and ranges. The range for the outputs of the sliders can be set intuitively using the sliders.

In addition to this, recording and playback of slider movements was added with two modes of operation. The first records and repeats the last movement made by the slider. The second uses the button to set the duration and playback of recording. LEDs were also added to give visual feedback about the state of the loopers.



Future developments to the software could increase efficiency by separating the looping and setting of ranges. At this stage, Max Msp was used to test mappings and layouts whilst developing the code.

CODE: https://www.dropbox.com/s/qf439g3nzmx2dm2/macro3.scd?dl=0


After this, cardboard was used to create temporary panels. The purpose of this was to gain a better understanding of how the modules might be constructed. More specifically, the physical immediacy of this approach allows for experimentation and exploration throughout the building process. 




In particular, various different approaches towards organising and soldering the wires were explored. Ribbon cables provide a flexible solution for transmitting different numbers of inputs and outputs from the pcbs to the panels. This also makes the panels easily interchangeable and simplifies the creation of new panels.





The process of physically building the panels allows spacing and ergonomics to be tested immediately and adjusted to facilitate natural and intuitive movements. This led to the banana jacks being placed at the top aim to keep cables away from the sliders as this module will probably be placed on the bottom row for easy access.




Sliders were used as provide visual feedback about parameters current position and allows for precise and intuitive gestures to be made. Potentiometers with a center detent were chosen for attenuating and inverting the modulation outputs for the sliders.


Thinking about groups of parameters and their physical representation, led to the sizes and heights of dials being linked to the parameter's significance and frequency of use. This aims to facilitate the visual and tactile navigation of the instrument.

An additional column of potentiometers will also be added for setting the ranges for the sliders and controlling the recording and speed of the loops. Similarly controls will be added for storing, recalling and interpolating between presets 
The sections of perfboard will also be mounted to the panel in later versions.



Sunday, 21 December 2014

Amplification and Resonance



An amplifier was built in order to bring electronic sounds into the acoustic domain. This allows for direct, physical manipulation of the sound and draws attention to the spatial complexity and subtle textural details of acoustic sound sources. The sound is physically there in front of you and can be immediately manipulated intuitively with the hands. In this way, the amplifier was found to be particularly effective when used in combination with SuperCollider. The schematic that was used can be found in the handmade electronic music by Nic Collins.


Various components were also added, providing more options for manipulating the sound. These include 1/4" TRS jacks for input and output and a toggle switch (on-off-on(momentary)). In particular, the toggle switch allows for faster gating of the input signal. However, when set to the 'off' position the device becomes ungrounded. This allows the whole circuit to be used as an interface and produces rich buzzes and crackles. Each component becomes sensitive to proximity and touch. These sounds expand the timbral range of the device and compliment the warm, buzzy distortion when the input gain is increased.

Whilst exploring the capabilities of the circuit several found objects were used as resonators, each with their own harmonic properties. 

This was particularly interesting when combined with contact microphones and provided an extremely sensitive interface. Small movements (sometimes barely perceivable on the video) have a large influence on the sound and allows the details of the system/objects to be explored. However, the generally unstable nature of this system meant that I often found myself searching for the resonant nodes of the objects and the thresholds of change between them.

In addition to this, combinations of the different resonators can be stacked and sequenced, merging and contrasting the sound qualities of each. In this way, the collection of resonators provides a set of different intervals, determined by the physical properties and spatial positioning of the objects.

Smaller objects were also placed directly on the speaker membrane, creating a wide range of rattling, distorted sounds. These sounds often produce with rich and complex spectral changes that occur as the objects are moved around by the speaker. In particular, solder was used to create small structures which would dampen and accentuate different nodes of the speaker membrane. This often produced rough sounding textures which complimented the pure tones produced by feedback between the contact microphone and speaker. Similarly the use of these objects also interferes with the natural modes of vibration of the speaker/resonators.

Future explorations may include adding LDRs around the edge of the speaker and the creation of a series of modular resonators with more precise dimensions. Also, the incorporation of signal processing between the contact mic and the speaker will also be explored.

Tuesday, 16 December 2014

Mapping Modules

Various modules for mapping signals were redesigned, focusing on multi functionality and the grouping of parameters/processes according to similarity.

This saves space by reducing the overall number of modules needed and allows switching between different functions without repatching.

This resulted in the following modules and panel designs:
-vca/xfade/mix
-threshold/gate/compressor
-combine/compare
-divider/gate/sah

























Quantiser
Code was also developed for the quantisation and smoothing of signals. From this, a recording was created exploring the generation of multiple streams of sound using one modulation source.




Synth Groups
In addition to this, I also started exploring groups /arrays of synths and how they could relate to each other, 

Several recordings were made exploring the use of groups to manipulate and crossfade between different sets of synths. However, the interaction between myself and the computer in this context tends to lend itself to slow developments and drone like sounds within the music


From this, ideas were formed about the creation of mappings to influence, shape and transform the group on both global and individual levels. Several scenarios were explored in which the analysis of parameters for the existing synths determines the next synth to be added. 

In particular, the use of averaging and interpolation was use to iteratively change the probabillities and sound qualities of the group. The use of averaging tends to produce converging sets of parameters, slowly reducing the difference between the newest and previous synths.

Interpolation was used to create various dimensions between different aspects of the existing synths. More specifically, the parameters for new synths can be selected from a continuum between either oldest and newest or minimum and maximum values.

Future development will focus on the dynamic grouping and manipulation of specific synths and their parameters. 

Thursday, 11 December 2014

Patchbay Touchpoints



Eight strips of copper tape have been added to the patch bay circuit. The copper strips are soldered to headers so they can be used to make connections in the patch bay, providing a more dynamic control over the routing of signals.

During testing, the touch points only worked if connections were made using the same finger, and occasionally when using multiple fingers on the same hand. This is probably due to the values being too low to be detected by the arduino. Switches were added as a more reliable, short term solution for gating connections.

Through this experiment and the previous exploration of CMOS chips I have started to think about groups of connections/controls and how these elements can interact to create larger structures/networks.

Each module will have a button for adjusting the more detailed and less accessible parameters. This button could also allow for the selective manipulation of groups of connections such as:

-smoothing
-freezing and sah functionality
-introducing noise into signals (infect other connections due to proximity?, signal decays the further it travels?)

-storing and recalling presets (although this may get confusing as the physical cables will no longer represent the routing inside the software)

Monday, 8 December 2014

CMOS synth update

After further exploration of the cmos chips, additional components were added to the circuit. 

A 40106 provides six oscillators using various different capacitors to give a variety of frequency ranges. The input and output pins of each oscillator were soldered to headers, allowing the frequency to be set by altering the resistance between them. Modulation inputs were also included for frequency modulation of the oscillators. Several R2R ladders and a second 4040 were also added for creating intervals and harmonic divisions.

In addition to this, a 4070 was used to provide four XOR gates, creating an effect similar to ring modulation. The added harmonics produced by this chip create a range of rich textures and noisy sounds, especially when the four gates are chained sequentially.

After playing with this chip I realised that more complex and interesting routings could be possible if I had duplicated the outputs. This was solved by adding rows of connected headers, duplicating the signal, allowing for the splitting of signal paths and creation of parallel layers.

Two passive mixers allows for polyphonic layering of sounds. Each mixer has four inputs and four duplicates of the mixed output. The use of two separate mixers allows for the creation of sub mixes and feedback.

The eight touch contacts allow for gating and manipulation of signals, providing human controlled variation of resistance. However, the performer cannot remove the hand to manipulate other parameters whilst retaining the connection. This could be solved by using either a sample and hold circuit to retain values when removing the fingers, or a flipflop gate to create a toggle like behaviour for the contacts. This could also be solved by resting conductive objects over the contacts or using magnetic patch cables.

Four patchable LEDs were also added for providing visual feedback. They can be routed to display specific outputs or visualise signal flow whilst patching. The decision to make the visual feedback optional helps retain the unpredictable nature of the instrument's interface whilst shifting focus toward the sound.

The use of linear pots compliments working with low frequencies, pulses and rhythms. The squashed range makes it harder to control higher frequencies accurately and consistently. This is particularly interesting as the reproducibility of actions reduces as the values of the slider get higher.

The combination of XOR gates and unconnected wires tends to create dense, rich layers of noise  accentuated by the distortion of the amplifier circuit and small speaker.
When using unconnected wires the movement of cables and proximity to the circuit becomes amplified and starts to influence the sound.

In this way, the unpredictability of the circuit is often not random but is intrinsically linked to the environment. This gives the instrument a sense of presence and life as it reacts to the changes in its surroundings. 

Once a patch reaches a certain stage of complexity the significance of the individual connections, components and actions become blurred and difficult to navigate. At this point, the performer has to rely on intuition and awareness, reacting to changes in the system spontaneously. 

The process of building and exploring this circuit has facilitated thinking about the layout and mapping of modular interfaces. This involved the creation of different sections that provide specific functions and contemplating their possible uses and combinations


Tuesday, 2 December 2014

cmos synth

Initially, breadboard was used to explore the functionality and musical potential of various CMOS chips. More specifically, the 40106, 4051, 4040, 555, LM386 ICs were used to create a simple circuit built around square waves and digital logic.

In particular, the noisy, unstable and unpredictable nature of this interface was particularly engaging and seemed to facilitate an uninterrupted flow of ideas through the reciprocal interaction with the system. In addition to this, the presence of loose wires and the use of LDRs within the circuit increased this feeling of interdependence and entanglement between myself, the circuit and its components.

Once a familiarity and understanding of the functionality and behaviour of the ICs had been developed, the various components were soldered to perfboard. This construction process was mainly improvised, with minimal preplanning, often returning to the breadboard to test and confirm ideas. 

In this way, the construction process reflects the noisy characteristics of the system, adopting a more free approach with less planning and more focus on the sonic and performative interaction.

This was accentuated by my lack of technical knowledge and a focus on the sound/experience of interaction with the interface with this unpredictability becoming its defining feature.

The physical position and soldered connections between components implies a certain usage and functionality but can also be easily reconfigured. In this way, the system attempts to create an engaging interface which exhibits a balance between fixed and flexible structures. In addition to this, the scale / size of components represent the importance of their function aiding accessibility and spatial navigation.


More specifically, the current circuit contains a 555 timer, 4040 pulse divider and 4051 multiplexer. The 4040 is wired using the first 3 outputs to provide a binary count which drives the 4051. The inputs for the 4051 are connected to the DIP switch providing a more logical layout and switches to mute the various channels. The speed of the 555 timer is controlled by a potentiometer and various sliders are also soldered to headers, providing a patchable interface.

Future developments for this circuit will include the addition of more oscillators, various sections for mixing and mapping the various components.



arduino sequencer + digital potentiometers

This circuit was created to explore the possibilities of using the Arduino as a standalone device and interacting with analog circuits. 

It uses an AD5206 digital potentiometer IC to recall six values from the Arduino, currently visualised using leds. These values can be set using the six analog inputs of the Arduino. Pins 7 and 6 provide trigger inputs for storing and recalling the sets of stored values. These are currently wired to the two switches on the breadboard for testing but can also be triggered using other signals.

Pin 9 acts as a sequencer output, stepping through the six stored voltages of the currently selected preset. Pin 4 is used to trigger the next value in the sequence.

In addition to this, the sequencer can also step through a separate array stored on the Arduino. Values from pin 53can be stored in this array by sending a trigger to pin 5.


Monday, 1 December 2014

PCBS and PANELS

patchbay

The circuit for the patchbay consists of four 74HC165 and four 74HC595 ICs connected to headers for patching. The patched connections are determined by stepping through each output of the 595s, sequentially sending a high signal out of each output pin. For each step the inputs of the 165s are read. If a connection has been made then the input will receive a high signal and will return a low signal if nothing is connected. This data is stored in an array and sent to software using serial communication.

In comparison with analog patching interfaces, this method eliminates a lot of the complexity and expense involved when dealing with the high sampling rates required for patching audio rate signals in and out of the computer. The downside of using this method is that all inputs and outputs have to be read in the same cycle. This forces a compromise to be made between the maximum number of inputs and outputs and the total time taken to read them.

Initial testing using the Arduino resulted in a significantly perceivable delay between patching a connection and the resulting connection being read by the software. This is particularly problematic as it is being used in a realtime musical situation. Further testing was done using timers for a more accurate observation of different elements of the code and their influence on the read time. 

using digital read and write 
~765ms for 32 inputs and 32 outputs

using port manipulation
~730ms for 32 inputs and 32 outputs

using teensy microcontroller
~65-150ms for 32 inputs and 32 outputs

The use of serial.print was found to be the major cause for the slow read times. This was improved by only sending serial data when new connections are detected, this brought the read time down to ~3ms.

CODE:
Finally, a pcb was also designed for the patch bay circuit using headers to allow chaining of multiple boards using ribbon cables. The teensy will then be mounted on perfboard with headers to allow communication with the pcbs. This makes the system expandable and facilitates further modification and development.








multiplexing
Circuits have also been created to provide the large number of inputs and outputs needed for the physical interface of the modular system. It uses a combination of 4051, 4067 and 5940 ICs to allow for up to 256 analog inputs and 256 outputs. These will be connected to various headers and used for reading sensors and providing visual feedback using leds. More specifically, the 4051 is used to provide 8 rows of positive voltage which are stepped through sequentially. The inputs/outputs (4051/5940) are then read for each step in a similar way to the patchbay circuit.

The circuit was tested on a breadboard using a Teensy micro controller to communicate with the computer. From this, several schematics and pcb designs were created to facilitate reproducibility and efficiency as it would be tedious and time consuming to solder this many connections using wire and perfboard.












The pcb for the mux outputs is still being developed as there is problems with the different channels of the 5940 flickering and bleeding into each other when driven at high speeds. This could possibly be due to problems regarding current or timing in the software.
The pcbs for the patchbay and multiplexing will also be combined into one board in the final design for a more cost effective production process.























panels



Decisions have also been made regarding the standardisation of panel layouts and connections. As stated above, ribbon cables will be used to allow simple and flexible communication between the panels, pcbs and microcontrollers. The various components on the panel will be wired to strips of perfboard mounted behind the panel. These perfboard strips will also be connected to headers, allowing ribbon cables of various different sizes to be connected.

The parameters for each module was sketched and organised in order to make calculations about the number of components needed. This process helped gain a better perspective of the macro structure of the interface and allowed reflection on the different parameters and their relation to each other. In this way, cases of associative and functional similarity were revealed allowing standardisation and flexibility within the design of the interface and mappings.


In addition to this, models were created using cardboard to gain a better sense of the physical proportions involved and their relation to the movements and positioning of the body. During this process, the various issues regarding sizes and positioning were considered, focusing on providing intuitive and accessible control. 

From this, preliminary designs were created for laser cutting the panels.





Another key issue that was considered is portability. The instrument should be light and small enough to carry on my back and should allow for the connected cables to be kept in place whilst travelling. The size and weight restrictions for hand luggage with various different airlines where also checked for compatibility.


Tuesday, 14 October 2014

Modulation Mappings

This patch was created to explore various methods for dealing with the scaling and clipping of modulation signals. Initially, basic clipping, wrapping and folding of the signal was achieved using the pong~ object. 



The technique of transforming the clipped values of the signal was expanded further using the >~ object in combination with a selector~ object to switch between the original audio and noise signals.




Non-linear scaling of the modulation signal was achieved using a combination of tables, buffers and the peek~ and index~ objects to create waveshaping. 

Similarly, the function object was used to create tendency masks which change the modulation amount over time.




Another set of objects allows for quantisation, smoothing and feedback of the modulation signal.

patch:
https://www.dropbox.com/s/d866yjxzvovc6tr/ModulationMapping.maxpat?dl=0
Phase Vocoder + Multitouch

This patch was created to explore FFT and granular techniques for independent control of speed and pitch when playing back buffers. It consists of two synthdefs, one for recording audio and FFT data simultaneously and another for the playback. The playback synth contains UGens for both phase vocoding and granular playback and allows blending of the two sources. This is advantagous because they both produce very different artifacts when playing back at lower speeds. These different sound qualities compliment each other and provide control over the roughness/smoothness of the resultant sound.


code:
https://www.dropbox.com/s/kkkocuadncryqh3/PV_recplay.scd?dl=0

sound:
https://www.dropbox.com/s/og0guclxtoqupwy/SC_141013_212931.aif?dl=0
Multitouch Experiments


A series of experiments were made in order to explore the potential of multitouch surfaces for interaction with SuperCollider. This was achieved using the TonsengMod Quark available at: https://github.com/earslap/tongsengmod. These experiments involved the creation and control of Synths that read data from a buffer.  https://www.dropbox.com/s/z6yfzgqot7xb3wb/multitouch.scd?dl=0

Initially, the xyz coordinates for each touch were used to fade between different samples and control the playhead of the buffer directly. This proved difficult to control due to the high resolution of the playback position and the small size of the physical interaction surface. This was found to be particularly problematic when trying to reproduce certain gestures. Smoothing and mapping to a smaller range helped to compensate for this but is not the best solution. In addition to this, when the playback position stationary the Synth creates piercing tones due to the repeated playback of one sample.

https://www.dropbox.com/s/umr4mlkbzcc22xo/multitouch_sampler1.aiff?dl=0

In addition to this, a synth was also created which looped a section of the buffer with the x and y coordinates controlling start position and loop length respectively. This produced much more reliable results but produced a more obviously looped sound. In addition to this, mapping the y coordinate to fade through different buffers was also explored to create hybrid timbres. This could be improved by either using convolution techniques or fading through more buffers and selecting samples that are less contrasting.



Monday, 13 October 2014

OSC GUI using Processing



This sketch uses the controlP5 library for Processing to create sliders and toggles. The OSC messages generated by this sketch are used to manipulate Synth parameters in SuperCollider.

https://www.dropbox.com/s/nnzlvevf7ie0fg2/FMFILToscGUI_pde.pde?dl=0

A second version of this sketch was also made using arrays to store the data for creating the sliders. This reduces the size of the code and allows for values to be changed more easily. 

https://www.dropbox.com/s/sjhozsq0rjcdtkd/iterate_sliders.pde?dl=0
OSC from SuperCollider to Processing


A simple sketch was created using the OSC library for Processing. The sketch receives an LFO signal from Supercollider and uses the received value to determine the coordinates for a point drawng on the screen.

https://www.dropbox.com/sh/eei49duo7bodyo1/AADNgHArasZiCc5xc_URVjg2a?dl=0

Friday, 22 August 2014

Sample Manipulation




This interface was created in preparation for an upcoming performance using the previously built mixer panel to manipulating sampled material. This also provided the opportunity to build and test the revised layout for the mixer channels. 

Due to time constraints, large holes were created to allow access to the buttons. This will be improved in later developments and provides the opportunity to experiment with different materials and techniques to achieve a suitable tactile response.

In particular, the small sliders used for the new mixer channels allows for fast and easily accessible control over send levels and filter parameters. This most effective when the rows of three sliders are mapped to LPF cutoff, HPF cutoff and resonance respectively, allowing bandpass and other variations to be achieved using quick and small gestures.
However, the small size of the sliders also decreases the resolution which may be desirable for controlling filter cutoff.


In addition to this, a max patch was created in order to explore various manipulations of sample playback using the 2d.wave object. The 'rows' parameter allows for basic timestretching, providing independent control of pitch and speed. However, the lack of windowing generates clicks and other artifacts.

 In particular, the use of feedback and interrelated modulation inputs were used. This also allows the analysis and audio signals from the cello to be used within this patch.