module Renoise::Sequencer
Public Instance Methods
config(name, **config)
click to toggle source
# File lib/renoise/sequencer.rb, line 90 def config(name, **config) if @sequencers.keys.include? name then @sequencers[name].merge!(config) end end
notes(name, *notes)
click to toggle source
# File lib/renoise/sequencer.rb, line 96 def notes(name, *notes) if @sequencers.keys.include? name then @sequencers[name][:notes] = notes end end
seq(name, basenote, instr, track)
click to toggle source
# File lib/renoise/sequencer.rb, line 78 def seq(name, basenote, instr, track) @sequencers[name] = { instrument: instr, track: track, value: 100, basenote: basenote, beat: 4, length: 1, notes: [] } end
seq_drop(name)
click to toggle source
# File lib/renoise/sequencer.rb, line 68 def seq_drop(name) if @sequencers.keys.include? name then @sequencers.delete[name] end end
seq_init()
click to toggle source
# File lib/renoise/sequencer.rb, line 3 def seq_init @sequencers = {} @sequencer = { position: 0, played: [], # [stop_position, instr, track, note] play: true } @sequencer_thread = Thread.new do loop do # stop notes @sequencer[:played].each_index do |i| n = @sequencer[:played][i] if n[0] <= @sequencer[:position] then note_off(n[1], n[2], n[3]) @sequencer[:played].delete_at(i) end end # play notes notes_to_play = [] if @sequencer[:play] then @sequencers.each do |name, config| if @sequencer[:position] % config[:beat] == 0 and config[:notes].length > 0 then note = config[:notes][(@sequencer[:position] / config[:beat]) % config[:notes].length] if note >= 0 then note += config[:basenote] notes_to_play << [config[:instrument], config[:track], note, config[:value], @sequencer[:position] + config[:length]] end end end notes_to_play.each do |n| note_on(n[0], n[1], n[2], n[3]) @sequencer[:played] << [n[4], n[0], n[1], n[2]] end @sequencer[:position] += 1 end # wait a tick sleep (60.0 / (@bpm * 4)) end end end
seq_pause()
click to toggle source
# File lib/renoise/sequencer.rb, line 50 def seq_pause @sequencer[:play] = false @sequencer[:played].each do |n| note_off(n[1], n[2], n[3]) @sequencer[:played].delete(n) end end
seq_play()
click to toggle source
# File lib/renoise/sequencer.rb, line 64 def seq_play @sequencer[:play] = true end
seq_status()
click to toggle source
# File lib/renoise/sequencer.rb, line 74 def seq_status { :sequencers => @sequencers, :play => @sequencer[:play], :position => @sequencer[:position] } end
seq_stop()
click to toggle source
# File lib/renoise/sequencer.rb, line 58 def seq_stop seq_pause panic @sequencer[:position] = 0 end