Category:LFP: Difference between revisions

From XPUB & Lens-Based wiki
mNo edit summary
Line 130: Line 130:


   sox your_sound_file.wav -t u8 -c 1 -r 8000 output.wav  
   sox your_sound_file.wav -t u8 -c 1 -r 8000 output.wav  
   xxd -i out.wav > sample.h   
   xxd -i output.wav > sample.h   





Revision as of 10:32, 20 September 2019

Low Frequency Publication

Materialising the Blackbox

Example module with input, adjustment and output sockets


Introduction

In this special issue we will explore the physicality behind slick black boxes as for example found in everyone's pockets today. Be it hardware or software. The goal is to make the interactions, interfaces and connections explicit through hands-on research and play. Informed by the fact all modern day electronics still adhere to the paradigm of modularity, like the earliest computer designs we will collaboratively build one or more devices that explore notions of modularity, complexity/simplicity, interfaces, darkpatterns, input/output while explicitly giving insight into the black box, but this time including a manual.

To encourage affection with the materiality of the blackbox we will create our own. Starting of by constructing the building blocks of a synthesizer, allowing the creation of complex outputs by interfacing/combining relatively simple operations. As a clear framework we will start off by working with sound, your fastest sensor. Compatible with the possibly familiar 'Eurorack' format (as developed by Doepfer) we will be constructing several electronic modules that allow the output of one module to be the input for the next. Expanding upon the original discrete, or analog approach, each of our modules offer a programmable interface, eventually allowing for interfacing beyond the blackbox.

As single modules perform one job and one job well, you will have to anticipate and even require the output of someone elses module in order for yours to work. Coinciding with your research we will create one or several 'outputs' consisting of an interface, electronics and a manual.

Guests

Dennis de Bel Dennis de Bel (1984, NL) is an applied artistic researcher, educator, radio amateur (call sign PD0WNED). In his practice he positions himself as producer, consumer, observer and distributor of critical knowledge focussed on technology. His work has been exhibited at Siggraph Los Angeles, Transmediale Berlin and hosted workshops in various collaborations at, for example, ISEA Hong Kong, Radical Networks New York. He participated in the Relearn summer schools and Libre Graphics Meetings besides being a guest tutor at the Design Academy Eindhoven and the Willem de Kooning Academy Rotterdam University of Applied Science. In 2017 he co-founded Varia, a Rotterdam based space for developing collective approaches towards everyday technology. De Bel holds a MA from the Piet Zwart Institute (NL) and most recently (Jul-Dec 2018) participated in the artist in residency program of the Institute for Provocation in Beijing.

http://dennisdebel.nl/

Olli Aarni

de Player

Martin Howse

Schedule

The program consists of three main sections, building, interfacing and coding and going public. Bring headphones to every class!

Building

Getting your hands dirty.

Week 1 - Sept 17

Today you will become modules of a modular synth! First we need to construct them though:

Meergranen-v1-done.jpg

Construct: Meergranen (Optionally + LFO)

PAD: https://pad.xpub.nl/p/lfp1 (Keep build notes, address points of improvements, happy accidents and tips)

GIT: https://git.xpub.nl/XPUB/special-issue-x

BUILD MANUAL: File:Manual-meergranen.pdf (20MB PDF)

 BEFORE YOU POWER YOUR MODULE, LET ME TAKE A LOOK

FIRMWARE: Arduino Firmware (ZIP file)

SOFTWARE: Arduino IDE + Driver

PLEASE BRING A MINI USB CABLE (with power + data lines) and Headphones (3.5mm jack)

HOMEWORK: Play with the various Arduino Firmware (ZIP file) found in that zip file. Note some codes might need an external trigger (control voltage, 0-5v) in order to produce sound. Other codes might only produce triggers (no sound), used to sequence/trigger other modules. Make notes on the pad above what you find interesting, what functionality you would like to have, what sounds?

CUSTOM SOUNDS: http://pzwiki.wdka.nl/mediadesign/Category:Lfp#Adding_custom_audio_samples

Week 2 - Sept 23,24,25,28

Workshop with Olli Aarni

(also PSU?)

28th September Excursion to Dutch Modular Festival

Week 3 - 1 Oct

PSU

Week 4 - 8 Oct

Building prototype frontpanels and 'test' case


Drip.jpg

Interfacing

Basics of arduino, interfacing with others, desiging interfaces (frontpanels) SOX

Laser cutter instructions (PDF)
Frontpanel source files (vector)

Week 5 - 15 Oct

Workshop with Olli Aarni (14, 15, 16) Arduino Basics

Week 6 - 5 Nov

DIWO - Interfacing with your neighbours

Week 7 - 12 Nov

Develop interactions

  • DE PLAYER workshop Thursday 28.11

Publishing

Going public, manual

Week 8 - 19 Nov

Week 9 - 26 Nov

Week 10 - 3 Dec

Presentation at de Player

Resources

Software

Arduino Firmware (ZIP file)

Hardware

Modules - Mult

The simples module, just a front panel and jacks connected to each other (tip to tip, sleeve to sleeve). Creating a passive (non-powered) crude kind of mixer! Insert one signal and gets repeated 10x (each plug will reduce the signal output by half though). For audio and cv.

Modules - Arduino Tool 'Meergranen'

NOTE: there is a bug in the IDC connection, pin 7 and 8 need to be bridged if you want to power the module through usb (for testing) WARNING: the output port is UNPROTECTED agains overcurrent/voltage/reversepolarity. Use it as OUPUT and dont connect it to another output for example.


Adding custom audio samples

Download Arduino firmware examples here: Arduino Firmware (ZIP file) Indie the zip file you will find grains-sounds-master.zip, unzip and flash one of the arduino sketches found in the 'patches' folder. Grains-sounds is a basic sample player that allows you to manipulate pitch, start and end of a sample (using the potentiometers or control voltage). To add your own samples, just replace the 'sample.h' file with one of your own. To prepare an audio sample for this firmware:

-install sox (and Audacity ) (mac: install homebrew and then install brew install sox)
-make 3 second (loop) of a sound in Audacity for example
-convert stereo sound to mono
-export as wav file (16bit)
-in Terminal, navigate yo your exported soundfile and convert it to 8bit, 8000hz: (alternatively use the script below to convert your 16bit wav file exported from Audacity directly to sample.h!)

 sox your_sound_file.wav -t u8 -c 1 -r 8000 output.wav 
 xxd -i output.wav > sample.h   


you end up with a hexadecimal encoded soundfile now in an array. C code needs to know the length of the array before hand: at the bottom of sample.h it says the length of the file, for example 27278.

in sample.h search and replace the first line:

 unsigned char out2_wav[] = {

with, note you have to change the sound_lenght into that of your sample:

 #define SAMPLE_RATE 8000
 const int sound_length=27278;
 const unsigned char sound_data[] PROGMEM= {
Script

You can use this bash script to automatize the creation of sample.h (instructions below):

#!/bin/sh
# Prepares a sample.h file
# sed not used, should just werk (TM) everywhere
# Usage: ./samplify.sh my_sample.wav
# Or you can install samplify.sh in your ~/bin and call it
# from anywhere you like

# Convert original soundfile and create sample.h
# A temp file is needed oftherwise xxd is unable to generate 
# sample length information?
sox "${1}" -t u8 -c 1 -r 8000 /tmp/sample.wav
xxd -i /tmp/sample.wav > sample.h
rm /tmp/sample.wav

# Extract sample length
SAMPLE_LEN=$(tail -1 sample.h | cut -d ' ' -f 5 | tr -d ';')

# Inject SAMPLE_LEN in new file header
NEW_HEADER="#define SAMPLE_RATE 8000
const int sound_length=${SAMPLE_LEN};
const unsigned char sound_data[] PROGMEM= {"

# Remove first line of sample.h
echo "$(tail -n +2 sample.h)" > sample.h

# Prepend new header to sample.h
echo "$(echo "${NEW_HEADER}"; cat sample.h)" > sample.h

The latest version will be updated on the trimester's git repos! https://git.xpub.nl/XPUB/special-issue-x/src/branch/master/utils/samplify.sh

How to use the script: Copy paste the text above in a texteditor (raw text, not Textedit) and save as 'samplify.sh'. Open a terminal and make the file executable:

 chmod +x samplify.sh

Put your wave file in the same directory as samplify.sh and in terminal run:

 ./samplify.sh yourfile.wav

This will generate the sample.h file needed for the sample player arduino firmware as in the 'memphis' example. Just replace the sample.h in that folder with your newly generated one. Flash the arduino with the memphis code again and it should now play our own custom sample!

Pro tip: 27278 bytes is about the maximum lenght of sample storage on arduino nano (+ the script that plays the sample). If sound sample is a bit too long/big you can simply speed it up in Audacity, the script allows for pitch bending, so you can make up for the increase in speed. Possiblt there is some head room in the sample rate (8000hz) in the above example. Reducing this will result in smaller file, but lower quality (resolution). Possibly the playback speed will increase as well (since the script anticipates the sample rate of 8000hz, ofcourse this is adjustable by yourself).

Bill of Materials
Label Part Type Properties
for arduino Male Headers 1x16
for arduino Female Headers 1x16
C1 104 Capacitor 104, 100nF package cap-pth-small2; variant pth2
J1 - A2 3.5mm Switch Jack size 3.5mm; variant 1; part # PJ301M-12
J2 - A1 3.5mm Switch Jack size 3.5mm; variant 1; part # PJ301M-12
J3TRIG - A3 3.5mm Switch Jack size 3.5mm; variant 1; part # PJ301M-12
J4 - A0 3.5mm Switch Jack size 3.5mm; variant 1; part # PJ301M-12
J4 OUT 3.5mm Switch Jack size 3.5mm; variant 1; part # PJ301M-12
JP Header 5x2 package 2x5-ra; variant ra
LDR1 Photocell (LDR) resistance@ dark 300 kOhms@ 10 seconds; package THT; resistance@ luminance 16 kOhms@ 10 lux
LDR2 Photocell (LDR) resistance@ dark 300 kOhms@ 10 seconds; package THT; resistance@ luminance 16 kOhms@ 10 lux
LDR3 Photocell (LDR) resistance@ dark 300 kOhms@ 10 seconds; package THT; resistance@ luminance 16 kOhms@ 10 lux
LDR4 Photocell (LDR) resistance@ dark 300 kOhms@ 10 seconds; package THT; resistance@ luminance 16 kOhms@ 10 lux
LED1 Red (633nm) LED package 3 mm [THT]; color Red (633nm); leg yes
LED2 Red (633nm) LED package 3 mm [THT]; color Red (633nm); leg yes
LED3 Red (633nm) LED package 3 mm [THT]; color Red (633nm); leg yes
LED4 Red (633nm) LED package 3 mm [THT]; color Red (633nm); leg yes
NANO Arduino Nano (Rev3.0) type Arduino Nano (3.0)
P1 = A2 Rotary Potentiometer (Small) package THT; size Rotary - 9mm; track Linear; maximum resistance 10kΩ; type Rotary Shaft Potentiometer
P2 = A1 Rotary Potentiometer (Small) package THT; size Rotary - 9mm; track Linear; maximum resistance 10kΩ; type Rotary Shaft Potentiometer
P3 = A0 Rotary Potentiometer (Small) package THT; size Rotary - 9mm; track Linear; maximum resistance 10kΩ; type Rotary Shaft Potentiometer
R1 0Ω Resistor bands 5; package THT; tolerance ±5%; pin spacing 400 mil; resistance 0Ω
R2 0Ω Resistor bands 5; package THT; tolerance ±5%; pin spacing 400 mil; resistance 0Ω
R3 1kΩ Resistor bands 5; package THT; tolerance ±5%; pin spacing 400 mil; resistance 1kΩ
R4 1kΩ Resistor bands 5; package THT; tolerance ±5%; pin spacing 400 mil; resistance 1kΩ
R5 1kΩ Resistor bands 5; package THT; tolerance ±5%; pin spacing 400 mil; resistance 1kΩ
R6 10kΩ Resistor bands 5; package THT; tolerance ±5%; pin spacing 400 mil; resistance 10kΩ
R7 1kΩ Resistor bands 5; package THT; tolerance ±5%; pin spacing 400 mil; resistance 1kΩ
R8 10kΩ Resistor bands 5; package THT; tolerance ±5%; pin spacing 400 mil; resistance 10kΩ
R9 150Ω Resistor bands 5; package THT; tolerance ±5%; pin spacing 400 mil; resistance 150Ω
S1 SWITCH-MOMENTARY-2 package tactile-pth; variant pth
Shopping List
Amount Part Type Properties
2 Male Headers 1x16
2 Female Headers 1x16
1 Capacitor 104, 100nF package cap-pth-small2; variant pth2
5 3.5mm Switch Jack size 3.5mm; variant 1; part # PJ301M-12
1 Header 5x2 package 2x5-ra; variant ra
4 Photocell (LDR) resistance@ dark 300 kOhms@ 10 seconds; package THT; resistance@ luminance 16 kOhms@ 10 lux
4 Red (633nm) LED package 3 mm [THT]; color Red (633nm); leg yes
1 Arduino Nano (Rev3.0) type Arduino Nano (3.0)
3 Rotary Potentiometer (Small) package THT; size Rotary - 9mm; track Linear; maximum resistance 10kΩ; type Rotary Shaft Potentiometer
2 0Ω Resistor bands 5; package THT; tolerance ±5%; pin spacing 400 mil; resistance 0Ω
4 1kΩ Resistor bands 5; package THT; tolerance ±5%; pin spacing 400 mil; resistance 1kΩ
2 10kΩ Resistor bands 5; package THT; tolerance ±5%; pin spacing 400 mil; resistance 10kΩ
1 150Ω Resistor bands 5; package THT; tolerance ±5%; pin spacing 400 mil; resistance 150Ω
1 SWITCH-MOMENTARY-2 package tactile-pth; variant pth

Modules - Low frequency oscillator

Modules - Power Supply

Modules - ESP8266wifi

Frontpanels

Vector template for the laser cutter

Cables

Flat cables with IDC connectors ('eurorack power cables') (Lint- or Bandkabel in Dutch)
Patch cable (mono TS (Tip-Sleeve)3.5mm Male Jacks) ,

Glossary

Patch Cables

Tipringsleeve.png





Control Voltage - or CV

Breadboard - or solderless-breadboard is a plastic board with interconnected holes for prototyping electronic circuits using jumper cables instead of (semi) permanent solder.

Soldering Tin - combination of low melting point metals and resin flux. Sticks to copper, various metals and itself (not to aluminium, stainless steel, plastic, wood etc.)

PCB - Printed Circuit Board - Fiberglass (FR4) coated with copper. Etching away the copper allows for creating traces for electrical circuits. Professionally made boards are silskreened with soldermask (only exposing the places where solder is allowed and protecting the fragile copper traces + lettering for component placement.

Resistor - Slows down electrons, reducing current and thus voltage (Ohms Law, U=IxR) by converting it to heat. Units in Ohms > 1k = 1 kilo Ohm = 1000 Ohm, 0r = 0 Ohm (can be used to bride traces on a PCB)

LED - Light emitting diode, Has polarity: a positive (anode) and negative (cathode) leg. The longest leg is the positive one, keep this in mind when placing the component!

LDR - Light Dependant Resistor, a variable resitor based on light. The more light the lower the resistance and vice versa. Also called light sensor. Units in Ohms

Potentiometer - Rotary or sliding (like on audio mixers) variable resistor. Resistance is changed by turning the knob. Units in Ohms

Ceramic Capacitor - No polarity. Stores enegry until full and then releases it (like a bucket). Can be used for filtering signals (high frequencies will chose to go over a capacitor, low frequencies rather choose to go through a resistor). Units in Farad (pico, nano)

Electrolytic Capacitor - Has polarity. Stores enegry until full and then releases it (like a bucket). (high frequencies will chose to go over a capacitor, low frequencies rather choose to go through a resistor)Units in Farad (mirco, milli)

IDC Connector - Special 'solderless' connectors for ribbon cable, press fit. Use vice, not hammer, be gentle on the brittle material.

Heatshrink - Tube that shrinks when heat is applied (use: lighter, paintstripper, soldering iron), handy for isolating wires, contacts and blocking external light when using LDRS

Ribbon cable - Also called flat cable, multiple parallel conducting wires. (Dutch: lint- or bandkabel)

Vactrols - Vactrols turn voltage into resistance. The 'hotter' the signal, the lower the resistance. Consist of one LED and one LDR, applying voltage to the LED creates light, influencing the resistance of the LDR.

Shops

Up until a few years ago it was not strange to bike a few minutes to a nearby electronics shop to buy a headphone jack input socket or battery holder. In 2015 the last electronics (component) shop of Rotterdam closed (DIL). Many preceded (2014 Van Der Bend) and many followed, leaving us with just a handful of physical shops to get (unwanted) advice and goods at a premium price without waiting for yellow envelopes from China. Besides not being able to physically examine the goods for sale (will it fit?) more important issues arise. Beyond supporting your local entrepreneur, the decline of DIY shops like the above signify a certain level of consumerism, painfully acknowledging planned obsolesce over DIY repair culture.

Local Shops

https://www.radiotwenthe.nl/ The Hague

https://www.hf-electronics.nl/ Haarlem

https://www.baco-army-goods.nl/ Ijmuiden

http://www.radiopiet.nl/ Arnhem

https://www.tinytronics.nl/ Eindhoven, semi public shop, sells Chinese knock-offs at a premium..

https://www.hobbyelectronica.nl/ Online only, quick delivery, expensive-ish

https://www.kiwi-electronics.nl/ Online only, quick delivery, expensive, recently burned down, sells adafruit stuff etc (expensive-ish)

European Shops

https://www.tme.eu/nl/en/ Member of the Shenzhen (China) Chamber of Commerce. That says everything, please forget box pushers like conrad, farnell, digikey who will rip you off

China

(Almost) EVERYTHING mentioned above comes from Shenzhen, China...so aliexpress.com (or taobao....good luck!). It even pays of to fly to HK, get a SZ port visa and buy what you need in case you want bulk items.

Pads

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

Reading/Watching/Listening List

http://www.gieskes.nl/ databending circuitboard designs, owns his own pick and place machine, music on tape, vinyl, concrete and what not.

https://www.ciat-lonbarde.net/ taking modular synths in some direction

http://www.gjp.info/ originally radio amateur drummer, applying knowledge of electronics to make incredible noise

http://www.electronicpeasant.com/ discovered by accident, but most 'personal homepages' of early synth enthusiast will publish in this manner

https://www.mengqimusic.com/ friend from Beijing offers some nice interfaces

https://www.errorinstruments.com/ your local eurorack pusher, love bbq in Shenzhen, has infinite energy to make some seriously interesting devices

https://www.muffwiggler.com/forum/index.php the forum where all the action takes (took?) place. Terrible name, terrible place, all the goods you need, though scattered over 90+ forum pages, enjoy!

Media in category "LFP"

The following 170 files are in this category, out of 170 total.