User:Markvandenheuvel/specialissue10: Difference between revisions
Line 214: | Line 214: | ||
----- | ----- | ||
===Pitch control=== | ===Pitch control=== | ||
<gallery widths=250px heights=200px perrow=3 caption="sunflowers are groovy"> | |||
File:20191119_153708.jpg|Adding pitch control | |||
File:20191215 144305.jpg|Tapeloop gate-trigger | |||
File:20200220 171912.jpg|300px | |||
Revision as of 18:05, 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
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
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
General definition of Interface: https://www.lexico.com/en/definition/interface
Analog Reel-2-Reel Tape loop interface: https://www.dutchmodularfest.com/sebastian-scholz
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
- Possibilities and limitations of Arduino
- Introduction to Arduino coding (5V signal as a control voltage)
- converting custom samples by using script
- 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
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.
File:MVDH speech-to-midi-counting.mp3
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
PADS
https://pad.xpub.nl/p/olliworkshop
https://pad.xpub.nl/p/xpub1temp
Experiments
INTERFACE
|=========| | ooo *** | <— module's interface |=========| | | |_________| |• ___ •| | o_=_o | <— cassette tape |__/___\__| interface |o|<<|>|[]| |=========| FLAKES
Pitch control
- -----
- =How it works=
- ===On how it's presented:===
- ==Research: starting point==
- ==Research: main goal==
- ==Manual==
- =Presentation: Input/Output @ The Player=
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; } }