Music
Streaming
Or search for "Kirk Rader" on the music service you prefer...
Amazon Music
https://music.amazon.com/artists/B004L4HW52/kirk-rader
Amazon Music QR
Apple Music
https://music.apple.com/us/artist/kirk-rader/417090159
Apple Music QR
Spotify
https://open.spotify.com/artist/06lMz4EjJn3pYej2kGIL5t
Spotify QR
YouTube Music
https://music.youtube.com/channel/UCp__q4DYBXYhq9uiD2Y8vUg
YouTube Music QR
Background
I started creating electronic music on the West Coast of the US, in the "West Coast Style," long before I knew that there was such a thing. My musical tastes have always been outside the mainstream. The first album I purchased with my "own" money was a vinyl recording (there were no other commercially significant recording media for sale in the mid 1960's) of Schubert's Unfinished Symphony which I had worn the grooves out of by the time I turned 7 years old. When I was studying formal linguistics and teaching myself to program computers in my late teens and early twenties, I did so to a personal soundtrack that featured Lou Reed's Metal Machine Music (yes, the album consisting of 4 LP sides of electric guitar feedback and effects pedal noise that literally ended his career just as it was beginning to take off in the mid 70's and then went on to become the stuff of legends decades later).
My favorite composers include Tallis, Monteverdi, Vivaldi, Bach, Handel, Beethoven, Glass and Byrne as well as hard-core mid-century experimentalists like Stockhausen and Subotnick. If you have never heard any of my own stuff, consider the combination of those influences as fair warning.
Over the years I have used a variety of traditional instruments and electronic gear to make, er, um, "music?" Yes, let's call it "music."
Approaches & Techniques
My process for creating music has evolved as new technologies have become available, but conceptually is not all that different from how I started out as a composer. I have loved listening to many types of music all my life. The first album that I bought with my "own" money was a recording of Schubert's Unfinished Symphony. I had worn the grooves out of it by the time I turned seven years old. By the time I was in my late teens, I was writing papers for my degree in Formal Linguistics and, a couple of years later, teaching myself to program computers while listening to a personal soundtrack that featured Lou Reed's Metal Machine Music -- yes, the 4-LP sides' worth of guitar feedback and effects noise that ended his career just as it was starting to take off in the late 1970's. You will find strong hints of all those influences - classical and experimental music together with mathematics and a love of algorithms - throughout my musical oeuvre. To me, an analog synthesizer is a device for translating what are essentially mathematical formulas into acoustic impulses, which are occasionally and serendipitously esthetically pleasing (at least to someone with my extremely idiosyncratic tastes). Computer software makes that even more literally true.
Mostly Analog
The majority of my pieces are created using a process not very different from how I worked in the 70's. I usually begin with a concept for a modular synth patch. These are usually pretty basic notions of ways to connect (and sometimes cross-connect) modules in the signal and control paths, such as "use the interference pattern of two low-frequency oscillators to create a rhythm," "use pitch sweeps driven by an envelope generator on the inputs to a ring modulator to create dynamic timbre" and the like. I then simply play around with such patches -- changing the underlying wave forms, inverting the phase of some of the low-frequency oscillator signals, changing the base frequency relationships when using FM, and so on -- until I find something that appeals to my very idiosyncratic tastes sufficiently to be worth recording. I then repeat the same process to create multiple layers of sound for a given composition. Where I used a multitrack analog recorder back in the day, I now use Audacity to record each sonic layer. Finally, I align and trim the tracks, add fades and similar basic editing in the DAW to produce a final mix as a FLAC file.
Most of the time, when I "play" a piece during the recording process it is by adjusting potentiometers to alter the patch in real time. Often I don't do even that during the recording but, instead, allow the "logic" of a given patch to play itself out over time. When I use a keyboard at all when working this way, it is usually to provide trigger and gate voltages rather than to play "notes" in the traditional sense. One characteristic of modular analog synthesis is that small changes to a given patch can produce dramatic differences in the resulting sound. Multiple tracks on a given album may be the result of the process I just described, using relatively minor variations of a single patch.
An aspect of this approach is that there usually is neither a musical score in the conventional sense nor any way to recover the exact combinations of settings and initial phase relationships of the various modules contributing to a patch. Once a track is recorded, that recording is the only representation of that exact "composition" and there would be no way for me or anyone else to perform it again and get the same result. This is one of the features of "West Coast" analog electronic music that I find conceptually attractive. There is a complete break not only from traditional tunings, structures and forms but the totality of a musical composition created in this way is represented entirely by its acoustic signature and nothing else.
But More Than a Little Digital
All of that said, I have increased my use over the years of tools and techniques that simply did not exist when I was young. Some of the sounds on my albums were produced using completely digital synthesis. These are often in the form of digital audio samples or the output of VST plugins using software like Ableton Live and Sonic Pi. Using Ableton Live, I can play a keyboard (to within the very narrow limis of my skill) to produce more conventionally tonal music. Some pieces consist only of tracks recorded in this way, while others combine analog and digital sound sources in various ways.
For example, the two versions of Farandole Lamentoso on my album The Modern Temple of Amusement were created using a single Sonic Pi program generating output in two ways: the "8-bit mix" consists of a digital audio file generated directly by Sonic Pi using some of its built-in digital synthesizers. The "2600 remix" uses the Behringer 2600 as the sound source, driven by the same Sonic Pi program, but by sending a sequence of MIDI commands rather than generating digital audio directly. Because the 2600 is monophonic, the latter version required running the program multiple times with slight modifications each time to produce the MIDI sequence for each voice separately.
Another piece, Ghostly Reminiscences, on the same album as the Farandole, was produced entirely as the output of another Sonic Pi program. Even when using digital tools like Sonic Pi, I tend to use randomization and sonic layering to produce unconventional timbres, rhythms and harmonies that will vary endlessly no matter how long they are looped. These Ruby source code files are the closest I am likely to come to writing "scores" for any of my music. This is my "West Coast" approach applied to using "East Coast" inspired gear and software.
See SonicPi "Scores" for Ruby code examples as musical scores.
Studio Setups
Yesterday
Here is the setup I used when creating tracks in the 70's and 80's, a few of which eventually were published as the album Undecidable in 2011, once self-publishing music started to become a thing:
The Knabe piano I had as a kid was built in the 1930's and sounded far better recordings were made in my childhood bedroom or various apartments I had as a college student and young adult using decidedly consumer-level microphones and recording technologies of the era. The jankiness of the audio quality appeals to me as an artifact of the period of my life and the circumstances in which they were created, but I cannot argue with anyone who finds it less charming than I.
Today
The albums I have been publishing more recently have been created using variations of this setup:
Hardware
- Akai Pro MPK261 keyboard
- Behringer 2600 modern clone of the ARP 2600 I used as a kid
- PreSonus AudioBox iTwo ADC
...plus various Eurorack modules that change embarassingly frequently
Software
- Audacity Digital Audio Workstation (DAW)
- Ableton Live real-time digital synthesis and effects
- Sonic Pi Ruby dialect and runtime platform for creating digital music and controlling MIDI instruments
...running on a creaky old MacBook Pro laptop
Musicography
Undecidable
UPC 885767506688
Track | Title | ISRC |
---|---|---|
1 | Opus 1 | QMYYH1100001 |
2 | Opus 2 | QMYYH1100002 |
3 | Sample and Hold 2 | QMYYH1100003 |
4 | Segnahc Cigam | QMYYH1100004 |
5 | Sample and Hold 1 | QMYYH1100005 |
6 | Opus 6 | QMYYH1100006 |
Dum Viviums
UPC 198015910503
Track | Title | ISRC |
---|---|---|
1 | 2600 Redux | QZXKT2300001 |
2 | Dum Vivimus | QZXKT2300002 |
3 | Vivamus | QZXKT2300003 |
4 | Sliders and Knobs | QZXKT2300004 |
5 | and Cables | QZXKT2300005 |
6 | One Modulator to Rule Them All | QZXKT2300006 |
7 | Sonatina in No Particular Key Part 1 | QZXKT2300007 |
8 | Noise to Signal | QZXKT2300008 |
Untitled
UPC 198015912095
Track | Title | ISRC |
---|---|---|
1 | Untitled | QZXKT2300009 |
2 | Whoop Whoop | QZXKT2300010 |
3 | Ring of Sines and a Square | QZXKT2300011 |
Songs Not Yet and No Longer Sung
UPC 198015955498
Track | Title | ISRC |
---|---|---|
1 | Sonatina in No Particular Key Pt. 2 | QZXKT2300012 |
2 | Fire and Forget | QZXKT2300013 |
3 | Divergence | QZXKT2300014 |
4 | Douse and Remember | QZXKT2300015 |
5 | Faerie | QZXKT2300016 |
6 | Múspellsheimr | QZXKT2300017 |
7 | Niflheimr | QZXKT2300018 |
8 | Lament | QZXKT2300019 |
9 | Ostinato | QZXKT2300020 |
March
UPC 198025013270
Track | Title | ISRC |
---|---|---|
1 | March | QZXKT2300021 |
2 | Ludwig van Synthpop | QZXKT2300022 |
3 | E Minor Tune | QZXKT2300023 |
April
UPC 198025078903
Track | Title | ISRC |
---|---|---|
1 | Sonatina in No Particular Key Part 3 | QZXKT2300025 |
2 | Krell National Anthem | QZXKT2300024 |
3 | Triad | QZXKT2300026 |
4 | Iaulath Berúthiel | QZXKT2300027 |
5 | Sinusoidal Syncopation | QZXKT2300029 |
6 | PWM | QZXKT2300030 |
7 | Fall, Rise | QZXKT2300028 |
No Chatbots Were Harmed in the Making of This Album
UPC 198025252013
Track | Title | ISRC |
---|---|---|
1 | Analogy in C Minor | QZXKT2300036 |
2 | Regret | QZXKT2300032 |
3 | π | QZXKT2300031 |
4 | YNBBB | QZXKT2300033 |
5 | Chicxulub | QZXKT2300035 |
6 | Rainy Day Fanfare | QZXKT2300037 |
7 | At His Heels, Leashed In Like Hounds | QZXKT2300038 |
8 | Crouched for Employment | QZXKT2300039 |
9 | Analogy in C Major | QZXKT2300034 |
Ambivalence
UPC 198025421488
Track | Title | ISRC |
---|---|---|
1 | Effulgence | QZXKT2300045 |
2 | Vigilance | QZXKT2300040 |
3 | Perseverance | QZXKT2300041 |
4 | Coherence | QZXKT2300042 |
5 | Reluctance | QZXKT2300043 |
6 | Ebullience | QZXKT2300044 |
7 | Somnambulance | QZXKT2300046 |
8 | Emergence | QZXKT2300047 |
9 | Disturbance | QZXKT2300049 |
10 | Transcendence | QZXKT2300048 |
The Modern Temple of Amusement (Volume 1)
UPC 198025591679
Track | Title | ISRC |
---|---|---|
1 | Floating Theater | QZXKT2300050 |
2 | Mount Vesuvius | QZXKT2300051 |
3 | Soliloquy | QZXKT2300052 |
4 | Dramma Bernesco | QZXKT2300053 |
5 | Ghostly Reminiscences | QZXKT2300054 |
6 | Au Quai | QZXKT2300055 |
7 | Farandole Lamentoso (8-bit mix) | QZXKT2300056 |
8 | Farandole Lamentoso (2600 remix) | QZXKT2300057 |
9 | Steamboatman | QZXKT2300058 |
10 | Foggy River | QZXKT2300059 |
11 | Decommissioned | QZXKT2300060 |
12 | Repercussions 1 | QZXKT2300061 |
13 | Repercussions 2 | QZXKT2300062 |
14 | Repercussions 3 | QZXKT2300063 |
15 | Repercussions 4 | QZXKT2300064 |
16 | Repercussions 5 | QZXKT2300065 |
17 | Repercussions 6 | QZXKT2300066 |
18 | Repercussions 7 | QZXKT2300067 |
19 | Repercussions 8 | QZXKT2300068 |
20 | Repercussions 9 | QZXKT2300069 |
21 | Repercussions 10 | QZXKT2300070 |
Album 10
UPC 198025739965
Track | Title | ISRC |
---|---|---|
1 | Incipio ex regulum | QZXKT2300071 |
2 | Introduction | QZXKT2300072 |
3 | Variation 1 | QZXKT2300073 |
4 | Interlude 1 | QZXKT2300074 |
5 | Variation 2 | QZXKT2300075 |
6 | Interlude 2 | QZXKT2300076 |
7 | Variation 3 | QZXKT2300077 |
8 | Interlude 3 | QZXKT2300078 |
9 | Recapitulation | QZXKT2300079 |
10 | Reductio ad absurdum | QZXKT2300080 |
11 | Epilogue | QZXKT2300081 |
Rhythms
UPC 198025759802
Track | Title | ISRC |
---|---|---|
1 | Rhythm 1 | QZXKT2300082 |
2 | Rhythm 2 | QZXKT2300083 |
3 | Rhythm 3 | QZXKT2300084 |
4 | Rhythm 4 | QZXKT2300085 |
5 | Rhythm 5 | QZXKT2300086 |
6 | Rhythm 6 | QZXKT2300087 |
7 | Euclidean Tablas and Random Drones | QZXKT2300088 |
8 | Sinfonietta for Cowbell Orchestra | QZXKT2300089 |
9 | Concerto for Cowbell, Low Percussion and Manic Choir | QZXKT2300090 |
10 | Farandole in Tempore Belli | QZXKT2300091 |
Digitalis
UPC 198025865497
Track | Title | ISRC |
---|---|---|
1 | Digitalis in C Minor | QZXKT2300092 |
2 | Poison | QZXKT2300093 |
3 | Synaesthesia | QZXKT2300094 |
4 | Chromatic Parrots | QZXKT2300095 |
5 | Shuffle Off | QZXKT2300096 |
6 | Tethyc Tempo | QZXKT2300097 |
7 | Tethyc Melody | QZXKT2300098 |
8 | Arise, Fair Sun | QZXKT2300099 |
XIII
UPC 198053826262
Track | Title | ISRC |
---|---|---|
1 | Undine | QZXKT2300100 |
2 | I Alone Am Left | QZXKT2300102 |
3 | Whistling Gongs | QZXKT2300103 |
4 | Y. A. M. P. | QZXKT2300104 |
5 | Tower of Sines | QZXKT2300105 |
6 | Lean To | QZXKT2300106 |
7 | Contrary Trigonometry | QZXKT2300107 |
8 | Growling Bells | QZXKT2300108 |
9 | Schoenbergian Steampunk | QZXKT2300109 |
10 | Twelvish Tones | QZXKT2300110 |
11 | Twelvish More Tones | QZXKT2300111 |
12 | Without Indication | QZXKT2300112 |
13 | XII | QZXKT2300113 |
Empyrean
UPC 198027297876
Track | Title | ISRC |
---|---|---|
1 | Whom the Gods Destroy | QZXKT2300114 |
2 | They First Make Mad | QZXKT2300115 |
3 | Steady State | QZXKT2300116 |
4 | Traces Through the Cloud Chamber | QZXKT2300117 |
5 | Unsteady State (Steady State Redux) | QZXKT2300118 |
6 | Noisy Melody | QZXKT2300119 |
7 | Ready, Steady | QZXKT2300120 |
8 | Airy Fairy | QZXKT2300121 |
9 | March of the Airy Fairies | QZXKT2300122 |
10 | Migration | QZXKT2300123 |
Tangents and Sines and Rings
UPC 198089504462
Track | Title | ISRC |
---|---|---|
1 | Black and White and Pink All Over | QZXKT2300124 |
2 | Tangents and Sines and Rings | QZXKT2300125 |
3 | Drunken Calliope | QZXKT2300126 |
4 | Uncertain | QZXKT2300127 |
5 | 471 | QZXKT2300128 |
6 | Successive Unrefinement | QZXKT2300129 |
7 | Contrary Refinement | QZXKT2300130 |
8 | Fibonacci | QZXKT2300131 |
9 | Nautilus | QZXKT2300132 |
10 | Holding Saws, Playing Sines | QZXKT2300133 |
11 | Echoing Pingala | QZXKT2300134 |
12 | Range of Motion | QZXKT2300135 |
13 | Poesy | QZXKT2300136 |
14 | Greed's Meed | QZXKT2300137 |
15 | Anxiety | QZXKT2300138 |
Baraboo to Dubuque
UPC 198088353832
Track | Title | ISRC |
---|---|---|
1 | Baraboo to Dubuque | QZXKT2300139 |
Baraboo to Dubuque (2600 Mix)
UPC 198088334046
Track | Title | ISRC |
---|---|---|
1 | Baraboo to Dubuque (2600 Mix) | QZXKT2300140 |
Driftless
UPC 198089343887
Track | Title | ISRC |
---|---|---|
1 | Baraboo to Dubuque | QZXKT2300139 |
2 | Baraboo to Dubuque (2600 Mix) | QZXKT2300140 |
3 | House On the Rock | QZXKT2300141 |
4 | Driftless | QZXKT2300142 |
5 | Taliesin | QZXKT2300143 |
6 | Bridge Over the Great River | QZXKT2300144 |
7 | The Storehouse of River Lore | QZXKT2300145 |
8 | The Unvisited Cavern | QZXKT2300146 |
The Doctrine of Shareholder Value
UPC 198090343913
Track | Title | ISRC |
---|---|---|
1 | The Maundering Orator | QZXKT2300147 |
2 | The Marketplace of 'Ideas' | QZXKT2300148 |
3 | A Conclave of Populist Fantasists | QZXKT2300149 |
4 | Antisocial Media | QZXKT2300150 |
5 | Narcissus | QZXKT2300151 |
6 | Sycophants | QZXKT2300152 |
7 | Intended Consequences | QZXKT2300153 |
8 | The Three Branches | QZXKT2300154 |
9 | One Master | QZXKT2300155 |
10 | Consensual Reality | QZXKT2300156 |
Duodecatonic
UPC 198093234317
Track | Title | ISRC |
---|---|---|
1 | Duodecatonic | QZXKT2300157 |
2 | Randomly Rubato Wandering Chromatics | QZXKT2300158 |
3 | Cognitive Dissonance | QZXKT2300159 |
4 | Duodecahexate | QZXKT2300160 |
5 | Surjection | QZXKT2300161 |
6 | Continuum Hypothesis, Pt. 1 | QZXKT2300162 |
7 | Continuum Hypothesis, Pt. 2 | QZXKT2300163 |
8 | Continuum Hypothesis, Pt. 3 | QZXKT2300164 |
9 | Continuum Hypothesis, Pt. 4 | QZXKT2300165 |
10 | Continuum Hypothesis, Pt. 5 | QZXKT2300166 |
11 | Continuum Hypothesis, Pt. 6 | QZXKT2300167 |
12 | Unodecatonic | QZXKT2300168 |
Down to the Wire
UPC 193667836836
Track | Title | ISRC |
---|---|---|
1 | Rotating Shuffled Major Triads | QZXKT2300169 |
2 | Rotating Shuffled Minor Triads | QZXKT2300170 |
3 | Surging | QZXKT2300171 |
4 | Disequilibrium | QZXKT2300172 |
5 | Shuffling Chromatic Triads | QZXKT2300173 |
6 | Lambda X Dot X of X | QZXKT2300174 |
7 | Cross Product | QZXKT2300175 |
8 | Through Caverns Measureless | QZXKT2300176 |
Ringing the Changes
UPC 19798688864
Track | Title | ISRC |
---|---|---|
1 | Aleph Null | QZXKT2300177 |
2 | Yuletide | QZXKT2300178 |
3 | Solstice | QZXKT2300179 |
4 | Mixolydian Harmonies | QZXKT2300180 |
5 | Aeolian Counterpoint | QZXKT2300181 |
6 | Dorian Light Pink | QZXKT2300182 |
7 | Mixed Hesitant Tempos | QZXKT2300183 |
8 | Krampuslauf 1 | QZXKT2300184 |
9 | Krampuslauf 2 | QZXKT2300185 |
10 | Niklaus | QZXKT2300186 |
McFarland Souvenir (for Sean and Mary)
UPC 19307750037
Track | Title | ISRC |
---|---|---|
1 | McFarland Souvenir (for Sean and Mary) | QZXKT2400002 |
Ante Annus Novus
UPC 198078467266
Track | Title | ISRC |
---|---|---|
1 | 13 Times 5 | QZXKT2300187 |
2 | Reversal | QZXKT2300188 |
3 | Ozymandias | QZXKT2300189 |
4 | Postquam Prior Annus | QZXKT2400001 |
5 | McFarland Souvenir (for Sean and Mary) | QZXKT2400002 |
6 | Resonant Filter Sweep | QZXKT2400003 |
7 | Inverted Rings | QZXKT2400004 |
8 | Surging Counterpoint | QZXKT2400005 |
9 | Rippling Counterpoint | QZXKT2400006 |
10 | Panopticon | QZXKT2400007 |
11 | Prime | QZXKT2400008 |
12 | Lares Compitales | QZXKT2400009 |
13 | l'Enfant Terrible | QZXKT2400010 |
14 | Running Out the Clock | QZXKT2400011 |
2024-02
UPC 198085040643
Track | Title | ISRC |
---|---|---|
1 | 2024-02-11-01 | QZXKT2400012 |
2 | 2024-02-11-02 | QZXKT2400013 |
3 | 2024-02-15-01 | QZXKT2400014 |
4 | 2024-02-15-02 | QZXKT2400015 |
5 | 2024-02-17-01 | QZXKT2400016 |
6 | 2024-02-17-02 | QZXKT2400017 |
7 | 2024-02-17-03 | QZXKT2400018 |
8 | 2024-02-17-04 | QZXKT2400019 |
9 | 2024-02-20 | QZXKT2400020 |
10 | 2024-02-24 | QZXKT2400021 |
SonicPi "Scores"
Ruby code examples as musical scores.
Au_Quai.rb
# Copyright 2023 Kirk Rader. All rights reserved. # Au Quai use_random_seed 0 use_random_source :perlin use_synth :sine terminate = false define :randomatic do |min_n, max_n, min_d, max_d| in_thread do loop do if terminate stop end n = note(rrand_i(min_n, max_n)) d = rrand(min_d, max_d) # midi n, sustain: d play n sleep d end end end randomatic(45, 75, 0.25, 0.75) sleep 100 terminate = true
Decommisioned.rb
# Copyright 2023 Kirk Rader. All rights reserved. # Decomissioned terminate = false define :drone do |name| in_thread do with_random_source :perlin do with_sample_bpm name do loop do if terminate stop end rate = rrand(0.5, 2.0) delay = 1.0 / rate sample name, rate: rate sleep delay end end end end end define :melody do |name| in_thread do with_synth name do with_random_source :pink do loop do if terminate stop end duration = rrand(0.5, 2.0) play rrand(45, 65), sustain: duration sleep duration end end end end end name = :ambi_glass_hum drone name drone name #drone name melody :dark_ambience melody :dark_ambience sleep 100 terminate = true
Farandole_Lamentoso.rb
# Copyright 2023 Kirk Rader. All rights reserved. # Farandole Lamentoso midi_all_notes_off sleep 1 arp_synth = :dpulse bass_synth = :bass_foundation seed = 0 next_seed = 7 arps = 2 arp_tempo = 0.33 send_midi_arp = false send_midi_bass = false play_notes = true define :play_arp do |r, c| use_synth arp_synth c.times do use_random_seed seed seed = seed + next_seed r.shuffle.length.times do n = r.tick if send_midi_arp midi n end if play_notes play n end sleep arp_tempo end end end define :play_bass do |n, s| use_synth bass_synth if send_midi_bass midi n, sustain: s end if play_notes play n, sustain: s end end define :play_bass_melody do |n, s| in_thread do n.length.times do play_bass n.tick, s sleep s end end end a_min = (ring :A3, :C4, :E4) d_min = (ring :A3, :D4, :F4) g_maj = (ring :G3, :B3, :D4) c_maj = (ring :G3, :C4, :E4) f_maj = (ring :F3, :A3, :C4) b_min = (ring :F3, :B3, :D4) a_min_inv = (ring :E3, :A3, :C4) e_maj_sus = (ring :E3, :A3, :B3) e_maj = (ring :E3, :Gs3, :B3) bass_melody = (ring :C3, :A2, :B2, :Gs2) 2.times do play_bass :A3, (arps * a_min.length * arp_tempo) play_arp a_min, arps play_bass :D3, (arps * d_min.length * arp_tempo) play_arp d_min, arps play_bass :G3, (arps * g_maj.length * arp_tempo) play_arp g_maj, arps play_bass :C3, (arps * c_maj.length * arp_tempo) play_arp c_maj, arps play_bass :F3, (arps * f_maj.length * arp_tempo) play_arp f_maj, arps play_bass :B3, (arps * b_min.length * arp_tempo) play_arp b_min, arps play_bass_melody bass_melody, (a_min_inv.length * arp_tempo) play_arp a_min_inv, arps play_arp e_maj_sus, 1 play_arp e_maj, 1 end play_bass :A2, (arps * a_min_inv.length * arp_tempo) play_arp a_min_inv, arps if send_midi_arp midi :A4 end if play_notes play :A4 end play_bass :A2, (arps * a_min_inv.length * arp_tempo)
Farandole_in_Tempore_Belli.rb
# Copyright Kirk Rader 2023. All rights reserved. # Farandole in Tempore Belli # sleep duration for each beat tempo = 0.2 # beats per measure measure = 16 # drum rhythm spread_lo = (spread 5, measure) spread_mid = (spread 7, measure) spread_hi = (spread 3, measure / 2 - 1) spread_bass = (spread 1, measure) # start of each measure spread_measures = (spread 1, measure) # arpeggio rhythms spread_arp_1 = (spread measure / 3, measure / 2) spread_arp_2 = (spread (measure / 2) + 1, measure) chords = (ring (chord :a4, :minor), (chord :d4, :minor, invert: 2), (chord :g4, :major), (chord :c4, :major, invert: 2), (chord :f4, :major), (chord :b3, :diminished, invert: 2), (chord :a3, :minor, invert: 2), (chord :e4, :sus4), (chord :e4, :major)) bass = (ring (note :a2), (note :d1), (note :g1), (note :c1), (note :f2), (note :b1), (note :c2), (note :e1), (note :e1)) # duration of one measure measure_hold = tempo * measure # number of beats in a full phrase phrase_length = chords.length * measure # number of beats to repeat the full phrase 6 times repeats = phrase_length * 6 # current beat number being played each time :master is cued count = 0 # current phrase number being played each time :master is cued phrase = 0 # stop threads next time :master is cued terminate = false # flags to allow different voices to be played out # as separate tracks enable_drums = true enable_ambience = true enable_chords = true enable_arp_1 = true enable_arp_2 = true enable_bass = true # flag to emit single-note voices (arp_1, # arp_2 and bass) as midi events rather # than playing audio output enable_midi = false # play arpeggio for 1 measure define :play_arp do |notes, spread| in_thread do with_fx :reverb, room: 0.75 do with_synth :chiplead do measure.times do stop if terminate if spread.tick if enable_midi midi notes[0], sustain: tempo else play notes[0], sustain: tempo, amp: phrase * 0.1 end notes = notes.rotate end sleep tempo end end end end end with_fx :reverb, room: 0.75 do begin # chords & arpeggios in_thread do with_random_source :perlin do loop do # await next beat sync :master stop if terminate # only take action once per measure if spread_measures.tick # play current chord using ambient voice with_synth :dark_ambience do with_transpose -12 do play chords[0], sustain: measure_hold, amp: 1.5 * phrase, pan: rrand(-0.5, 0.5) if enable_ambience && phrase > 0 end end # play current chord as arpeggio using first pattern play_arp chords[0], spread_arp_1 if enable_arp_1 && phrase > 1 # play current chord as arpeggio using second pattern play_arp chords[0], spread_arp_2 if enable_arp_2 && phrase > 2 # play current cord using melodic voice with_synth :chipbass do play chords[0], sustain: measure_hold * 0.8, amp: phrase * 0.1, pan: rrand(-0.5, 0.5) if enable_chords && phrase > 2 end # play current note in bass line with_synth :bass_foundation do if enable_bass && phrase > 3 if enable_midi midi bass[0], sustain: measure_hold else play bass[0], sustain: measure_hold, pan: rrand(-0.5, 0.5) end end end # advance to the next measure chords = chords.rotate bass = bass.rotate end end end end # percussion if enable_drums in_thread do with_random_source :white do loop do sync :master stop if terminate tick sample :drum_tom_lo_hard, rate: rrand(0.75, 1.25), amp: rrand(0.2, 0.5), pan: -0.25 if spread_lo.look sample :drum_tom_mid_hard, rate: rrand(0.75, 1.25), amp: rrand(0.2, 0.5), pan: 0.25 if spread_mid.look sample :drum_tom_hi_hard, rate: rrand(0.75, 1.25), amp: rrand(0.2, 0.5) if spread_hi.look sample :drum_bass_hard, rate: rrand(0.75, 1.25), amp: rrand(0.5, 0.8) if spread_bass.look end end end end # clapper for syncing tracks in a DAW with_synth :beep do play :a4 midi :a4, sustain: 1 end # give space after clapper sleep measure_hold # master clock for all threads repeats.times do cue :master count = count + 1 phrase = phrase + 1 if count % phrase_length == 0 sleep tempo end ensure terminate = true sleep tempo * 2 cue :master sleep tempo * 2 midi_all_notes_off if enable_midi end end
Ghostly_Reminiscences.rb
# Copyright 2023 Kirk Rader. All rights reserved. # Ghostly Reminiscences live_loop :plingk do sample :perc_bell, rate: rrand(0.2, 2) sleep rrand(1, 5) end live_loop :clangk do sample :perc_bell2, rate: rrand(0.2, 2) sleep rrand(1, 5) end live_loop :eery do sample :ambi_haunted_hum, rate: rrand(0.2, 2) sleep rrand(0.75, 3) end live_loop :spooky do sample :ambi_glass_hum, rate: rrand(0.2, 2) sleep rrand(0.75, 3) end live_loop :chugga do sample :loop_industrial, rate: rrand(0.2, 2) sleep 5 end live_loop :bzzz do sleep 2.5 sample :loop_drone_g_97, rate: rrand(0.2, 2) sleep 7.5 end