I’ve been focusing on cleaning up and commenting the example patchers I’ve been presenting in class, leaving less time to write blog posts about them. So, I’m listing them all here, with just a short annotation about each one. Download them, poke around, and read the comments – which serve as little mini blog posts.
>> Chord-coll.maxpat > coll object, symbols as data types
>> Chord-coll-2.maxpat > iter object, pack object, send and receive (s and r); shows how to take a list from coll and store it in a table
>> ChordPlayer.maxpat > incorporates Chord-coll-2 into RandomCounter.maxpat so that you can choose a chord from coll, store it in a table, and then play it back using counter or random objects sending index locations to the table.
>> NoteStoragePlay.maxpat > gate object (slightly different from ggate); replaces the chord-coll selecting and table storing mechanism from ChordPlayer with a way to store MIDI notes into a table from MIDI keyboard input, and then play them with counter or random objects.
>> NoteStoragePlay2.maxpat > midiin and midiout objects; same as NoteStoragePlay, except that all MIDI messages from external MIDI keyboard are also sent out to a software synth for playback. Double-click on midiout to choose an output MIDI destination.
>> NoteStoragePlay3.maxpat > modifies NoteStoragePlay2 so that MIDI through (via midiin and midiout) is disabled when recording MIDI notes to be stored in a table; uses a ggate to disconnect midiin to midiout whenever record toggle is on.
>> drunkExample.maxpat > drunk object; one type of weighted random distribution
>> TableSplit.maxpat > split object; weighted random distribution by storing multiple copies of data to increase likelihood of that data being chosen, and using split to introduce decision making based on range of data. In this patcher, split can introduce rests into the note playback stream.
>> TableCompare.maxpat > less than object (<); weighted random distribution; same audible effect as TableSplit, but uses a second random object feeding less than (<); result of less than determines if a bang will be sent to random object to trigger an index location being sent to table (and note playback). It’s a bit more direct in terms of specifying a value to < that represents the chance of note being played, instead of extending the range of a random object beyond the range that split is looking for.
>> Musical Time Lectures, part 1, part 2, and part 3 > video lectures describing how to use musical time (note values) and tempo in beats per minute in Max, with the transport and global transport.
>> MusicalTime.maxpat > transport, global transport, specifying time in note durations, tab object; example patcher used in Musical Time lectures
>> SyncRhythm.maxpat > loadbang and loadmess; demonstrates a global metro to synchronize duration changes in multiple metro objects, like in Ableton Live; shows how to use loadbang and loadmess to initialize data values when loading a patcher
Leave a Reply