youpy-scissor 0.0.15 → 0.0.16
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.
- data/README.rdoc +3 -3
- data/Rakefile +1 -1
- data/lib/scissor/chunk.rb +21 -22
- data/lib/scissor/fragment.rb +31 -1
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -37,13 +37,13 @@ supported file format:
|
|
37
37
|
foo + bar > 'foobar.mp3'
|
38
38
|
|
39
39
|
# slice + concat
|
40
|
-
|
40
|
+
foo[10, 1] + bar.slice[2, 3] > 'slicefoobar.mp3'
|
41
41
|
|
42
42
|
# slice + concat + loop
|
43
|
-
|
43
|
+
foo[10, 1] + bar[2, 3] * 4 > 'slicefoobarloop.mp3'
|
44
44
|
|
45
45
|
# split
|
46
|
-
(Scissor
|
46
|
+
(Scissor('sequence.mp3') / 16).first.to_file('split.mp3')
|
47
47
|
|
48
48
|
# replace first 10 seconds with 30 seconds of silence
|
49
49
|
foo.replace(0, 10, Scissor.silence(30)).to_file('replace.mp3')
|
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.
|
20
|
+
VERS = "0.0.16"
|
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/chunk.rb
CHANGED
@@ -21,7 +21,7 @@ module Scissor
|
|
21
21
|
|
22
22
|
if filename
|
23
23
|
@fragments << Fragment.new(
|
24
|
-
|
24
|
+
filename,
|
25
25
|
0,
|
26
26
|
SoundFile.new(filename).length)
|
27
27
|
end
|
@@ -43,38 +43,27 @@ module Scissor
|
|
43
43
|
end
|
44
44
|
|
45
45
|
new_instance = self.class.new
|
46
|
-
|
46
|
+
remaining_start = start.to_f
|
47
|
+
remaining_length = length.to_f
|
47
48
|
|
48
49
|
@fragments.each do |fragment|
|
49
|
-
|
50
|
-
|
50
|
+
new_fragment, remaining_start, remaining_length =
|
51
|
+
fragment.create(remaining_start, remaining_length)
|
51
52
|
|
52
|
-
|
53
|
+
if new_fragment
|
54
|
+
new_instance.add_fragment(new_fragment)
|
53
55
|
end
|
54
56
|
|
55
|
-
if
|
56
|
-
new_instance.add_fragment(Fragment.new(
|
57
|
-
fragment.filename,
|
58
|
-
fragment.start + start,
|
59
|
-
remain,
|
60
|
-
fragment.reversed?))
|
61
|
-
|
57
|
+
if remaining_length == 0
|
62
58
|
break
|
63
|
-
else
|
64
|
-
remain = remain - (fragment.duration - start)
|
65
|
-
new_instance.add_fragment(Fragment.new(
|
66
|
-
fragment.filename,
|
67
|
-
fragment.start + start,
|
68
|
-
fragment.duration - start,
|
69
|
-
fragment.reversed?))
|
70
|
-
|
71
|
-
start = 0
|
72
59
|
end
|
73
60
|
end
|
74
61
|
|
75
62
|
new_instance
|
76
63
|
end
|
77
64
|
|
65
|
+
alias [] slice
|
66
|
+
|
78
67
|
def concat(other)
|
79
68
|
other.fragments.each do |fragment|
|
80
69
|
add_fragment(fragment)
|
@@ -83,7 +72,17 @@ module Scissor
|
|
83
72
|
self
|
84
73
|
end
|
85
74
|
|
86
|
-
alias
|
75
|
+
alias << concat
|
76
|
+
|
77
|
+
def +(other)
|
78
|
+
new_instance = Scissor()
|
79
|
+
|
80
|
+
(@fragments + other.fragments).each do |fragment|
|
81
|
+
new_instance.add_fragment(fragment)
|
82
|
+
end
|
83
|
+
|
84
|
+
new_instance
|
85
|
+
end
|
87
86
|
|
88
87
|
def loop(count)
|
89
88
|
orig_fragments = @fragments.clone
|
data/lib/scissor/fragment.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
1
3
|
module Scissor
|
2
4
|
class Fragment
|
3
5
|
attr_reader :filename, :start, :duration
|
4
6
|
|
5
7
|
def initialize(filename, start, duration, reverse = false)
|
6
|
-
@filename = filename
|
8
|
+
@filename = Pathname.new(filename)
|
7
9
|
@start = start
|
8
10
|
@duration = duration
|
9
11
|
@reverse = reverse
|
@@ -14,5 +16,33 @@ module Scissor
|
|
14
16
|
def reversed?
|
15
17
|
@reverse
|
16
18
|
end
|
19
|
+
|
20
|
+
def create(remaining_start, remaining_length)
|
21
|
+
new_fragment = nil
|
22
|
+
|
23
|
+
if remaining_start >= duration
|
24
|
+
remaining_start -= duration
|
25
|
+
else
|
26
|
+
if remaining_start + remaining_length >= duration
|
27
|
+
new_fragment = self.class.new(
|
28
|
+
filename,
|
29
|
+
start + remaining_start,
|
30
|
+
duration - remaining_start)
|
31
|
+
|
32
|
+
remaining_length -= (duration - remaining_start)
|
33
|
+
remaining_start = 0
|
34
|
+
else
|
35
|
+
new_fragment = self.class.new(
|
36
|
+
filename,
|
37
|
+
start + remaining_start,
|
38
|
+
remaining_length)
|
39
|
+
|
40
|
+
remaining_start = 0
|
41
|
+
remaining_length = 0
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
return new_fragment, remaining_start, remaining_length
|
46
|
+
end
|
17
47
|
end
|
18
48
|
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.
|
4
|
+
version: 0.0.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- youpy
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-04-
|
12
|
+
date: 2009-04-08 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|