It’s a I V vi IV progression, playing the chords and partial arpeggios over them
plus a few non-chord notes from the scale of each chord.
Not a lot of randomness, mostly just overlapping different length sequences. Only uses random to decide whether or not to play certain beats and to add some ‘humanizing’ to the chord arpeggios.
It’s a I V vi IV progression, playing the chords and partial arpeggios over them
whole = 4.0 double = whole*2 half = whole/2 quart = whole/4 eight = whole/8 sixth = whole/16 use_bpm 60 root = :E2 live_loop :main do puts("counter", tick(:ctr)) set :ctr, look(:ctr) if (get :ctr) > 60 # stop main loop stop end progression = [ [root, :major, double], [root+7, :major, double], [root+9, :minor, double], [root+5, :major, whole], [root+5, :major, whole], ] note, kind, time = progression.tick(:prog) print(note, kind) if look(:ctr) > 3 # start main piano chords use_synth :piano with_fx :gverb do play (chord note, kind), sustain: time*2, attack: 0.5 end end if look(:ctr) > 6 # start overtone chords use_synth :pretty_bell overamp = (1+Math.sin(tick(:overamp)/5+3.14159))/8 with_fx :flanger do with_fx :ring_mod do play (chord note+12, kind, invert:2), sustain: time, attack: time/2, amp:overamp end end end use_synth :piano set :bassnote, note set :basskind, kind play note, sustain: time, attack: 0.5 use_synth :piano with_fx :flanger do with_fx :panslicer, mix: 0.35 do if look(:ctr) > 8 # start single notes time_warp rand(0.05) do play (chord note, kind, num_octaves: 3).tick(:arp), sustain: time/2, decay:time/2 sleep time/2 play (chord note, kind, num_octaves: 2).tick(:arp)+12, sustain: time/2, decay:time/2 end end if one_in(4) sleep time/4 print('non chord') if look(:ctr) > 12 # start extra notes time_warp rand(0.1) do play (scale note, kind, num_octaves: 2).choose, sustain: time/4, decay:time/4 end end sleep time/4 else sleep time/2 end end end end # end main loop if (get :ctr) > 56 # stop industrial sample stop end live_loop :beat do sleep 12 with_fx :gverb, spread: 1, damp: 0.3, room: 30, amp: 0.5 do with_fx :ring_mod, mix: 1, phase: 8 do if one_in(2) sample :loop_industrial, release:0.6, finish: 0.8 end end end end live_loop :beat2 do if (get :ctr) > 54 # stop at 2.5 mins stop end sleep 2 if not one_in(3) with_fx :echo, phase:2.0/8*1.5, decay:2 do sample :drum_heavy_kick, amp:0.4 end end if not one_in(4) sleep 2 with_fx :echo, phase:2.0/8*1.5, decay:2 do sample :drum_bass_hard, amp:0.4 end end end # bass piano live_loop :bass do if (get :ctr) > 56 # stop bass notes stop end note = (chord get(:bassnote), get(:basskind))[[2,0].look(:bassline)]-12 time_warp -1 do use_synth :hollow play note-12, pan:[0.8,0.7,-0.8,-0.7].look(:bassline), attack:0, release:0.75, sustain:[7,2].look(:bassline), amp:3 use_synth :piano play note, sustain: 0.5, pan:[-0.5,-0.4,0.5,0.4].look(:bassline), attack:0, release:0.25, sustain:[7,2].look(:bassline), amp:0.7 end with_fx :panslicer, phase:1, wave:3 do use_synth :fm play note-12, sustain:[7,2].look(:bassline), amp:1 end sleep [1,7].tick(:bassline) end ```
This is your first piece?? I am totally impressed …
Here some small hints:
- better place a blank between the parameters and the values (
sustain: 1instead of
- There is the constant
Math::PIin case you’ll need it for your future work
- the program throws an error at the first start, because the
set :ctrcomes to late for the other loops. Just a put a
set :ctrinside the head before the live_loop
- If you post code, better put it inside 3 backticks ``` ; then you’ll get nice colored formatting
Thanks for sharing and I am looking forward to the pieces to come!!
EDIT: I think the statement
if (get :ctr) > 56 # stop industrial sample stop end
in line 77 will not have any effect. Think about the Ruby interpreter as parsing the file from top to bottom. These lines will be executed even before the live_loops start running.
Thanks so much, for the kind words and tips!
Welcome and very nicely done! It gives me Minecraft vibes. I’m personally reminded of the quiet and solitude of playing the game in single player mode, gradually building a base, with a trace of loneliness.
EDIT: had to mention upon listening to this a few more times that I really like your sound design and think it builds a wonderfully emotional vibe. Perhaps you could share some tips and considerations that went into making this piece? I know it’s your first post and all, but you obviously know something about music, even if it’s intuition.
The piece is structured around a I V vi IV progression, so there’s a simple, well known harmonic structure, even if it gets buried a bit.
I start with just bass notes, combining a Piano synth which plays a dominant (5th) above the tonic (root) of the current chord 1 beat before the progression changes, and the the tonic right at the change, so this gives you a leading note that helps give a sense of forward motion. Below that I use a Hollow synth to mirror the piano 1 octave lower, to add a sense of menace.
After that, the actual chords kick in, also played on a piano synth.
After a while, the chord notes come in, played in pairs in sequence over 3 and 2 octaves. For instance, the first chord is E, so the notes are E F# G#. There’s a single tick for these notes, regardless of which chord we’re in, so the sequence skips around.
After a longer while, I add the entire scale related to the chord, playing notes picked at random. This can produce some dissonance, as not all the scale notes will mesh with the scales of the other chords in the progression. For instance, the vi chord is b minor (its scale is B, C♯, D, E, F♯, G, A). If the G note is ringing, for example, and the chord progression goes back to A (which has the scale A, B, C♯, D, E, F♯, G♯) it might clash with a G# or with the A chord itself (A, C#, E).
On top of that, I repeat the chords with a pretty_bell synth, one octave up and with a ringmod with a long phase, to create a sort of high pitched whine that fades in and out, which mimics what I’d do with an electric guitar if I was recording this traditionally.
Finally, there’s some sparse drum samples triggered randomly at long intervals, just to remind you of the beat without actually defining a rhythm, including the ‘loop_industrial’ sample which to me gives it a kind of Prince vibe.
At the end, the parts start to drop out, leaving you with just the final notes on the piano reverberating.
Other than that, I just tweaked the sounds, synths and effects until I got the feeling I was looking for.
D’oh. You’re right of course.
Thanks for your thorough walkthrough and explanation!
I realise there’s no exact science of doubling/layering except in classical orchestration, so much of sound design is a matter of experimentation and experience. I like how you’ve brought your electric guitar and listening background into your music. All I see whenever I try to do instrumentation is a tabula rasa. Unable to define and differentiate roles, I end up using similar/identical synths for all my voices, which gets boring quick. That’s why I’m seeking thoughts.
So would you say there’s a need to reconcile such conflicts, and if so, how would you approach it? Because if too many conflicts happen in quick succession, I imagine a piece might fall apart. To draw from my listening with an extreme case, Schoenberg achieves coherence in his later atonal works by employing traditional rhythms, melodic phrases, and voicing.
My approach for coherence is to rely on motifs which remain constant throughout rapid modulations/chord substitutions. My work leans a bit too random and is lacking in structure however, so I’m rethinking my approach.
Another thing I have to learn from. My music is essentially a continuous stream. Any thoughts on how to approach spacing elements out? I’ve tried simply pausing every other measure, which sometimes creates a nice call and response between voices. But I don’t have much of a method to my bit of madness
I just realised that I’m getting Minecraft vibes because the drums are completely missing on every other run. I like the music with and without the drums however.
Not really. I try to keep them down to a few, and I futzed the script a little because it was ending on a jarring one, other than that I feel they add a bit of spice.
I want to try doing something bluesy with some pre-made motifs, like when you play a riff or lick on the guitar.
In this case, just setting it to be random (or periodic), and tuning it by ear until it sounds right.
It helps me to think about each voice as a traditional instrument or role. So I have the bass, the rhythm guitar or piano, the vocal melody, the background vocals, the drums, the percussion, etc.
When trying to write EDM, I usually have roles for the sub & bass, chords, lead, arps, and percussion. I find synth presets helpful as a starting point. Even with a wavetable synth as versatile as Serum however, I have difficulties creating distinct and interesting patches. I guess I just need to experiment more.
Thanks for your thoughts! It’s always nice to hear from different artists