Module: Ramekin::Util
- Extended by:
- Util
- Includes:
- Error::Helpers
- Included in:
- AMKRunner, AMKSetup::Setup, CLI, SPCPlayer::SPCPlayer, Util
- Defined in:
- lib/ramekin/util.rb
Constant Summary collapse
- KNOWN_LENGTHS =
{}.tap do |out| ticks = 192 length = 1 loop do out[ticks] = length.to_s break unless ticks % 2 == 0 out[ticks * 3 / 2] = "#{length}." length *= 2 ticks /= 2 end end
Instance Method Summary collapse
Instance Method Details
#adsr_value(adsr) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/ramekin/util.rb', line 6 def adsr_value(adsr) case adsr.value when 'flat' [0, 7, 7, 31] else vals = adsr.value.split(',').map { |x| x.to_i(16) } error! 'invalid #adsr, expected 4 arguments', el: adsr unless vals.size == 4 a, d, s, r = vals error! 'invalid attack (must be 0-F)', el: adsr unless (0..15).include?(a) error! 'invalid decay (must be 0-7)', el: adsr unless (0..7).include?(d) error! 'invalid sustain (must be 0-7)', el: adsr unless (0..7).include?(s) error! 'invalid release (must be 0-1F)', el: adsr unless (0..31).include?(r) [a, d, s, r] end end |
#extra_nice_length_amk(ticks) ⇒ Object
40 41 42 43 44 |
# File 'lib/ramekin/util.rb', line 40 def extra_nice_length_amk(ticks) # output uses l16 return '' if ticks == 12 nice_length_amk(ticks) end |
#nice_length_amk(ticks) ⇒ Object
46 47 48 |
# File 'lib/ramekin/util.rb', line 46 def nice_length_amk(ticks) KNOWN_LENGTHS.fetch(ticks) { "=#{ticks}" } end |