User:Markvandenheuvel/specialissue10: Difference between revisions

From XPUB & Lens-Based wiki
Line 267: Line 267:
-----
-----


=sample: In-side/out=
=Key speech sample: In-side/out=


[[File:Samples.png|800px]]
[[File:Samples.png|800px]]

Revision as of 20:28, 22 February 2020

SPECIAL ISSUE #10: LFP

Materialising the Blackbox

Full program and description: http://pzwiki.wdka.nl/mw-mediadesign/index.php?title=Category:LFP

PADS

https://pad.xpub.nl/p/olliworkshop

https://pad.xpub.nl/p/xpub1temp

https://pad.xpub.nl/p/modules

https://pad.xpub.nl/p/conceptual



Meergranen with volume potmeter

Introduction

  • modular synthesis: difference between analog & digital modules
  • possibilities to patch modules
  • the Eurorack format
  • how to use modular synth as an interface

Constructing the 'Meergranen' 8-bit sample module:

  • Walk through the components used
  • Soldering & testing
  • Flashing different presets onto the Arduino Uno
  • laser cutting a frontpanel

ideas & thoughts

Possibilities of the project:

  • synthesizer module as an interface: the cover and connectivitiy to the other modules (interrelationality)
  • possibilities and limitations of both software and hardware
  • connecting modules augments the possibilites > modularity = Great affordance

links: Basic course in modular synthesizers

Workshop with Olli Aarni at the Player

date: 23 t/m 25-09-2019
pad: https://pad.xpub.nl/p/olliworkshop


Workshop day 1

Listening, discussing sound in relation to linguistics and ways to describe it. "Cognitive linguistics" in relation to sound production. Language as an interface, a tool.

RATELKLONK (also known as a 'klonkie') is a made up word to describe the sound that is produced when a bike lock is chained to a metal object (fence, lamp post, etc)


Workshop day 2

Composing a collection of words (terms, verbs etc.) to talk about sound. What is the difference between the 'official' terminology and subjective methods to describe sound?
Sound categorising exercise

My categories were based on a narrative: A group of people (or entities), a small society performing phycical work or social tasks.

  • Cat#1: They did this before. Nothing new… Very little excitement to execute. It's like a routine for them.
  • Cat#2: They did it before but it still sometimes excites them unexpectedly. Not too hard! But be aware for unforseen things that definitely are happening.
  • Cat#3: These things will always be exciting and can't be done on auto-pilot. Be aware for unexpected things that may be happening.

Somewhat common categories:

  • Room + Speech
  • Rhythm + Rhythms + Revolving
  • Water + Melting
  • Surroundings + Environment + Pads and atmos + wood + Trickling
  • People + Narrative speculation + Speech

Workshop day 3

Creating sounds for a category of choice with brought objects: Experimenting, Performing, recording.

Sound for speech / dialoque:

  • pingpong ball in metal cup > let it bounce on the table while in the cup
  • change the cut-off by opening and closing
  • try to imitate speech/converstation
  • create background noise > roll ball over wooden table while in the cup

Speech-instrument.jpg

Sound for low-frequency kickdrum:

  • tune string by stretching > playback at half speed?

Final thoughts

What do I want to do with it? How can I create meaningful content "beyond the bleep bleep machine" and how to avoid that the module rules me?
Why do we use a module?? What does it mean?? How is it related to INTERFACE?

In relation to linguistics

  • direction of sound (m inwards, s outwards)
  • letters that can or can't control tonality (M vs S)
  • Meaning in individual letters and structure of language

Ideas & references for self-directed research

  • Tokyo station names converted to sound: physical place in sound in case a commuter is not able to read the station names
  • The concept of invisible people (components) working for you inside a black box. What are 'they' doing for you? How to create awareness (or not?)
  • digital speech synthesis, making kind of working noises (that appear in the workplace)
  • laquer cut technique > field recordings cut directly into vinyl. This was also used as a communication tool; audio postcard (original or reproduction?)
  • transfering data trough sounds (transferred over radio)



resources

https://git.xpub.nl/XPUB/special-issue-x
https://github.com/Eldjotnar/pianotalk

watchlist

INTERFACE: Gordon Monahan - Speaker Swinging
Pendulum Music by Steve Reich

links

Convert .wav to midi
Downloading games from Radio
Speech-to-song illusion

Field trip to Dutch Modular Fest

Modular Rack



Interface related links

General definition of Interface: https://www.lexico.com/en/definition/interface

Analog Reel-2-Reel Tape loop interface: https://www.dutchmodularfest.com/sebastian-scholz

Sebastian Scholz, Reel2Reel

music related (analog vd digital)

Protracker: Amiga 8-bit PCM tracker: https://www.youtube.com/watch?v=IdbgeFAus0k

1-bit music: http://www.irrlichtproject.de/houston/index.html


Arduino sessions with Dennis de Bel

  • Exploring possibilities and limitations of Arduino
  • Introduction to Arduino coding (5V signal as a control voltage)
  • converting custom samples by using Samplify
  • patching: modulation and triggering by using audio from another module


links:
Basic Arduino instructions: http://pzwiki.wdka.nl/mediadesign/Arduino101
Trigger Module by using a control voltage: http://pzwiki.wdka.nl/mediadesign/Arduino101-LFP
Basic control structures (For / while /if): http://pzwiki.wdka.nl/mediadesign/Arduino101#Basic_Control_Structures:_If

> codes to test: Meergranen Module V2 Zip

  • Added: Talkie (Arduino speech synthesizer!!!!)




Self-Directed research

Speech-to-midi experiments
I recorded some speech samples, converted them to midi notes and choose a sound that somehow is close to a human voice.


Count.png
File:MVDH speech-to-midi-counting.mp3

Introduction.png
File:MVDH speech-to-midi test.mp3


Notes on Interface

What are external ways to control the module? How can you still effect it ?

A site specific module? Triggered or modulated by raindrops falling, light movement, External sound?

idea: a granular synthesis music box with manual spinning wheel ? or an Arduino chiptune?
a conversation between 2 modules

first ideas

(un)learning module

  • plays looped speech sound
  • alghorhythm: granular synth > chaotic granular patterns > loop > ….
  • granular synth that can be controlled
  • 'self correcting' randomised modulator / clock
  • push 'panic' button to start proces

The sample/sample trigger/player

  • speech sound or archetypical 'loop'
  • alternative clock signal (manually adjustable, visual)
  • a converstation of two samples: one amplified, one semi-amplified, one speech (tape), one code (in speech)

lofi-music box:

  • plays 'musical' pattern or audio signal binary data
  • standalone clock:
  • interaction: user decides the speed
  • musical pattern player
  • sound and pattern can be modulated by external input

——————————————————————————————————————————————


Notes:

IDEA #3: The sample/sample trigger/player

- an analog vs digital conversation: the module being criticized
- parallel sample player
- cybernetic modes revealed

Despcription:
Sample on the module is triggered by an analog tape loop that is played from a tape machine. The tape contains both the trigger for the module and plays the same sample (analog version) as the module. The module and tapeloop play in sync and both can be heard at the same time. The input of the tape modulates randomiser of the sample. They correct and complement each other. 

options:
archetypical sample is played a module: 
	1. (synthesized speech saying 1-2-3-4, digital speech vs analog speech)
	2. Steve Reich out of sync pattern
	3. sample 
	
> Is the same sample played by tape or not?

Experiments

Interface


|=========|
| ooo *** |  <— module's interface
|=========|
|         |
|_________|
|•  ___  •|
|  o_=_o  |  <— cassette tape
|__/___\__|     interface
|o|<<|>|[]|
|=========|

  FLAKES


Key speech sample: In-side/out

Samples.png

       |-----"inside" (digital sample on module)-----|         |----"out" (on tapeloop)----|

Modifiying, testing & prototyping

20191119 153708.jpg
Adding pitch control

















FLAKES

Fully assembled
detail of the built-in module
LFP 19.jpg
LFP detail 03.jpg


FLAKES is an audio playback device that combines the functionalities of an analog cassette tape player and a digital sample playback module 1. Merged together in the case of an old desktop cassette recorder, this hybrid machine allows both different audio playback techniques to consolidate each other’s technical limitations, make use (and misuse) of their capabilities in order to emphasize their ‘unique’ characteristics 2. By connecting the available outputs to inputs and using the adjustable knobs on the interface, the user has the options to mix, modify and let the samples from both analog and digital sources interact with each other to create new, unexpected sounds.

The starting point for making this device was to somehow ‘reveal’ the similarities of the inner workings between the digital software-based module and the analog origins of sample playback technique by using cassette tape loops 3. With the idea of combining both playback techniques, I explored each unique characteristics, technical limitations, and their potentials to function within a hybrid in order to create a new interface where they could work together, influence and even fight each other. Like an audible ‘internal dialogue’, switching between intuition and reason.


1: The modular synthesizer is a type of synthesizer, which exists in both physical and virtual forms, consisting of separate specialized modules. The modules are not hardwired together by the manufacturer but can be connected with patch cords, a matrix patching system, or switches by the user to create a patch. Source: Wikipedia)
2: Despite both only being capable of playing lo-fi samples (Analog low fidelity: hiss, fluctuations in tape speed, limited audio frequency range / digital low fidelity: low bitrate, dithering, and limited audio frequency range.), the analog device can make recordings and play them back directly and the digital module's behavior is fully programmable, allowing to make use of feedback, phasing, gate triggers, pitch control functions, and configurable functionalities as desired and more.
3: In a tape loop, the sound is recorded on a section of magnetic tape and this tape is cut and spliced end-to-end, creating a circle or loop which can be played continuously.)

How it works

A speech sample (saying IN-SIDE OUT) is cut into pieces so the separate words can be divided to the digital module (programmed onto) and analog tape loop (recorded onto its magnetic tape). While the analog tape loop is prominent and continuously plays the same slice, the digital module runs a program that allows the recorded sample to (start playback on a trigger and) jump between different starting positions and loop sizes start playback. Played together, random flakes and new combinations of the separate words are constantly being generated in real-time. They correct and complement each other, making new combinations of the 3 words: IN-SIDE-OUT.

On how it's presented

For this piece, the exploration of these combined functionalities and capabilities as a hybrid was the starting point for a demonstration in the form of a performance. Starting as a simple demonstration of its functions, leading up to a complex soundscape and work with what arises; using a cybernetic 4 composition methods like planned unpredictability to steer through the chaos.

4: Cybernetic music – whether it is produced vocally, with instruments or electronically – is not initially "composed" and practiced. It arises from the interplay of merged control loops setting a process into motion. In this instance, selected data – such as instructions and/or electronic signals directed to an information-processing memory (man, machine) – become particularly important. This composite of systems partially based on feedback gives life to a kind of educational process, which – in contrast to conventional processes – can be entirely autonomous. Source: Roland Kayn - https://kayn.nl/)

Research: starting point

The starting point of this research was an analysis of the Meergranen 5 module, originally designed as a sample playback device to function within a modular Eurorack 6 setup. While testing its capabilities, a lot of its technical limitations were exposed: the module could only hold a preloaded 4-second sample in a low-resolution audio quality (8000Hz). Besides that, the experience of being new to this technology, electronics, and programming, it frustrated me that I couldn't comprehend what was happening inside this module and what caused these limitations. Instead of opening it up (I just manually assembled and soldered it), I had to connect this PCB full of weird electronic components to a computer to see what complex code it was running to 'just play a crappy sample'. But I noticed it could do very interesting things too; it allowed input signals to modulate the playback speed, and influence other behaviors and get unexpected results.

Similarities During my research, I noticed the similarities between the playback technique of an analog cassette tape loop and the software-based sample module. Unlike the digital module, the mechanism of the cassette tape player shows how it works at first sight: while physically running, it plays the sample over and over when it encounters the recording on a certain position on the tape 7. Its technique seems transparent; it looks like it has nothing to hide. It comforts because we are familiar with it and understand it because it's visually present 8.

I realized that in a way, it mimics what happens inside the 'black box' 9 of the digital module. To play a sample in a loop: the microcomputer runs a certain code that contains the converted data of a digital sample (converted into hexadecimal numbers). When it encounters a certain position, it plays the sample over and over again. With these findings, I made an inventory of each unique characteristic, the potentials of both playback techniques and their technical limitations and research on how they could work together, influence and fight each other. I started to write new and alter existing code to create the tools to construct the hybrid device so I could explore it more when interfacing it myself.

5: Module designed by Dennis the Bel that was based on the Grains by Ginko Synthese that runs on an Arduino Nano)

6: Eurorack is a modular synthesizer format originally specified in 1996 by Doepfer Musikelektronik. It has since grown in popularity, and as of 2018 has become a dominant hardware modular synthesizer format, with over 5000 modules available from more than 270 different manufacturers ranging from DIY kits and boutique, cottage-industry designers to well-known, established synth mass-manufacturers like Moog and Roland.

7: In music, tape loops are loops of magnetic tape used to create repetitive, rhythmic musical patterns or dense layers of sound when played on a tape recorder. Originating in the 1940s with the work of Pierre Schaeffer, they were used among contemporary composers of 1950s and 1960s, such as Steve Reich, Terry Riley, and Karlheinz Stockhausen, who used them to create phase patterns, rhythms, textures, and timbres. Popular music authors of 1960s and 1970s, particularly in psychedelic, progressive and ambient genres, used tape loops to accompany their music with innovative sound effects. In the 1980s, analog audio and tape loops with it gave way to digital audio and application of computers to generate and process sound.

8: One can argue that the cassette tape's mechanism and recording method on magnetic tape is highly complex and mystical as well. By all means, we are just used to it since it has been around. So it might be a difference in current technical knowledge. But there's a difference in visibility and sense of control seeing a mechanism run in front of your eyes or having to rely on the fact that a certain code is running on a micro computer.

9: A black box is a complex system or device whose internal workings, circuits (hardware), and codes (software), are hidden.

Research: main goal

The main goal of my research was to somehow 'reveal' what's happening inside the digital module by showing the similarities to the analog origins of the sample playback technique by using cassette tape loops. Here, the cassette tape is deployed to elucidate what a sample loop is: a seemingly stable mechanism that is fairly transparent in how it works. The digital function is, in contrast, somehow hidden and mysterious in what it will do. Besised that, once uploaded, the code can't be retrieved from the device.

By combining these techniques, the resemblances between the inner workings of the two playback methods somehow seem very logical at first sight. One plays a piece of magnetic tape, the other plays a piece of code in a loop. Over and over again. But both techniques and interfaces offer unique features that can be combined so the machine could have an "inner dialogue", correcting, complimenting, almost discussing each other's limitations and capabilities. Almost as if this device is being self-critical and tries to come to terms with itself. The visible aspect of the hybrid device functions as a window with the blinds are open: it offers a peek inside but it still raises a question of what's happening inside. As a way to gain interest by showing the first glance and generate curiosity being showing and hiding something. This way, the visual aspect creates comfort and novelty: the analog as the striking presence to draw attention, the digital as the hidden mystery which can raise the question of whether we should care how things are implemented inside. And why should we care as long as it works?


On the choice of archetypical narrated-style speech:
Working with speech samples for the demonstration gave the device human characteristics. The narrated character of the speech sounds calming and, at first, comforts. We recognize this mode of speech when receiving instructions from a navigation system, for instance; or from a mentor who will lead you in the right direction, which we can follow blindly. As the vocals are processes, language moves from being an interface to become an instrument. From the structure and an unknown system.


About the sonic Image:
To support this concept, I chose to work with a speech sample IN/SIDE OUT to make a distinction between what is happening 'inside' the module (software playback method is invisible) and what is happening 'outside' (playback method is visible). "In-side" sounds boxed (hidden inside the black box) "out" sound spatial, reverberated (outside the black box)

Flakes: Manual

Mark - Front.png Mark - Back.png

Presentation: Input/Output @ The Player

On the night of Dec 12th we presented out modules at De Player.


LFP deplayer 12.jpg

Live sampling with 2 devices.

Flakes: code


#include <stdint.h>
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/pgmspace.h>

#include "sample.h"

#define LED_PIN     13
#define SPEAKER_PIN 11 

#define KNOB_1  (0)
#define KNOB_2  (1)  
#define KNOB_3  (2)   
#define INPUT_3 (3)   

volatile uint16_t sample;
volatile uint16_t loop_start;
volatile uint16_t loop_length;
volatile uint16_t index_bounds;
volatile uint16_t loop_overflow;

volatile boolean gate;
volatile boolean gate_prev;

byte lastSample;

void startPlayback()
{
    pinMode(SPEAKER_PIN, OUTPUT);

    // Set up Timer 2 to do pulse width modulation on the speaker pin.
    // Use internal clock (datasheet p.160)
    ASSR &= ~(_BV(EXCLK) | _BV(AS2));

    // Set fast PWM mode  (p.157)
    TCCR2A |= _BV(WGM21) | _BV(WGM20);
    TCCR2B &= ~_BV(WGM22);

    // Do non-inverting PWM on pin OC2A (p.155)
    // On the Arduino this is pin 11.
    TCCR2A = (TCCR2A | _BV(COM2A1)) & ~_BV(COM2A0);
    TCCR2A &= ~(_BV(COM2B1) | _BV(COM2B0));
    // No prescaler (p.158)
    TCCR2B = (TCCR2B & ~(_BV(CS12) | _BV(CS11))) | _BV(CS10);

    // Set initial pulse width to the first sample.
    OCR2A = pgm_read_byte(&sound_data[0]);

    // Set up Timer 1 to send a sample every interrupt.
    cli();

    // Set CTC mode (Clear Timer on Compare Match) (p.133)
    // Have to set OCR1A *after*, otherwise it gets reset to 0!
    TCCR1B = (TCCR1B & ~_BV(WGM13)) | _BV(WGM12);
    TCCR1A = TCCR1A & ~(_BV(WGM11) | _BV(WGM10));

    // No prescaler (p.134)
    TCCR1B = (TCCR1B & ~(_BV(CS12) | _BV(CS11))) | _BV(CS10);

    // Set the compare register (OCR1A).
    // OCR1A is a 16-bit register, so we have to do this with
    // interrupts disabled to be safe.
    OCR1A = F_CPU / SAMPLE_RATE; // 16e6 / 8000 = 2000

    // Enable interrupt when TCNT1 == OCR1A (p.136)
    TIMSK1 |= _BV(OCIE1A);

    lastSample = pgm_read_byte(&sound_data[sound_length - 1]);
    sample = 0;
    sei();
}

void stopPlayback()
{
    TIMSK1 &= ~_BV(OCIE1A); // Disable playback per-sample interrupt.
    TCCR1B &= ~_BV(CS10);   // Disable the per-sample timer completely.
    TCCR2B &= ~_BV(CS10);   // Disable the PWM timer.
    digitalWrite(SPEAKER_PIN, LOW);
}

void setup()
{
    Serial.begin(9600);
    pinMode(LED_PIN, OUTPUT);
    digitalWrite(LED_PIN, HIGH);

    startPlayback();

    loop_start  = 0; 
    loop_length = sound_length;
    gate = false;
    gate_prev = false;
}

// This is called at 8000 Hz to load the next sample.
ISR(TIMER1_COMPA_vect)
{
    if(sample >= index_bounds)
    {
        sample = loop_start;
    }
    else if((sample < loop_start) &&
            (sample >= loop_overflow))
    {
        sample = loop_start;
    }
    else if((gate == true) &&
            (gate_prev == false))
    {
        sample = loop_start;
    }
    else
    {
        OCR2A = pgm_read_byte(&sound_data[sample % sound_length]);
    }
    gate_prev = gate;
    sample++;

}

void loop()
{
    loop_start = analogRead(KNOB_1) / 1024.0 * sound_length;
    loop_length = (analogRead(KNOB_2) + 1) / 1024.0 * sound_length;
    OCR1A = (512.0 / (analogRead(KNOB_3) + 1)) * (F_CPU / SAMPLE_RATE);
    gate = analogRead(3) >> 9;  // 10 bits in. gate < 512 == off, gate >= 512 == on

//  can be up to 2x sound length. the more you know.
    index_bounds = loop_start + loop_length;
    Serial.println(loop_length);
//  this will set the overflow length. take the loop overflow into account when checking the loop boundaries
    if(index_bounds > sound_length)
    {
        loop_overflow = index_bounds - sound_length;
    }
    else
    {
        loop_overflow = 0;
    }
}

User:Markvandenheuvel/process