|
|
Line 1: |
Line 1: |
| = Livecoding Narratives (Non-Fiction) =
| | That's way the bsetest answer so far! |
| (things that I really did, reconstructed from memory)
| |
| | |
| == "endless interesting claim generator" ==
| |
| * launched impromptu
| |
| * opened included speech example
| |
| * noted calls used to make speech play
| |
| * created a new text buffer
| |
| * added expression to speak the string "cats" immediately
| |
| * ran that expression a few times
| |
| * defined a loop duration (1 sec)
| |
| * created temporally recursive function using duration (loop)
| |
| * started recursion (stays running unless otherwise specified)
| |
| | |
| * modified loop to use "cats"-speaking expression
| |
| * changed "cats" to a random selection of "cats" "hats" and some other words
| |
| * defined two empty lists: subjects, modifiers
| |
| * added a few silly plural nouns to subjects list
| |
| * added a few silly prefixes to the modifers list
| |
| * modified speaking expression to concatenate a random element of modifiers, a hypen, and a random element of subjects
| |
| * extended loop duration a bit
| |
| * heard "mega-cats", "ultra-packets", "super-hackers" and others
| |
| * noted overly-repetitive sound
| |
| * noted some awkward pauses in speech for the hyphen
| |
| * added some adjectives to the modifiers list
| |
| * heard "alternative-pods", "fluffy-networks", "negated-cats" occasionally, subject to chance
| |
| * modified loop to use faster tempo but only initiate next utterance every 4 beats
| |
| * defined an empty drum part function
| |
| * added call to drum part every beat
| |
| * evaluated midi program change message to put two melodic drums on midi channels 1 and 2
| |
| * added expressions to drum part function to play both drums rhythmically, as a function of beat number mod 16
| |
| * created empty claims list
| |
| * added a few silly claims that could be made about the random items being named
| |
| * modified speech expression to say "[prefix]-[pnoun] are [claim]"
| |
| * heard "interesting-packets are controversial", "sly-waffles are desirable" and others in random rotation
| |
| * factored out speech part as a separate function
| |
| * modified loop to call speech part less often (to avoid excessive overlapping of utterances)
| |
| * added several new prefixes, nouns, and claims
| |
| * noticed that there was now a long time between adding a term to a list and hearing it in a random utterance
| |
| * created an empty function called low part
| |
| * registered calling of low part in the loop
| |
| * added expression to periodically low part of play a long, random note from a given scale
| |
| * evaluated expression to change midi program for channel used by low part to a string sound
| |
| * added a few higher, decorating notes to low part
| |
| * added more prefixes, nouns, and claims
| |
| * created an empty lead-in list
| |
| * added "and", "but", "however" to lead-ins
| |
| * modified speech expression to begin utterances with a lead in
| |
| * heard "and inquisitive-hackers are to be desired, but quasi-cats are unrelated" and others
| |
| * added new empty functions high part and interesting part
| |
| * registered these functions to be called in loop (with mask based on beat number)
| |
| * added playing of note with random pitch and duration selection to each function
| |
| * evaluated midi program change expressions to give each part a distinct voice
| |
| * added several more items to the lists used in utterance construction
| |
| * stopped main loop
| |
| * added checks for beat being greater than various specific values for all non-speech parts
| |
| * restarted loop
| |
| * heard a single utterance with no background music
| |
| * heard several utterances over low part
| |
| * heard several more utterances over low part and drum part
| |
| * (and so on)
| |
| * added a new melodic part called another part
| |
| * added several more pieces for utterance construction
| |
| * removed several silly terms, keeping the more intelligent sounding ones
| |
| * noticed that the utterances were more interesting if they seemed to express a personal belief
| |
| * added "i feel", "you shouln't believe", "i know" to lead-ins list
| |
| * heard "i feel random-constructions are unending"
| |
| * noticed utterances were particularly interesting when they seemdd to express a personal belief about the system itself
| |
| * added more references to words related to generative content, repetitiveness, randomness, and intelligent machines
| |
| * tweaked parameters for a few more hours
| |
| * stopped main loop
| |
| * fell asleep (the sun had risen a while ago)
| |
| | |
| == "bilingual livecoding" ==
| |
| * launched impromptu
| |
| * opened included osc example
| |
| | |
| * created a new text buffer
| |
| * launched puredata
| |
| * opened included osc example
| |
| * created dumpOSC object connected to a routeOSC object
| |
| * added /pitch to router, connected to a number box for visualization
| |
| * created a sendOSC object, disconnected from the rest
| |
| * added several boxes to allow sending a random midi pitch value via the /pitch address to the rest of the program
| |
| * watched received number change in the number box
| |
| * added expressions back in impromptu to send more random pitches to the pd program
| |
| * added a sine oscillator controlled with frequency controlled with data from /pitch messages
| |
| * added a new address /bang to the router and used this to control a line generator
| |
| * instructed line generator to ramp from 1 to 0 over 125ms, used this as amp for the oscillator
| |
| * connected dsp chain to dac
| |
| * added expressions in impromptu to send the /bang message
| |
| * heard pulsing notes on demand
| |
| * added /decay and /slide patterns to router
| |
| * added logic so that values sent to /decay would adjust the length of the line triggered by /bang
| |
| * added logic so that values sent to /slude would adjust a new line used to slide the pitch of the main oscillator
| |
| * crashed pd (accidentally)
| |
| * recreated pd program from memory, cleaner this time
| |
| * created temporal recursion loop in impromptu
| |
| * started recursion
| |
| * added expressions to send /bang rhythmically
| |
| * heard regularly pulsing notes
| |
| * adjusted note length via /decay from impromptu
| |
| * added expressions to send numbers from a global list of pitches
| |
| * heard repetitive arpeggio
| |
| * added expressions to populate new pitch sequence from random notes from a random chord in a given key every 16 notes
| |
| * heard shifting arpeggio of interesting notes
| |
| * replaced sine oscillator in pd with more complex expression involving lfo-controlled phase shift and wrapping to create overtones
| |
| * added freeverb unit to dsp chain
| |
| * added short delay to right channel
| |
| * modified new sequency selection to happen on the 1st, 32nd, and 56th step of a 64 step pattern
| |
| * added bandpass vcf with sweep triggered by /bang and lengthened by /decay to dsp chain
| |
| * added /q pattern to router and used it to control resonance of filter
| |
| * added expressions in main loop in impromptu to periodically update /q
| |
| * added /kick and /snare patterns to router
| |
| * created simple kick drum by sweeping the freqency of a sine oscillator by the fourth power of a line generator (with 10Hz high-pass filter after)
| |
| * connected kick drum to dsp chain
| |
| * clicked it a few times, heard the drum
| |
| * tweaked line generator
| |
| * connected kick drum with /kick pattern messages
| |
| * added expressions in impromptu to send /kick message every 4 steps
| |
| * added expressions in impromptu to send /snare message rhythmically in a typical snare pattern
| |
| * created simple snare drum in pd by ramping the volume of filtered noise, triggered by /snare messages
| |
| * connected snare drum to dsp chain, immediately heard decent rhythm
| |
| * tweaked both drum rhythms in impromptu
| |
| * added masks to /pitch and /bang messages
| |
| * added occasional octave-up and octave-down notes
| |
| * adjusted overall tempo, exploring half and double speed
| |
| * commented out /kick messages and set /snare to fire every step
| |
| * heard snare roll
| |
| * set /kick to fire every step
| |
| * heard heavy drum roll
| |
| * set masks back to original rhythmic pattern, re-evaluated
| |
| * heard nice, sharp transition to main rhythm
| |
| * tweaked numbers in pd
| |
| * crashed pd (by attempting to save!)
| |
| * recreated entire patch from memory
| |
| * tweaked numbers in pd
| |
| * tweaked numbers in impromptu
| |
| * experimented with different oscillators and lfos in pd
| |
| * saved everything without crashing this time
| |
| * stopped main loop
| |
| * fell asleep (the sun had risen a while ago)
| |
| | |
| == "music without sound" ==
| |
| no time to write this up right now, but, at a high level...
| |
| * created an impromptu program to send /kick /snare /bass and /lead osc events, with reasonable parameters and patterns
| |
| * created a processing program to visualize these events with lines, circles and boxes with exponentially decaying size from trigger time and position given by pitch
| |
| * did the above stuff in parallel between the two languages, using the processing visualization to tweak patterns and pitches in impromptu (without every listening to them)
| |
| | |
| | |
| == "music without sound, with sound this time" ==
| |
| no time to write this up right now, but, at a high level...
| |
| * started teaching a friend how to use chuck
| |
| * found example of how to wait on osc events
| |
| * loaded the impromptu program from "music without sound"
| |
| * modified it to send osc events to friend's laptop
| |
| * coached friend in mapping osc events to reasonable synthesis methods
| |
| * heard decent music come from an event stream that was design only on the basis of how it looked (in terms of code and event visualization, but never sound)
| |
| | |
|
| |
|
| = Livecoding Narratives (Fiction) = | | = Livecoding Narratives (Fiction) = |