Presentation is loading. Please wait.

Presentation is loading. Please wait.

Copyright © 2011 by Denny Lin1 Computer Music Synthesis Chapter 7 Based on “Excerpt from Designing Sound” by Andy Farnell Slides by Denny Lin.

Similar presentations


Presentation on theme: "Copyright © 2011 by Denny Lin1 Computer Music Synthesis Chapter 7 Based on “Excerpt from Designing Sound” by Andy Farnell Slides by Denny Lin."— Presentation transcript:

1 Copyright © 2011 by Denny Lin1 Computer Music Synthesis Chapter 7 Based on “Excerpt from Designing Sound” by Andy Farnell Slides by Denny Lin

2 Copyright © 2011 by Denny Lin2 Pure Data essentials The following is a collection of patches that implement essential concepts used for mixing, reading and writing files, and sequencing –7.1 Channel strip –7.2 Audio file tools –7.3 Events and sequencing –7.4 Effects

3 Copyright © 2011 by Denny Lin3 7.1 Channel strip These patches consist of various mixer controls: –Signal switch –Simple level control –Log law fader –MIDI fader –Mute button –Panning Linear, square root, cosine, and MIDI panner –Cross fader –De-multiplexer

4 Copyright © 2011 by Denny Lin4 Signal switch and direct level control Both of these patches control audio levels by multiplying the audio signal input These controls are prone to clicks and zipper noise, which is caused by sudden level value changes on an audio block boundary

5 Copyright © 2011 by Denny Lin5 Log Law Fader Sliders are linear (“lin”) by default. Can be changed to logarithmic (“log”) in the slider’s properties Half of the slider’s output range is compressed into the final ten percent of the movement range

6 Copyright © 2011 by Denny Lin6 MIDI data scaling MIDI controller messages are generally linear signals in the range of 0 to 127 Can be normalized by dividing by 127, or multiplying by 0.0078745 Normalized output may be: –scaled to a log curve –multiplied by 100, and converted to decibel scale via the dbtorms object (see fig. 7.6)

7 Copyright © 2011 by Denny Lin7 MIDI Fader The ctlin object connects the MIDI fader patch to an external MIDI device Only volume messages from channel 1 can control the spigot MIDI message is normalized (between 0 and 1), and transformed to an audio signal 2Hz low-pass filter used to smooth out fader

8 Copyright © 2011 by Denny Lin8 Mute Button and Smooth Fades Slider value (0 to 100) is in decibel scale Fader value is stored in cold inlet of * object Left inlet of * object gets inverted value of toggle switch Message data is transformed to audio signal and low-pass filtered to smooth the fader

9 Copyright © 2011 by Denny Lin9 Panning The purpose of pan control is to place a monophonic sound source within a listening panorama Different from balance, which places a stereo sound source fig. 7.10: Linear, square root, sine/cosine panning laws

10 Copyright © 2011 by Denny Lin10 Linear Panner Consists of two volume controls, one for each channel (signal source is monophonic) Fader smoothing achieved by converting messages to audio signal, and low-pass filtering Cold inlet control directly alters left channel output Right channel is controlled by the complement of the left channel control value Problem: When a signal amplitude level of 1 is sent, the perceived loudness at each channel is halved

11 Copyright © 2011 by Denny Lin11 Square Root Panner Similar to linear panner Takes the square root of control signals to produce panning that follows an equal power law Has a 3dB amplitude increase at the center position Problem: The square root curve is perpendicular to the x- axis when x is close to 0 and 1. The sound in one of the channels suddenly disappears at the slider’s extreme ends

12 Copyright © 2011 by Denny Lin12 Cosine Panner The curve makes a 45 degree angle approach at the edges Cosine and sine are easier to compute than square root Tends to mimic placement of sound source on a circle Problem: The response around center position not as desirable as square root panner

13 Copyright © 2011 by Denny Lin13 MIDI Panner Combines the MIDI fader (see fig. 7.5) with a cosine panner Pan information is sent to MIDI controller number 10 (64 is center position). Patch only responds to pan information on channel one

14 Copyright © 2011 by Denny Lin14 Cross Fader Used to smoothly transfer from one sound source to another by mixing them to a common output Two inlets are used for signal sources Third inlet controls the ratio of the mixture Can be used to control proportion of reverb effect, or to cross fade between two tunes Constant power fading versions using sine and square root functions are sometimes better

15 Copyright © 2011 by Denny Lin15 De-multiplexer Signal source selector to pick one out of several inputs to be routed to the outlet A number at the inlet selects and bangs the corresponding Boolean message list to the unpack object The signal~ and 80Hz low-pass filter objects are used to remove clicks

16 Copyright © 2011 by Denny Lin16 7.2 Audio file tools The following example patches can be used to record and playback.WAV or.AIFF files: –Monophonic sampler –File recorder –Loop player

17 Copyright © 2011 by Denny Lin17 Monophonic Sampler Abstraction used to record and play a few seconds of audio Sounds are recorded into a table that stores 88200 samples (2 seconds, given 44100 samples per second) First inlet gets signal Second inlet controls the gain (clicks are removed with signal and low-pass filter) A bang on the third inlet records the signal into the table A bang on the fourth inlet plays back the recording to the outlet Sampler can be used by connecting an adc~ input object, a gain slider, bang buttons to control record and playback, and a dac~ output object

18 Copyright © 2011 by Denny Lin18 File Recorder Fixed length file recorder abstraction Takes the recording length as first argument (sent to $1), and directory housing the file as second argument (sent to $2) Uses the writesf~ object which takes the signal, and three commands: start recording, stop recording (after delay of $1 ms), and name of file to write A counter tracks the number of times the file recorder was run, and appends the number to the filename via the %d A bang message is sent to the done outlet when the recording has ended. Recording is stopped by the delay object

19 Copyright © 2011 by Denny Lin19 Loop Player Use this abstraction to play a.WAV or.AIFF file endlessly The openpanel object provides a file dialogue to select a file to play The pack object takes the filename and the $0-a symbol as $1 and $2 items in the read message The soundfiler reads the sound file into the $0-a table. When complete, the number of bytes read is used to trigger a bang message to the tabplay~ object When done playing, the right outlet of tabplay~ sends a bang that is routed via spigot to trigger the tabplay~ object to repeat A zero received on the right inlet stops the spigot object from re-triggering the tabplay~; a one received on the right inlet triggers a bang to play the sound file

20 Copyright © 2011 by Denny Lin20 7.3 Events and sequencing The following example patches create time, event, and sequence triggers: –Time base –Select sequencer –Partitioning time –Dividing time –Event synchronized Low Frequency Oscillator (LFO) –List sequencer –Text file control

21 Copyright © 2011 by Denny Lin21 Time base This time base abstraction accepts beats per minute The control inlet activates the metro object, and resets the internal counter whenever the time base is stopped The second inlet takes beats per minute The third inlet takes the number of beats per measure (2, 3, 4, 6, etc) The fourth inlet takes the swing percentage, multiplied by the number of beats per measure, sent to the delay object before the counter increments fig 7.19: A more useful musical time base abstraction with BPM and swing

22 Copyright © 2011 by Denny Lin22 Select Sequencer This patch demonstrates that repetitive patterns can be generated with a time base, mod and select objects Uses the time base abstraction The mod object wraps the time base counter output to 8 beats, so events within the 0 to 7 range can be triggered A separate event at time=1024 can be triggered with the select object using the same time base Instead of bang boxes, note and frequency related objects can be triggered to generate repeating sequences

23 Copyright © 2011 by Denny Lin23 Partitioning Time Specific events at musical measure numbers can be triggered. This patch ignores events from time 0 to 127 using a chain of moses objects Given time at 208, the first moses object routes the time value to the second moses object Time value is shifted down, treating this section as if this were the beginning of the piece mod 64 creates 2 measures of 64 beats each, in the range 128 - 256 Event at time 208 is beat 80, which would be the second measure of the partitioned timeframe Each of these 64 beat measures can be further subdivided into 4 measures that each contain 16 beats. Each bang box marks the downbeat of the first of 4 measures

24 Copyright © 2011 by Denny Lin24 Dividing Time Output from the time- base can be divided to tell which measure the music is at The time base number is divided by the beats per measure value (2 or 4) Uses the int object to get whole measure numbers Uses the change object to remove repeating measure numbers

25 Copyright © 2011 by Denny Lin25 Event Synchronized LFO If the time base is to be used as a control signal, dividing the time base using change and int objects could result in several consecutive equal values Output from the Low Frequency Oscillators (LFOs) becomes choppy Using higher mod and / values fixes the problem fig. 7.23: Synchronous message LFOs

26 Copyright © 2011 by Denny Lin26 List Sequencer This list sequencer does not rely on a time base Uses relative time from a message list, so the list {61 0 60 500 59 500} means play note 61 at time 0, then note 60 at time 0 + 500, and note 59 at time 0 + 500 + 500 The list split 2 object processes two items at a time; the remainder of the list is sent to the cold inlet of the list append object First item (note number) is sent to the cold inlet of float object Second item (time value) is sent to a delay object that bangs the note number at the end of the delay time, sending output to the synthesizer The list append object is banged, sending the remainder of the list to the list split 2 object, which processes the next two items. Continues until list is empty fig. 7.24: An asynchronous list sequencer

27 Copyright © 2011 by Denny Lin27 Synthesizer Part The patch on the right half of fig. 7.24 is a monophonic synthesizer that accepts MIDI note numbers The phasor~ output is modified with a 400ms curved envelope fig. 7.24b: Monophonic Synthesizer

28 Copyright © 2011 by Denny Lin28 Text file control Text files can be used to store MIDI data. File contains note number and note duration data The notein object gets MIDI note numbers, and the stripnote removes 0 velocity notes. Note data is sent to the pack object’s hot inlet (first item) The timer object measures the time the note was pressed, and sends its output to the pack object’s cold inlet (second item) When the user clicks on start-record, the timer object is reset, the list accumulator is loaded with a bang, and the textfile writer is cleared using a clear message After the user has finished playing, the write button is banged so that the textfile object writes the performance data from the list append and list prepend set data into the text file using the textfile object. The name of the text file is specified by the write message object The load-playback button rewinds the textfile to the beginning, and sends it to the monophonic synthesizer

29 Copyright © 2011 by Denny Lin29 Fig. 7.25: MIDI Sequencer that uses text files to store and play data

30 Copyright © 2011 by Denny Lin30 7.4 Effects Two simple effects are introduced: –Stereo chorus and flanger effect –Simple reverberation Use these effects sparingly External mixers or plugins may already have better implementations of these effects

31 Copyright © 2011 by Denny Lin31 Stereo Chorus/Flanger Produces multitude of sound sources by doubling up several copies of sound using delays LFOs are always 1Hz apart, and vary between 1Hz and 5Hz Fig. 7.27 uses the stereo chorus sub-patch and passes the feedback, rate, and depth fig. 7.26: A chorus type effect fig. 7.27: Testing the chorus

32 Copyright © 2011 by Denny Lin32 Simple Reverberation Designed to mimic reverberating sounds on 4 surfaces Minimum delay should be at least a quarter of the reverb time To avoid phase cancellation and reinforcement between echoes: –Delay times in the delread~ objects should be prime numbers –Amplitude for each buffer output is scaled at different levels rev1~, rev2~, rev3~ are reverb abstractions fig. 7.28: A re-circulating Schroeder reverb effect


Download ppt "Copyright © 2011 by Denny Lin1 Computer Music Synthesis Chapter 7 Based on “Excerpt from Designing Sound” by Andy Farnell Slides by Denny Lin."

Similar presentations


Ads by Google