youpy-scissor-echonest 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -21,7 +21,7 @@ DESCRIPTION = "Scissor extension to use Echo Nest Developers API"
21
21
  RUBYFORGE_PROJECT = "scissorechonest"
22
22
  HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
23
23
  BIN_FILES = %w( )
24
- VERS = "0.0.2"
24
+ VERS = "0.0.3"
25
25
 
26
26
  REV = File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
27
27
  CLEAN.include ['**/.*.sw?', '*.gem', '.config']
@@ -61,8 +61,8 @@ spec = Gem::Specification.new do |s|
61
61
  s.require_path = "lib"
62
62
  s.test_files = Dir["test/test_*.rb"]
63
63
 
64
- s.add_dependency('scissor', '>=0.0.19')
65
- s.add_dependency('ruby-echonest', '>=0.0.3')
64
+ s.add_dependency('youpy-scissor', '>=0.0.19')
65
+ s.add_dependency('youpy-ruby-echonest', '>=0.0.3')
66
66
  #s.required_ruby_version = '>= 1.8.2'
67
67
 
68
68
  s.files = %w(README.rdoc ChangeLog Rakefile) +
@@ -1,5 +1,6 @@
1
1
  require 'scissor'
2
2
  require 'echonest'
3
+ require 'scissor/echonest/meta'
3
4
 
4
5
  module Scissor
5
6
  def self.echonest_api_key=(echonest_api_key)
@@ -22,7 +23,9 @@ module Scissor
22
23
 
23
24
  beats = echonest.get_beats(tmpfile)
24
25
  beats.inject do |m, beat|
25
- chunks << self[m.start, beat.start - m.start]
26
+ chunk = self[m.start, beat.start - m.start]
27
+ Echonest::Meta::Beat.init(chunk, m)
28
+ chunks << chunk
26
29
  beat
27
30
  end
28
31
 
@@ -36,7 +39,9 @@ module Scissor
36
39
 
37
40
  segments = echonest.get_segments(tmpfile)
38
41
  segments.inject([]) do |chunks, segment|
39
- chunks << self[segment.start, segment.duration]
42
+ chunk = self[segment.start, segment.duration]
43
+ Echonest::Meta::Segment.init(chunk, segment)
44
+ chunks << chunk
40
45
  chunks
41
46
  end
42
47
  end
@@ -0,0 +1,32 @@
1
+ module Scissor
2
+ module Echonest
3
+ module Meta
4
+ module Beat
5
+ def self.init(obj, beat)
6
+ obj.extend self
7
+ obj.instance_eval {
8
+ @confidence = beat.confidence
9
+ @start = beat.start
10
+ }
11
+ end
12
+
13
+ attr_reader :confidence, :start
14
+ end
15
+
16
+ module Segment
17
+ def self.init(obj, segment)
18
+ obj.extend self
19
+ obj.instance_eval {
20
+ @start = segment.start
21
+ @loudness = segment.loudness
22
+ @max_loudness = segment.max_loudness
23
+ @pitches = segment.pitches
24
+ @timbre = segment.timbre
25
+ }
26
+ end
27
+
28
+ attr_reader :start, :loudness, :max_loudness, :pitches, :timbre
29
+ end
30
+ end
31
+ end
32
+ end
@@ -24,7 +24,8 @@ describe Scissor do
24
24
  beats.size.should eql(384)
25
25
  beats[0].should be_an_instance_of(Scissor::Chunk)
26
26
  beats[0].duration.should eql(0.47604)
27
- beats[0].fragments.first.filename.to_s.should eql(fixture('sample.mp3'))
27
+ beats[0].fragments.first.filename.should eql(fixture('sample.mp3'))
28
+ beats[0].confidence.should eql(0.296)
28
29
  end
29
30
 
30
31
  it 'should get segments' do
@@ -40,6 +41,13 @@ describe Scissor do
40
41
  segments.size.should eql(830)
41
42
  segments[0].should be_an_instance_of(Scissor::Chunk)
42
43
  segments[0].duration.should eql(0.30327)
43
- segments[0].fragments.first.filename.to_s.should eql(fixture('sample.mp3'))
44
+ segments[0].fragments.first.filename.should eql(fixture('sample.mp3'))
45
+ segments[0].start.should eql(0.0)
46
+ segments[0].loudness.time.should eql(0.0)
47
+ segments[0].loudness.value.should eql(-60.0)
48
+ segments[0].max_loudness.time.should eql(0.31347)
49
+ segments[0].max_loudness.value.should eql(-56.818)
50
+ segments[0].pitches.first.should eql(0.835)
51
+ segments[0].timbre.first.should eql(0.079)
44
52
  end
45
53
  end
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  $:.unshift File.dirname(__FILE__) + '/../lib/'
2
2
 
3
3
  require "scissor/echonest"
4
+ require "pathname"
4
5
 
5
6
  module SpecHelper
6
7
  def fixture(filename)
7
- File.dirname(__FILE__) + '/fixtures/' + filename
8
+ Pathname.new(File.dirname(__FILE__) + '/fixtures/' + filename).realpath
8
9
  end
9
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: youpy-scissor-echonest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - youpy
@@ -9,11 +9,11 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-06 00:00:00 -07:00
12
+ date: 2009-07-23 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: scissor
16
+ name: youpy-scissor
17
17
  type: :runtime
18
18
  version_requirement:
19
19
  version_requirements: !ruby/object:Gem::Requirement
@@ -23,7 +23,7 @@ dependencies:
23
23
  version: 0.0.19
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
- name: ruby-echonest
26
+ name: youpy-ruby-echonest
27
27
  type: :runtime
28
28
  version_requirement:
29
29
  version_requirements: !ruby/object:Gem::Requirement
@@ -53,6 +53,8 @@ files:
53
53
  - spec/spec.opts
54
54
  - spec/spec_helper.rb
55
55
  - lib/scissor
56
+ - lib/scissor/echonest
57
+ - lib/scissor/echonest/meta.rb
56
58
  - lib/scissor/echonest.rb
57
59
  has_rdoc: true
58
60
  homepage: http://scissorechonest.rubyforge.org