musa-dsl 0.23.18 → 0.23.19

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7b3da8a6794922e430f83799de2679402d3bfefda3208fa1788f0beedb1ae55e
4
- data.tar.gz: 8583d5e0e518ff221cdf8b3f7cd6bc96ffe5a2c8b6c86ae53eb7d339b2a0eabd
3
+ metadata.gz: 69d8893b895c8b836a51be4f7fc7b51fbab501383c6e3780d0af52e82f1bb324
4
+ data.tar.gz: 017f7f8a8fb2cd5b3104d6c1f5c5acd535ea3db4c4285d15f1c81fe792cf123c
5
5
  SHA512:
6
- metadata.gz: 06642f37659b697dca34396cca40aaa0ee30788cb2905e29ae9e2be16d3df570e1195996d50b81d10506059b37ef319f0c7c0aec8ccf789a35dc5d4734ba19ce
7
- data.tar.gz: bd2c24988b5f1ef6e11d3b426de27a8ed46a9ca14f08f4d7eb1fbcff95e6854f839bb369e716c3ed05b393852571440bffbb223e2d3333a82900b62ffd0ce0db
6
+ metadata.gz: 681651cd39523a69d2cbe3fe7271b79ab6f8c0d616cabd8f7d9ef4e0af8f8bbaaed39d41977c35900a748057af8a274b5672762340b98537b9f1d2cba7c5b401
7
+ data.tar.gz: 29cc0e37bf4f3513d78e32776c9df7a6a622c913a965f7bef8944bd0961ef7f8e23bfc348dbbe9eb7d18a211e224f6f27acc95210340bbad05aacde0d34f5404
@@ -3,7 +3,7 @@ require_relative 'clock'
3
3
  module Musa
4
4
  module Clock
5
5
  class TimerClock < Clock
6
- def initialize(period = nil, ticks_per_beat: nil, bpm: nil, correction: nil, logger: nil, do_log: nil)
6
+ def initialize(period = nil, ticks_per_beat: nil, bpm: nil, correction: nil, delayed_ticks_error: nil, logger: nil, do_log: nil)
7
7
  do_log ||= false
8
8
 
9
9
  super()
@@ -20,6 +20,7 @@ module Musa
20
20
  @started = false
21
21
  @paused = false
22
22
 
23
+ @delayed_ticks_error = delayed_ticks_error
23
24
  @logger = logger
24
25
  @do_log = do_log
25
26
  end
@@ -56,7 +57,12 @@ module Musa
56
57
  @run = true
57
58
 
58
59
  while @run
59
- @timer = Timer.new(@period, correction: @correction, stop: true, logger: @logger, do_log: @do_log)
60
+ @timer = Timer.new(@period,
61
+ correction: @correction,
62
+ stop: true,
63
+ delayed_ticks_error: @delayed_ticks_error,
64
+ logger: @logger,
65
+ do_log: @do_log)
60
66
 
61
67
  @timer.run do
62
68
  yield if block_given?
@@ -3,10 +3,12 @@ module Musa
3
3
  class Timer
4
4
  attr_accessor :period
5
5
 
6
- def initialize(period_in_seconds, correction: nil, stop: nil, logger: nil, do_log: nil)
7
- @period = period_in_seconds.rationalize
6
+ def initialize(tick_period_in_seconds, correction: nil, stop: nil, delayed_ticks_error: nil, logger: nil, do_log: nil)
7
+ @period = tick_period_in_seconds.rationalize
8
8
  @correction = (correction || 0r).rationalize
9
9
  @stop = stop || false
10
+
11
+ @delayed_ticks_error = delayed_ticks_error || 1.0
10
12
  @logger = logger
11
13
  @do_log = do_log
12
14
  end
@@ -21,10 +23,15 @@ module Musa
21
23
  yield
22
24
 
23
25
  @next_moment += @period
24
- to_sleep = (@next_moment + @correction) - Process.clock_gettime(Process::CLOCK_MONOTONIC)
25
-
26
- if @do_log && to_sleep.negative?
27
- @logger&.error "Timer delayed #{-to_sleep}s (near #{(-to_sleep / @period).round} ticks)"
26
+ to_sleep = (@next_moment + @correction) - Process.clock_gettime(Process::CLOCK_MONOTONIC)
27
+
28
+ if @do_log && to_sleep.negative? & @logger
29
+ tick_errors = -to_sleep / @period
30
+ if tick_errors >= @delayed_ticks_error
31
+ @logger.error "Timer delayed #{tick_errors.round(2)} ticks (#{-to_sleep}s)"
32
+ else
33
+ @logger.warn "Timer delayed #{tick_errors.round(2)} ticks (#{-to_sleep}s)"
34
+ end
28
35
  end
29
36
 
30
37
  sleep to_sleep if to_sleep > 0.0
data/lib/musa-dsl.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Musa
2
- VERSION = '0.23.18'
2
+ VERSION = '0.23.19'
3
3
  end
4
4
 
5
5
  require_relative 'musa-dsl/core-ext'
data/musa-dsl.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'musa-dsl'
3
- s.version = '0.23.18'
3
+ s.version = '0.23.19'
4
4
  s.date = '2021-09-28'
5
5
  s.summary = 'A simple Ruby DSL for making complex music'
6
6
  s.description = 'Musa-DSL: A Ruby framework and DSL for algorithmic sound and musical thinking and composition'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: musa-dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.18
4
+ version: 0.23.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Javier Sánchez Yeste