youpy-scissor 0.0.9 → 0.0.10
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 +4 -0
 - data/Rakefile +1 -1
 - data/lib/scissor.rb +33 -5
 - metadata +1 -1
 
    
        data/README.rdoc
    CHANGED
    
    | 
         @@ -41,6 +41,10 @@ utility to chop mp3 files 
     | 
|
| 
       41 
41 
     | 
    
         
             
            	 # replace first 10 seconds with 30 seconds of silence
         
     | 
| 
       42 
42 
     | 
    
         
             
            	 foo.replace(0, 10, Scissor.silence(30)).to_file('replace.mp3')
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
      
 44 
     | 
    
         
            +
            	 # reverse + concat + loop
         
     | 
| 
      
 45 
     | 
    
         
            +
            	 beat = foo.slice(0, 1)
         
     | 
| 
      
 46 
     | 
    
         
            +
            	 ((beat * 3) + beat.reverse) * 80
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
       44 
48 
     | 
    
         
             
            == Copyright
         
     | 
| 
       45 
49 
     | 
    
         | 
| 
       46 
50 
     | 
    
         
             
            Author:: youpy <youpy@buycheapviagraonlinenow.com>
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -17,7 +17,7 @@ DESCRIPTION       = "utility to chop mp3 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.10"
         
     | 
| 
       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
    
    | 
         @@ -52,7 +52,8 @@ class Scissor 
     | 
|
| 
       52 
52 
     | 
    
         
             
                    new_instance.add_fragment(Fragment.new(
         
     | 
| 
       53 
53 
     | 
    
         
             
                        fragment.filename,
         
     | 
| 
       54 
54 
     | 
    
         
             
                        fragment.start + start,
         
     | 
| 
       55 
     | 
    
         
            -
                        remain 
     | 
| 
      
 55 
     | 
    
         
            +
                        remain,
         
     | 
| 
      
 56 
     | 
    
         
            +
                        fragment.reversed?))
         
     | 
| 
       56 
57 
     | 
    
         | 
| 
       57 
58 
     | 
    
         
             
                    break
         
     | 
| 
       58 
59 
     | 
    
         
             
                  else
         
     | 
| 
         @@ -60,7 +61,8 @@ class Scissor 
     | 
|
| 
       60 
61 
     | 
    
         
             
                    new_instance.add_fragment(Fragment.new(
         
     | 
| 
       61 
62 
     | 
    
         
             
                        fragment.filename,
         
     | 
| 
       62 
63 
     | 
    
         
             
                        fragment.start + start,
         
     | 
| 
       63 
     | 
    
         
            -
                        fragment.duration - start 
     | 
| 
      
 64 
     | 
    
         
            +
                        fragment.duration - start,
         
     | 
| 
      
 65 
     | 
    
         
            +
                        fragment.reversed?))
         
     | 
| 
       64 
66 
     | 
    
         | 
| 
       65 
67 
     | 
    
         
             
                    start = 0
         
     | 
| 
       66 
68 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -146,6 +148,20 @@ class Scissor 
     | 
|
| 
       146 
148 
     | 
    
         
             
                new_instance
         
     | 
| 
       147 
149 
     | 
    
         
             
              end
         
     | 
| 
       148 
150 
     | 
    
         | 
| 
      
 151 
     | 
    
         
            +
              def reverse
         
     | 
| 
      
 152 
     | 
    
         
            +
                new_instance = self.class.new
         
     | 
| 
      
 153 
     | 
    
         
            +
             
     | 
| 
      
 154 
     | 
    
         
            +
                @fragments.reverse.each do |fragment|
         
     | 
| 
      
 155 
     | 
    
         
            +
                  new_instance.add_fragment(Fragment.new(
         
     | 
| 
      
 156 
     | 
    
         
            +
                      fragment.filename,
         
     | 
| 
      
 157 
     | 
    
         
            +
                      fragment.start,
         
     | 
| 
      
 158 
     | 
    
         
            +
                      fragment.duration,
         
     | 
| 
      
 159 
     | 
    
         
            +
                      !fragment.reversed?))
         
     | 
| 
      
 160 
     | 
    
         
            +
                end
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
      
 162 
     | 
    
         
            +
                new_instance
         
     | 
| 
      
 163 
     | 
    
         
            +
              end
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
       149 
165 
     | 
    
         
             
              def to_file(filename, options = {})
         
     | 
| 
       150 
166 
     | 
    
         
             
                if @fragments.empty?
         
     | 
| 
       151 
167 
     | 
    
         
             
                  raise EmptyFragment
         
     | 
| 
         @@ -176,6 +192,11 @@ class Scissor 
     | 
|
| 
       176 
192 
     | 
    
         | 
| 
       177 
193 
     | 
    
         
             
                begin
         
     | 
| 
       178 
194 
     | 
    
         
             
                  @fragments.each_with_index do |fragment, index|
         
     | 
| 
      
 195 
     | 
    
         
            +
                    if !index.zero? && (index % 80).zero?
         
     | 
| 
      
 196 
     | 
    
         
            +
                      run_command(cmd.join(' '))
         
     | 
| 
      
 197 
     | 
    
         
            +
                      cmd = %w/ecasound/
         
     | 
| 
      
 198 
     | 
    
         
            +
                    end
         
     | 
| 
      
 199 
     | 
    
         
            +
             
     | 
| 
       179 
200 
     | 
    
         
             
                    fragment_tmpfile =
         
     | 
| 
       180 
201 
     | 
    
         
             
                      tmpdir + (Digest::MD5.hexdigest(fragment.filename) + '.wav')
         
     | 
| 
       181 
202 
     | 
    
         | 
| 
         @@ -185,8 +206,10 @@ class Scissor 
     | 
|
| 
       185 
206 
     | 
    
         | 
| 
       186 
207 
     | 
    
         
             
                    cmd <<
         
     | 
| 
       187 
208 
     | 
    
         
             
                      "-a:#{index} " +
         
     | 
| 
       188 
     | 
    
         
            -
                      "-i: 
     | 
| 
       189 
     | 
    
         
            -
                       
     | 
| 
      
 209 
     | 
    
         
            +
                      "-i:" +
         
     | 
| 
      
 210 
     | 
    
         
            +
                      (fragment.reversed? ? 'reverse,' : '') +
         
     | 
| 
      
 211 
     | 
    
         
            +
                      "select,#{fragment.start},#{fragment.duration},\"#{fragment_tmpfile}\" " +
         
     | 
| 
      
 212 
     | 
    
         
            +
                      "-o:#{tmpfile} " +
         
     | 
| 
       190 
213 
     | 
    
         
             
                      "-y:#{position}"
         
     | 
| 
       191 
214 
     | 
    
         | 
| 
       192 
215 
     | 
    
         
             
                    position += fragment.duration
         
     | 
| 
         @@ -225,12 +248,17 @@ class Scissor 
     | 
|
| 
       225 
248 
     | 
    
         
             
              class Fragment
         
     | 
| 
       226 
249 
     | 
    
         
             
                attr_reader :filename, :start, :duration
         
     | 
| 
       227 
250 
     | 
    
         | 
| 
       228 
     | 
    
         
            -
                def initialize(filename, start, duration)
         
     | 
| 
      
 251 
     | 
    
         
            +
                def initialize(filename, start, duration, reverse = false)
         
     | 
| 
       229 
252 
     | 
    
         
             
                  @filename = filename
         
     | 
| 
       230 
253 
     | 
    
         
             
                  @start = start
         
     | 
| 
       231 
254 
     | 
    
         
             
                  @duration = duration
         
     | 
| 
      
 255 
     | 
    
         
            +
                  @reverse = reverse
         
     | 
| 
       232 
256 
     | 
    
         | 
| 
       233 
257 
     | 
    
         
             
                  freeze
         
     | 
| 
       234 
258 
     | 
    
         
             
                end
         
     | 
| 
      
 259 
     | 
    
         
            +
             
     | 
| 
      
 260 
     | 
    
         
            +
                def reversed?
         
     | 
| 
      
 261 
     | 
    
         
            +
                  @reverse
         
     | 
| 
      
 262 
     | 
    
         
            +
                end
         
     | 
| 
       235 
263 
     | 
    
         
             
              end
         
     | 
| 
       236 
264 
     | 
    
         
             
            end
         
     |