Skip to content

Commit e199ff9

Browse files
committed
Refactoring variable assignments, conditional clauses and adsr
Refactored rules and removed duplicates. ADSR envelopes are now longer relative by default. Variable assignments can now be used in conditional clauses. Added index as n variable for list functions. Added thue morse sequence to enumerators.
1 parent 4df76e3 commit e199ff9

File tree

10 files changed

+216
-110
lines changed

10 files changed

+216
-110
lines changed

lib/defaults.rb

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,22 @@ def int_to_length(val,map=nil)
1212
end
1313
end
1414

15+
def port(port_value)
16+
if !port_value
17+
@@default_opts.delete(:port)
18+
else
19+
@@default_opts[:port] = port_value
20+
end
21+
end
22+
23+
def channel(channel_value)
24+
if !channel_value
25+
@@default_opts.delete(:channel)
26+
else
27+
@@default_opts[:channel] = channel_value
28+
end
29+
end
30+
1531
def get_default_opts
1632
@@default_opts
1733
end
@@ -28,10 +44,6 @@ def set_default_opts(opts)
2844
@@default_opts.merge!(opts)
2945
end
3046

31-
def port(port_string)
32-
@@default_port = port_string
33-
end
34-
3547
def merge_synth_defaults
3648
@@default_opts.merge!(Hash[current_synth_defaults.to_a])
3749
end

lib/enumerables.rb

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -420,21 +420,26 @@ def sterns
420420

421421
# https://oeis.org/A000265
422422
def frac2
423-
Enumerator.new do |y|
424-
1.step do |n|
425-
n>>=1 while n%2==0
426-
y << n
427-
end
423+
Enumerator.new do |y|
424+
1.step do |n|
425+
n>>=1 while n%2==0
426+
y << n
427+
end
428+
end
428429
end
430+
431+
# http://oeis.org/A010060
432+
def thue_morse(base=2,mod=base)
433+
(0..Float::INFINITY).lazy.collect {|n| n.to_s(base).split("").map{|v| v.to_i}.reduce(0, :+) % mod } #.count('1') % base}
429434
end
430435

431436
# https://oeis.org/A001316
432437
def dress(e=Float::INFINITY)
433-
(0..e).lazy.collect {|n| A001316(n) }
438+
(0..e).lazy.collect {|n| A001316_recursion(n) }
434439
end
435440

436441
# Dress sequence https://oeis.org/A001316
437-
def A001316(n)
442+
def A001316_recursion(n)
438443
return n+1 if n <= 1
439444
A001316(n/2) << n%2
440445
end
@@ -456,13 +461,27 @@ def A342585(n)
456461
new_val
457462
end
458463

459-
# https://oeis.org/A030101
460-
def binrev(base=2)
464+
# Van Ecks sequence: http://oeis.org/A181391
465+
def vanecks
461466
Enumerator.new do |y|
462-
0.step do |n|
463-
y << n.to_s(base).reverse.to_i(base)
464-
end
467+
last = 0
468+
counts = {}
469+
0.step do |i|
470+
current = last
471+
last = i - (counts[current] || i)
472+
counts[current] = i
473+
y << current
474+
end
465475
end
476+
end
477+
478+
# https://oeis.org/A030101
479+
def binrev(base=2)
480+
Enumerator.new do |y|
481+
0.step do |n|
482+
y << n.to_s(base).reverse.to_i(base)
483+
end
484+
end
466485
end
467486

468487
# https://oeis.org/A000217

lib/generators.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ def parse_binary(val)
170170

171171
# Creates "scales" out of things
172172
def scalenator(val)
173-
bools_to_intervals(parse_binary(val))
173+
bools_to_intervals(parse_binary(val)).compact
174174
end
175175

176176
# Tonnetz moves

0 commit comments

Comments
 (0)