youpy-scissor 0.0.13 → 0.0.14

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.
Files changed (4) hide show
  1. data/README.rdoc +3 -3
  2. data/Rakefile +1 -1
  3. data/lib/scissor.rb +32 -0
  4. metadata +1 -1
data/README.rdoc CHANGED
@@ -48,9 +48,9 @@ supported file format:
48
48
  # replace first 10 seconds with 30 seconds of silence
49
49
  foo.replace(0, 10, Scissor.silence(30)).to_file('replace.mp3')
50
50
 
51
- # reverse + concat + loop
52
- beat = foo.slice(0, 1)
53
- ((beat * 3) + beat.reverse) * 80
51
+ # sequence + loop
52
+ seq = Scissor.sequence('x y xyz', 0.2)
53
+ seq.apply(:x => foo, :y => bar, :z => foo.reverse) * 4 > 'sequence.wav'
54
54
 
55
55
  == Copyright
56
56
 
data/Rakefile CHANGED
@@ -17,7 +17,7 @@ DESCRIPTION = "utility to chop sound files"
17
17
  RUBYFORGE_PROJECT = "scissor"
18
18
  HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
19
19
  BIN_FILES = %w( )
20
- VERS = "0.0.13"
20
+ VERS = "0.0.14"
21
21
 
22
22
  REV = File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
23
23
  CLEAN.include ['**/.*.sw?', '*.gem', '.config']
data/lib/scissor.rb CHANGED
@@ -267,6 +267,10 @@ class Scissor
267
267
  slice(0, 1).
268
268
  fill(duration)
269
269
  end
270
+
271
+ def sequence(*args)
272
+ Sequence.new(*args)
273
+ end
270
274
  end
271
275
 
272
276
  class SoundFile
@@ -314,4 +318,32 @@ class Scissor
314
318
  @reverse
315
319
  end
316
320
  end
321
+
322
+ class Sequence
323
+ def initialize(pattern, duration_per_step)
324
+ @pattern = pattern
325
+ @duration_per_step = duration_per_step
326
+ end
327
+
328
+ def apply(scissors)
329
+ result = Scissor.new
330
+
331
+ @pattern.split(//).each do |c|
332
+ if scissors.include?(c.to_sym)
333
+ scissor = scissors[c.to_sym]
334
+
335
+ if @duration_per_step > scissor.duration
336
+ result += scissor
337
+ result += Scissor.silence(@duration_per_step - scissor.duration)
338
+ else
339
+ result += scissors[c.to_sym].slice(0, @duration_per_step)
340
+ end
341
+ else
342
+ result += Scissor.silence(@duration_per_step)
343
+ end
344
+ end
345
+
346
+ result
347
+ end
348
+ end
317
349
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: youpy-scissor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - youpy