youpy-scissor 0.0.13 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
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