~ICMC 2015 - Sept. 25 - Oct. 1, 2015 - CEMI, University of North Texas The Free sound object enables users to easily query and download audiofiles from the Freesound database [8]. The constructor for the Free s ound object takes three forms. A single integer argument uniquely identifies a particular sound in the database. A single string argument is used to query the database and automatically return the highest-ranked result. Otherwise the argument is a dictionary containing the search query and other options such as minimum and maximum file duration and selection parameters. Once an audiofile has been loaded from the database the functionality of the F ree s ound object mirrors the Sampler object. The SoundFont object provides basic support for loading sets of samples that adhere to the General MIDI specification, giving easy access to common synth sounds. t 2 3 2.3 Synthesizers Gibber includes a variety of pre-built synthesis objects with varying degrees of complexity. The most basic, Synth, comprises an oscillator and an envelope. The Mono object is a three-oscillator monosynth with a 24db resonant filter, while the FM object provides simple two-operator FM synthesis with an envelope controlling both output amplitude and the modulator index. A software emulation of the Roland TR-808 drum machine is also available, providing a synthetic counterpoint to the sample-based Drums object. 2.4 Audio Effects Gibber's selection of audio effects includes filters, delay, reverb, distortion, bit-crushing, flanging, chorus, vibrato, ring 1 modulation, etc.; most work in either mono or stereo. Every 2 audio generator has a built-in array of effects applied in series 3 to the generator's output. Convenience methods add effects to 4 this array, remove effects by name or by number in the effects 6 chain, or remove a particular matched object. The Bus object 7 can easily create parallel effects chains. 8 9 10 2.5 Bussing, Grouping and Soloing The Bus object simply sums its inputs and then routes them to another destination, typically either an effect or Gibber's master output. Busses also have panning and amplitude properties that can be modulated and sequenced. The Group command takes an existing set of synthesis objects, disconnects them from whatever busses they are currently connected to and routes them all into a single bus. This can be used to quickly apply a single instance of an effect to a mix of sound sources, as opposed to creating separate copies of the effect for each individual ugen. The s olo function mutes all unit generators except those passed as arguments to the function. Repeated calls to solo can reintroduce elements to a live performance as they are added to the argument list. A call to soolo with no arguments unmutes all previously muted objects. 2.6 Speech Synthesis and Vocoding The Speech object controls a speech synthesis algorithm. Users can enter English text and customize its pitch and intraword spacing. A background thread then renders text into the buffer of a Sampler object for playback and manipulation. The Vo code r object operates via dual banks of band-pass filters; the first analyzes the frequency content of an input modulator signal, while the second applies imparts the resulting spectrum on an input carrier signal. The Robot object is a vocoder with a PWM polysynth as the carrier and a Speech object as the modulator, producing classic robot voice effects. robot =-Roboto().say.seq([ 'this','is','a','test' ], 1/2 ).chord.seq( Rndi(O,8,3) ) This example uses a different word every half note as the modulator, simultaneously triggering a new chord (three random notes from Gibber's global scale object) as the carrier. 3. MUSICAL NOTATION IN GIBBER Gibber offers multiple paradigms for representing musical concepts such as pitch and rhythm, including both raw numeric values (e.g., Hertz, ms) and terminology from Western music theory (e.g., C4, half note). 3.1 Rhythm and Meter Gibber's master C1 ock object defaults to 4/4 meter at a tempo of 120 beats per minute. Users can easily change these values, and such changes can be scheduled over time. // set clock to 90 beats per minute Clock.bpm = 90 // set time signature to be 6/8 Clock.timeSignature = '6/8' // change tempo every four measures Clock.bpm. seq( [ 90, 120, 140 1, measures ( 4 ) Gibber users can indicate timing and duration using notations typical to Western music. For example, 1/ 4 indicates a quarter note, 1/13 indicates a thirteenth note, and 1 represents a whole note. Any valid JavaScript numeric expression is accepted, enabling math such as 10*3/16. Gibber also enables specifying duration by number of samples, so there is a maxMeasure s property of the master clock which sets the threshold between interpreting small numbers as counting measures and large numbers as counting samples. For example, with the maxMe a sure s property set to its default value of 44, the duration 3 4.5 would indicate thirty-four whole notes plus a half note, while the duration 50 would indicate 50 audio samples. To indicate a number of measures above this ceiling, the measure s function return the number of samples corresponding to a given number of measures at the current tempo. Users who wish to avoid this amibiguity can set maxMe asure s zero and then use explicit function calls -51 -
Top of page Top of page