(sonicarts) midi with a limited focus

Since we are only working with MIDI for a short time in this class, we will keep our focus on a very limited set of MIDI commands:

  • Noteon/Noteoff
  • Continuous Controller
  • Pitch Bend

Noteon/Noteoff messages include data for the number of the MIDI note pressed, and the velocity that it was pressed with. Keep in mind that although software may display MIDI note number as a pitch, the computer stores the information as a number. Most of us think of how hard we press a key (or hit a drum), but MIDI measures how fast we press the key. It’s cheaper to detect than force.

Pitch Bend sends a command that corresponds to the amount of deviation, or movement of the pitch bend wheel/joy stick. The actual pitch deviation is determined by that data being applied to the pitch bend maximum range that is usually set for each synthesizer program (or patch). The pitch bend control sends a percentage of change, which is then applied to the maximum possible value on the receiving end.

Continuous Controller (CC) messages are intended to be used to send performance control information while a note is being held. There are a maximum possible 128 continuous controllers, but in practice only a small subset are used. The most common:

  • 1: Mod Wheel
  • 2: Breath Control
  • 7: Volume
  • 10: Pan
  • 64: Sustain (a switch, 0 – 63 = off; 64 – 127 = on)

MIDI devices don’t have to respond to all of these controllers, nor do they have to send these CC numbers to represent the specified data types listed. The five listed values, however, are commonly used for the listed functions. Software may mask the CC number and simply show your the associated name.

(sonicarts) midi intro

I have a previous post that outlines MIDI information. Jeffrey Hass has a full chapter as part of his online Introduction to Computer Music. (pages 1 – 5, 11 and 12 are the most applicable to what we are doing)

For our purposes (a short intro), it is most useful to understand the following concepts:

  • devices
  • ports
  • channels
  • programs/patches/instruments
  • commands
    • noteon/noteoff
    • continuous controller
    • pitch bend

midi devices

A MIDI device is anything that can send and receive MIDI commands. From a practical standpoint, a device must include at least one MIDI port. Many current devices, like USB keyboard controllers, have multiple MIDI ports for sending and receiving data.

midi ports

A MIDI port can be either a physical, 5-pin MIDI connection, or a logical (computer defined) data connection made through a USB or other connector. Each port can communicate data on 16 MIDI channels.

midi channels

A MIDI channel is a logical data path for communicating information. All 16 channels travel on the same physical cable, but use channel status messages to sort data. A device that is listening to MIDI channel 1 will only respond to data that is sent with that MIDI status address, ignoring messages with other channel addresses. Using MIDI channels allows for routing commands to specific instruments.

midi programs/patches/instruments

A MIDI program/patch/instrument is a definition of how to play specific sounds on a MIDI device. One program could play a piano sound; another program could play a saxophone sound. The three terms can be used interchangeably, but they can also have specific meanings for a particular device or piece of software. For our purposes, Kontakt uses the term instrument to define each sampler device in its rack.

midi commands

Most MIDI commands have accompanying data ranges from 0 – 127 (7 bits allows for 128 possible values).

Noteon and noteoff commands are the most commonly used MIDI messages. A noteon command consists of the MIDI channel, noteon command, note number, and key velocity (how fast the key was pressed, corresponding to force). The data that you will focus on consists of the note number and key velocity. A middle C struck with full force would give a note number of 60 and a key velocity of 127. Lower key velocities would result from slower key strikes. A MIDI instrument has to be programmed to adjust amplitude in response to key velocities. Almost all synthesizer/samplers bypass the noteoff command in favor of a noteon command with a key velocity of 0. For example, a note number of 60 with a velocity of 0 would turn off a sounding middle C.

Continuous Controllers (CC) send data values that can change any number of instrument parameters. A CC command consists of the MIDI channel, CC command, CC number, and CC value, with our focus on the CC number and value. The Mod Wheel is a commonly used CC, assigned the controller number of 1 almost universally. You have to program an instrument to respond to specific CC numbers. CCs are used to change parameters while a note is sounding.

Pitch Bend can be thought of as a special type of CC, although it has its own MIDI command. It allows for pitch changes to a note while sounding, up or down. You must program an instrument to respond to pitch bend, and by how much (how much is usually specified in semitones, or half steps).

(sonicArts) multitrack concrete music, 2014

this assignment document is also available on the course site on Blackboard

due 11/4, at the beginning of class


Building on your knowledge of sample processing learned in your two-track collage, and DAW experience from your negative space project, create a two-minute work of concrete music using classic musique concrète techniques and granular synthesis. You may use sounds from your 2-track collage, your soundwalk, your negative space project, sounds from online libraries, sample CDs in Bracken (Education Resources Desk), and/or other recorded sounds of your own choosing.

Use an audio editor (Audition or Audacity) and Cecilia to process your samples, and use Logic Pro to assemble your piece. You may use any plugins in Audition or Audacity that you have used before (such as EQ, normalization, amplitude gain change, brick wall limiting), plus delay and reverb plugins in Digital Performer. You may also use limiter and EQ plugins in DP.

Like your 2-track collage, work in a gestural style, where development and variation of source material is of primary importance. Use Logic Pro like a tape deck, using “clock” time as your ruler, not metrical time.

For pieces of this length, form still doesn’t really need to be much of a concern. Almost anything that works moment to moment will work for two minutes. You are expected to take advantage of the multi-track capabilities of Logic Pro to create layers of activity. It is also expected that each layer of activity will be comprised of multiple tracks. Slow moving background material, derived from the same source material used for quicker gestures at any given point, can help to define a section as much as fast-moving foreground gestures.

Your project should use a 44.1 kHz sampling rate, and 24-bit resolution.


  • Length must be at least two minutes. Try not to go much longer than two minutes. Bloat will not help your grade.
  • Use at least three different sound source types, i.e., three different sounds of dishes breaking is one sound type (breaking dishes). You would still need two other types of sounds. Feel free to use more sound types, but remember that development of your sounds through processing is a significant goal of the project, and a significant portion of your grade.
  • Build gestures and layers from multiple sound clips in multiple tracks. Although there is no minimum required number of tracks, textures in the range of six to ten tracks will be likely.
  • Keep your files organized! Keep copies of original and Audition/Cecilia-processed files in subfolders of your Logic Pro folder for backup purposes. Any audio file you use in Logic will be imported to the audio files folder of your project, as long as you set your project settings correctly.
  • The finished project should be primarily gesture-based (Some repeated patterns are ok, especially repeated gestures with variations, but don’t use Logic loops set to repeat 50 times.
  • Title your work.

 grading criteria

  1. Creativity in manipulating your sound material, particularly with regard to creating gestures and motives, and using multiple tracks to create interesting gestures and textures. (40 pts)
  2. Diversity of sound material, and required number of sound sources. (5)
  3. Use of Logic Pro to automate mix parameters (Pan, Level, and plugin parameters). (20)
  4. Meeting the required length (2 minutes; definitely not shorter; probably not much longer). (10)
  5. Overall sound quality (15), which includes:
    - proper amplitude levels (no clipping, maximize peak signal to noise ratio)
    - quality of edits (no pops or clicks!!!!)
    - no distortion or over-amplitude samples
  6. Organization of files (5).
  7. Following the turn-in procedure (5).

100 points total

turn-in procedure

  • Name your Logic Pro project folder with your name and “MultitrackConcrete.” (kothmanMultitrackConcrete)
  • Your project folder should also contain any Audition/Audacity/Cecilia (A/A/C) files you created (including original source material). Using sub-folders is highly recommended. These subfolders for source and A/A/C-processed files can be at the level below your project folder.
  • You can turn in your project folder to me via flash drive, external hard drive, iLocker, or Dropbox. There is a good chance your project will be too large for Blackboard, and downloading from Bb takes too much time. If you use iLocker or Dropbox, compress your project folder, upload it, and email me the link to download it.
  • Your project folder must contain a mixed (bounced) stereo master, at the same directory level as your Logic Pro data file.


(sonicArts) cecilia basics and an intro to filter warper

cecilia basics

Cecilia 4 basics gives you an overall rundown of Cecilia preferences and operation. It covers the basics, and is a useful place to return to when you get stymied by the program.

filter warper

If you want to do simple time and pitch changes on an audio file, use the FilterWarper module.

Launch Cecilia4. The editor window opens. Close the editor window, and under the File menu, choose Modules > Time > FilterWarper.

The FilterWarper is designed to produce the smoothest time and pitch shifting of any granular operator in Cecilia. Therefore, you don’t usually want to change any setting beyond the output duration, transposition, window type, and index. Generally, I like to use a Hamming window to produce less granular artifacts, like clicking or other noise.

Remember that the Index controls the playback location in the soundfile. If you want to play through the soundfile from start to finish in the forward direction, leave the index running from lower left corner to upper right corner. If you want to play the soundfile backwards, set the Index function to run from the upper left corner to the lower right corner. You can also set the index to play a portion of the soundfile by starting and/or ending somewhere other than a corner.

If you want to experiment with other parameter settings, start with the number of overlaps. If you bring this value down to 1, you will hear amplitude modulation – a tremolo effect. More overlaps create an amplitude output that more smoothly tracks the original amplitude envelope of the source file. More overlaps also thicken the sound and increase the output amplitude overall. You can adjust the output gain in the output section. Try different values and listen to the result.

Depending on the source input, changing the window size (in samples) may create audible results. Window deviation is a maximum random amount to add or subtract from the specified window size. If you are hearing regular amplitude modulation that you wish to randomize, apply a larger random deviation.

(sonicArts) granular synthesis tools, cecilia and paulstretch


Outside readers will look at the title of this post and tell me, correctly, that Paulstretch isn’t a granular synthesis program. True, but we will still use it as part of our added toolbox. Paulstretch is an effect available to use in Audacity. It has only two controls: one for specifying the duration factor (5 means “5 times the original duration”), and one for specifying time resolution. Smaller time values give you better rhythmic resolution (time) but worse frequency resolution. You can experiment with this setting. If you have a very active sound (changes a lot, quickly), then try a smaller time resolution to capture that activity. For sounds that don’t change that quickly, you can use a long time resolution and better frequency resolution. You should experiment by trying medium to longer time resolutions on active sounds, and vice versa, to hear how this parameter affects the output sound.

Paulstretch uses a processing algorithm that is optimized for extreme time stretching of a sound, 8x and above, and for use on pitched input.


You can download Cecilia4 for Mac and Windows from Google Code. There is a version 5 of the software, but it does not include the Filter Warper, which is central to a lot of granular processing. Cecilia is written in Python, and looks almost identical on Mac and Windows. It can be a little clunky in some areas.

To hear audio in Cecilia, you should go to Cecilia > Preferences… and click on the speaker icon. Choose “PortAudio” for your audio driver, and whatever interface device you want to use for listening (builtin, MOTU, AudioBox, etc.). I know that I always tell you to use Core Audio on a Mac, but Cecilia is the exception.