I’m new here and I’m having a lot of fun (thanks @samaaron ). I was wondering if any of you would be interested in a little lib / microframework called “seq” I made? It’s just a few functions that sort of automate and clean up things in 2 domains:
- the loops as sequencer tracks (sync, mute / solo track, skip to time, generic ticking clock)
- a meter utility to manipulate beats, time signatures and cue generation
I define my tracks and meters like this:
# defining a meter, 7/4 with custom onbeats (the bools map)
seq_meter_info :seven_quarter, (bools 1, 0, 0, 1, 0, 0, 0), period: 0.25
# storing all meters in a easy to access hash
meters = seq_map (seq_meter_info ...), (seq_meter_info ...)
# same pattern, defining a track, it's on state and optional
# active sections (as an array of tick ranges) -> 7*8 or
# eight of my seven_quarters bars
seq_track_info :lead, true, sections: [(7*8..)]
# same pattern, storing them into a track map (for soloing the track)
tracks = seq_map (seq_track_info ...), (seq_track_info ...)
Then I can create a meter clock:
seq_meter_clock :main, # tick name and prefix for the cues
meters[:seven_quarter], # the meter determines how the standard cues work
[:beat, :onbeat, :offbeat] # custom cue selection prefixed here with main_
# available cues: beat, onbeat, offbeat/backbeat,
# downbeat/bars, upbeat, oddbars, evenbars, hyperbeat
I put it in the main loop and I add the commented skip!
action (for easy triggering):
#skip! :main, 7*2 <- sets the :main tick at 2 bars from the start
live_loop :main do
seq_meter_clock :main,
meters[:seven_quarter],
[:beat, :onbeat, :offbeat] # ticking and firing cues is taken care of
end
I can create a track and tie it to the clock:
# first arg is the cues it listens to, second is the track info
seq_track [:main_offbeat], tracks[:lead] do |message|
play_chord chord(:a3, :m) # just some chord
end
The tracks are set in loops too, with mute!
and solo!
actions:
#solo! tracks, :lead
#mute! tracks[:lead]
live_loop :lead do
seq_track ...
end
#solo! tracks, :thrill
#mute! tracks[:thrill]
live_loop :thrill do
seq_track ...
end
Would any of you see a use for it? It’s difficult from where I stand to understand if I made something really cool or an unusable gimmick