lecture notes • Spring, 2015
Wiimote demo: Bluetooth connection, OSCulator=>Reason or Max
Meta-events: events about events. How do you implement them in Max?
Use Objects: metro, tempo, sliders, dials, lists of numbers, random, number boxes with limits and offsets
Tempo, accelerate & ritard
Range, also restrict to key, scale, chord
Tendency masks: "clouds" of random numbers controlling function to keep it within certain limits, and changing the limits over time
Crescendo and diminuendo, using velocity (control over individual notes, but only one velocity byte per event) vs. volume (continuous control of level, affects all notes on that MIDI channel)
Harmony: distance between notes. Does it follow key, scale, or chord?
Counterpoint: how musical voices move against each other, parallel, opposing, combination
Orchestration: use multiple Reason modules on multiple MIDI channels to layer different sounds or create an orchestra.
Density: growing/shrinking chords or clusters using module's polyphony setting
Designing an instrument:
What gestures will control it?
What sensors do you need for those gestures?
What will need to be done with the sensors to make them "playable", e.g., mounted on wood, put in tubes, duct-taped to your head?
How do the sensors translate into switch contacts, or 10KΩ resistors, or +5V DC sources, to use with the Arduino? Will there need to be supplementary electronics?
What processes will be applied to the MIDI data coming from the Arduino in Max?
What will the instrument sound like, and how will the sound be controlled by the gestures?
Assigning tasks in the group:
Specifying and obtaining sensors.
Specifying materials to make sensors playable, i.e., the human interface.
Wiring the sensors making the wiring robust.
Adding circuits to process sensor data.
Writing the Max patch to process the data.
Designing the Reason patch.
Teams for first project:
1 • Greg Bento, Jake Katsiaficas, Andrew Jarowenko
2 • Cody Chen, Kurt Oleson, Michael Ferdico
3 • Michael Nuzzolo, Trevor Vassallo, Thomas Klimek
Lab safety and rules: Wear goggles when using any power tools. Don't use power tools when you’re alone.
Don’t use tools you don’t know how to use, especially soldering irons, jigsaw.
Unplug soldering irons after use. Unplug glue gun after use.
Don’t overuse hot glue. Heat destroys components.
No spray painting in the building: take objects outside and use cardboard backing so paint doesn’t get on pavement or grass.
Phil Acimovic's helpful MAX tips are here.
Toggle, push-button, momentary, lever, magnetic
Rotary encoder: has two different switch contacts, “0” and “1”. Speed of encoder determined by how fast switch contacts are made; direction determined by order of contacts.
Continuous=resistance or current generation
Some, like rotary or slide potentiometers, can be connected directly to the Arduino. Others need buffering, amplification, and/or filtering to provide usable signal.
• Force-sensing resistor=pressure. Button-type or strip.
• “Softpot”, flat variable resistor, ribbon or circular
• Joystick=two-dimensional variable resistor
• Flex sensor=bending angle
• Infrared distance sensor=from about 1.5-10 inches. Available in various ranges. Get too close and the field inverts.
• Photocell: presence or absence of light
• Accelerometer: 1-axis, 2-axis, 3-axis. More sensitive ones can measure tilt (responding to gravity)
• Piezo electric foil=striking or bending force. High voltage.
• Color and gesture
• Myelogram: measures muscle tension
Joe's PowerPoint is here.
Reason NN19 module: samples, with many of the same filtering and envelope parameters as Subtractor.
Multi-sampling: using different samples to cover an instrument's range.
Aligning pitches in sample map—setting root note. Keyboard tracking off=no pitch change.
AIFF or WAV audio format. Samples can be mono or stereo. Can also record your own samples.
Instrument and SFX libraries are in Documents>Sounds.
Self-contain setting: if you include samples that are not part of the Reason library, you have to open this item and check all samples, so they will be saved with the Reason rack.
Akai MPD26 and Reason
Using MPD with Reason--you can now control anything on the panel with the proper controller numbers (tables on machines)
Multiple modules in Reason: addressable by MIDI channel, different pads/controllers on MPD
Using Editor: select channel (CC=common) and function for each slider, knob, and pad. "Extra" button lets you customize labels. Name the preset by clicking on it.
Save Set As... with your name.
30-day trial download here.
Launch Max. Before opening a patch, check Max's MIDI Setup: "in a" should be MPD or keyboard, "out a" is "from MaxMSP1". Disable all other inputs and outputs
Launch Reason. Set Advanced MIDI Preference a to "fromMaxMSP1". Now Max will communicate with Reason.
Edit and locked mode: command-E toggles, or click on lock icon.
object box = a function
start typing, list of objects appears. To list them all, Max Help: objects A-Z or by function
Number box = for monitoring.
Can choose to display MIDI note numbers OR names (get info)
Patch cables connect everything.
notein: port a, note#, vel, ch
makenote: note#, vel, duration in msec. Has to then go to a noteout. test for not-zero [ != 0 ]
cntlin: controller value, controller #, channel (if no channel, will accept all. If wrong channel, won't respond)
Sliders (0-127), can change (Get Info)
Pipe: number of arguments is number of messages passed, with last one being delay time in ms. "0 0 0 time" will delay a MIDI message (zeroes are placeholders).
Random n=puts out random value 1-n
Metro=clock, number of milliseconds. Start and stop with toggle at input.
Select: waits for value, passes 1.
What are synth parameters? In Reason's Subtractor module:
Filter freq and resonance
LFO rate and depth
Mapping keyboard physical gestures to musical ones: mod wheel and velocity
Mod wheel to pitch vibrato, volume vibrato, timbral change, envelope
velocity to amplitude
velocity to envelope attack time
velocity to filter envelope (brightness)
Using keyboard sliders: refer to controller chart for Subtractor. Novation keyboards have these slider assignments in Bank 15:
Mod Wheel = 1 • Volume=7 • Amp Env Attack=73 • Amp Env Release=72
Filter Freq=74 • Filter Env amount=18 • Osc Mix=107 • Osc 2 fine tune=104
LFO 2 amount=111 • LFO rate=26
Save the whole Reason rack (.reason) in your own folder in "Documents" folder, and on Google Drive.
Familiar vs. unfamiliar user interfaces for music
Familiar: keyboard, guitar, drums, malletboard, violin, woodwind, brass. Advantage, people already know how to use it. Doesn't require new skills, practicing, rethinking how you make music.
Most commonly in electronic world: keyboard. Used with Moog synths, Switched-on Bach. Became glorified organs with thousands of stops, people play all of them the same way.
But, can extend technique to play keyboard in new way that has different expressive parameters (aftertouch, wheels, pedals).
Adaptive: or extended, like keyboard with pedals; stringless guitar; wind controllers with more buttons and levers than a conventional wind instrument; violins with sensors on the bow, etc.
Unfamiliar: like Theremin: hard for guitar players used to articulating with right hand. Using different parts of the body, or in different ways. Finger position or movement on surface or in free space. Relative positions of fingers -- spread or angle. Bend of joints: wrists, elbows, knees. Pressure on surface. Requires practice and mastery! Think of music in different ways than simple button-pushes/discrete events.
Out jack connects to In jack using MIDI cable. Speed is limited to 31,250 bits/sec, about 1000 commands/sec. Other transports (USB, Firewire, Ethernet) have no speed limit.
Virtual MIDI connections (inside operating system, using software synths) have no speed limit.
External devices communicate with computer using MIDI-USB interface or just USB, in which case computer must have driver software that recognizes the device. We have custom driver for Max that recognizes Arduino.
MIDI command structure
Real-time control language.
Some commands three-bytes, some two, some one, some longer.
Best expressed in hexadecimal notation: 0-255 decimal ($)=00-FF Hex
Numbers below 128$ (80H) are data bytes. Numbers 128$-255$ are command bytes.
Channels: second half of command byte, 0-F=read as 1-16. Different insruments respond to different channels. In Reason, each module is on its own MIDI channel.
Note on (9n) + note number + velocity, off (velocity). Decimal ($): 144-159
Note off (8n)+ note # + velocity. Duration is time between on and off. 128-143$
9n with velocity zero is equivalent to note-off
Controller (Bn), controller number, value. Some continuous (wheel, slider, breath, foot control), some switched (sustain pedal). 127 of them, not all defined. Used for any kind of continuous command. 176-191$
Pitchbend: (En) + LSB + MSB. Like controller but its own command, double precision. 224-239$
Mono Aftertouch or Channel Pressure: (Dn) + value. 208-223$
Poly aftertouch (An) + note # + value. 160-175$. Reason doesn't respond to it.
Program change (Cn) 0-127. Reason doesn't respond to it. 192-207$
Two metaphors/paradigms for musical instrument:
1) Instrument metaphor:
Causes a sound to be made
Control of pitch(es)
Expressivity takes many forms:
Pitch articulation (more than just turning on a note)
Amplitude articulation (initial and subsequent)
2) Controller/Mixer metaphor:
Sequence or pattern generated automatically or by a single gesture.
Gestures control the parameters of the sequence as it plays.
Selection, adjustment, nudging, changing volume/balance/timbre on the fly
Basic things to think about when designing an instrument:
Depth & Virtuosity: As you learn it, you get better and can do more with it.
Is there something interesting to look at? The audience needs to pay attention, be able to connect what they see visually with what they hear.
1) What is
music? Working definition: Sound that is created deliberately, and has interest
as sound. "Sound with intent."
2) The elements of music: melody, rhythm/tempo, harmony, timbre/orchestration.
3) What's a gesture controller? Something that responds to a physical action by one (or more) human beings. Examples: Squeeze, blow, pluck, bow, hit with hand or foot or stick, press with fingers.
An electronic musical instrument uses gestures to control electronic circuits.
Can be simple (direct) like theremin or complex (through microprocessor) like Wriggle Screamer
Computers provide ultimate flexibility: they can produce any sound, and interpret any gesture however we like, once we get the gestural information into the computer.
The physical aspects of an instrument no longer have to have any relationship to the sounds it makes.
Links in the chain:
• Electronic sensors to detect gestures: touch, pressure/force, movement, acceleration, distance, displacement
• Framework to hold the sensors and make them playable.
• Device to turn data from sensors into MIDI: Arduinos
• Software to interpret and process the MIDI data: Max
• Synthesis software to turn the processed MIDI into sound: Reason, Max/MSP
• Audio system to produce the sound
What we will do in the class:
• Study existing electronic instruments, see them demonstrated live and on video
• Conceptualize physical gestures as they can be used to make music
• Learn MIDI, what the commands mean, how they can be used to control music
• Learn Reason, a software synthesis system, and how to use its parameters
• Translate gestures into electronic form, using sensors, and then translate them into MIDI using Arduinos and MIDItrons
• Look at data from other real-time control devices—Bluetooth and USB—and translate it into MIDI
• Process real-time MIDI data with MAX
• Build new controllers and systems
• at the end, do a public demonstration
• Course pack (buy at Gnomon Copy), What’s MIDI? (buy at Music office), reference books, manuals and catalogs in lab, on comptuers, and on Web site.
• Lab: in Curtis (ready soon). Electronic parts and tools, sensors, software, mechanical parts, hand and power tools for woodworking and assembly.
• Machine shop in Bray, if you have training. Laser cutter available—we provide AudtoCAD files and raw material.
• NEW: 3D printers in CEEO, now at 200 Boston Ave. Available to all with simple training.
No class Monday—next class is January 21.