picotune 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/picotune.rb +18 -6
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a35c7146e96a70bdf13083331db163fda9137e6cd10baac06e0fd6ef517de77e
|
4
|
+
data.tar.gz: acd8d878432d7770e168aa0307b5d3496c502f22593ad2df5e2dcac651d91b94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7607d472022133602b24139e9508d9bd68b4066994f445386faf2dac2272e132d5df6601423dbb0f292c10170f75f72650ed4ba38711c63d83e11e246c182efe
|
7
|
+
data.tar.gz: 4e5dbb38360c7f2db24cc0f7801a8973b79d4448cc72565913b4fd52d147514973c4ea3a2f1781602373d8d51d2e3b8d22211243b3996d2c3fa944c2a1e51657
|
data/lib/picotune.rb
CHANGED
@@ -221,10 +221,14 @@ class PicoTune::Phrase
|
|
221
221
|
|
222
222
|
@melodies.each do |melody|
|
223
223
|
temp = Array.new(buffer_size) { PicoTune::Sample.new } if melody.instrument.reverb?
|
224
|
-
sub_buffer_size = buffer_size / (@beats * @subbeats)
|
224
|
+
sub_buffer_size = (buffer_size.to_f / (@beats * @subbeats)).ceil
|
225
225
|
last_step_number = -1
|
226
226
|
carry_over = 0
|
227
227
|
|
228
|
+
if melody.pattern.steps.count != @beats * @subbeats
|
229
|
+
raise "Mismatch between Pattern \"#{melody.pattern.name}\", which has #{melody.pattern.steps.count} steps, and Phrase \"#{@name}\", which has #{@beats} beats and #{subbeats} subbeats (meaning any pattern it uses should have #{@beats * @subbeats} steps). Please check your pattern and phrase definitions to find the discrepancy!"
|
230
|
+
end
|
231
|
+
|
228
232
|
melody.pattern.steps.each_with_index do |note, step_number|
|
229
233
|
unless note == '.'
|
230
234
|
buffer_pointer = step_number * sub_buffer_size
|
@@ -445,8 +449,13 @@ class PicoTune::Assembler
|
|
445
449
|
phrases = list.select { |item| item['type'] == 'phrase' }.map do |item|
|
446
450
|
melodies = item['melodies'].map do |m|
|
447
451
|
instrument = instruments.find { |i| i.name == m[0] }
|
452
|
+
|
453
|
+
raise "Instrument named \"#{m[0]}\" doesn't exist!" unless instrument
|
454
|
+
|
448
455
|
pattern = patterns.find { |p| p.name == m[1] }
|
449
456
|
|
457
|
+
raise "Pattern named \"#{m[1]}\" doesn't exist!" unless pattern
|
458
|
+
|
450
459
|
PicoTune::Melody.new instrument, pattern
|
451
460
|
end
|
452
461
|
|
@@ -460,13 +469,16 @@ class PicoTune::Assembler
|
|
460
469
|
end
|
461
470
|
|
462
471
|
sequence = list.find { |item| item['type'] == 'sequence' }
|
472
|
+
|
473
|
+
raise "Please define a sequence in your txt file with \"sequence s1 s2 s3...\" where s1/s2/s3/etc are names of phrases" unless sequence
|
474
|
+
|
463
475
|
sequence['list'].each do |phrase_name|
|
464
476
|
raise "undefined phrase \"#{phrase_name}\" in sequence" unless phrases.find { |p| p.name == phrase_name }
|
465
477
|
end
|
466
478
|
|
467
|
-
|
468
479
|
tune = list.find { |item| item['type'] == 'tune' }
|
469
|
-
|
480
|
+
|
481
|
+
raise "Please define your tune's name in your txt file with \"tune <tune name>\"" unless tune && tune['name']
|
470
482
|
|
471
483
|
PicoTune::Tune.new tune['name'], sequence['list'], phrases
|
472
484
|
end
|
@@ -497,9 +509,9 @@ class PicoTune::Parser
|
|
497
509
|
item['list'] = parts[1..-1]
|
498
510
|
elsif parts[0] == 'pattern'
|
499
511
|
item['name'] = parts[1]
|
500
|
-
item['list'] = pattern_steps
|
512
|
+
item['list'] = pattern_steps parts[2..-1].join
|
501
513
|
else
|
502
|
-
item['name'] = parts[1]
|
514
|
+
item['name'] = parts[1..-1].join
|
503
515
|
end
|
504
516
|
|
505
517
|
bag << item
|
@@ -512,7 +524,7 @@ class PicoTune::Parser
|
|
512
524
|
elsif collecting_melodies
|
513
525
|
bag.last['melodies'].push parts
|
514
526
|
else
|
515
|
-
bag.last[parts[0]] = parts[1]
|
527
|
+
bag.last[parts[0]] = parts[1..-1].join
|
516
528
|
end
|
517
529
|
end
|
518
530
|
|