hindbaer 0.0.2 → 0.0.3

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.markdown CHANGED
@@ -14,25 +14,37 @@ Usage
14
14
 
15
15
  Parse a session file:
16
16
 
17
- project = Hindbaer::Session.new('spec/fixtures/project.nhsx')
18
- project.software_version
19
- project.sample_rate
20
- project.title
21
- project.subtitle
22
- project.description
23
- project.author
24
- project.album
25
- project.album_track
26
- project.keywords
27
- project.length # in seconds
17
+ session = Hindbaer::Session.new('spec/fixtures/project.nhsx')
18
+
19
+ session.software_version
20
+ session.sample_rate
21
+
22
+ session.info.title
23
+ session.info.subtitle
24
+ session.info.description
25
+ session.info.author
26
+ session.info.album
27
+ session.ínfo.album_track
28
+ session.info.keywords
29
+ # etc.
30
+
31
+ session.length # in seconds
28
32
 
29
33
  Retrieve all tracks:
30
34
 
31
- tracks = project.tracks
35
+ tracks = session.tracks
32
36
  track = tracks.first
33
37
  track.name
34
38
  track.panning
35
39
 
40
+ Retrieve all track plugins:
41
+
42
+ plugins = track.plugins
43
+ plugin = plugins.first
44
+ plugin.id
45
+ plugin.name
46
+ plugin.uid
47
+
36
48
  Retrieve all regions for a given track:
37
49
 
38
50
  regions = tracks.first.regions
@@ -55,9 +67,23 @@ Retrieve all fades for a given region:
55
67
  fade.length
56
68
  fade.gain
57
69
 
70
+ Retrieve all clipboard groups and their clips:
71
+
72
+ groups = session.clipboard_groups
73
+ group = group.first
74
+ group.caption
75
+ group.num_clips_used
76
+
77
+ clips = group.clips
78
+ clip = clips.first
79
+ clip.reference
80
+ clip.name
81
+ clip.length
82
+ clip.leq # (long-term equivalent level)
83
+
58
84
  Retrieve all markers:
59
85
 
60
- markers = project.markers
86
+ markers = session.markers
61
87
  marker = markers.first
62
88
  marker.id
63
89
  marker.name
@@ -65,8 +91,11 @@ Retrieve all markers:
65
91
 
66
92
  Retrieve all audio file references:
67
93
 
68
- audio_pool = project.audio_pool
69
- file = audio_pool.first
94
+ audio_pool = session.audio_pool
95
+ audio_pool.path
96
+ audio_pool.location
97
+
98
+ file = audio_pool.files.first
70
99
  file.id
71
100
  file.name
72
101
  file.duration
data/lib/hindbaer.rb CHANGED
@@ -4,8 +4,26 @@ require 'nokogiri'
4
4
 
5
5
  require 'hindbaer/version'
6
6
  require 'hindbaer/session'
7
- require 'hindbaer/audio'
7
+ require 'hindbaer/info'
8
+ require 'hindbaer/audio_pool'
9
+ require 'hindbaer/file'
8
10
  require 'hindbaer/track'
9
11
  require 'hindbaer/region'
10
12
  require 'hindbaer/fade'
11
- require 'hindbaer/marker'
13
+ require 'hindbaer/plugin'
14
+ require 'hindbaer/group'
15
+ require 'hindbaer/clip'
16
+ require 'hindbaer/marker'
17
+
18
+ module Hindbaer
19
+ extend self
20
+
21
+ def tc_to_secs(timecode)
22
+ seconds, minutes, hours = timecode.split(':').reverse
23
+ total = seconds.to_f if seconds
24
+ total += minutes.to_f * 60 if minutes
25
+ total += hours.to_f * 60 * 60 if hours
26
+ total
27
+ end
28
+
29
+ end
@@ -0,0 +1,21 @@
1
+ module Hindbaer
2
+ class AudioPool
3
+
4
+ def initialize(fragment)
5
+ @doc = fragment
6
+ end
7
+
8
+ def path
9
+ @doc['Path']
10
+ end
11
+
12
+ def location
13
+ @doc['Location']
14
+ end
15
+
16
+ def files
17
+ @doc.css('File').map { |f| Hindbaer::File.new(f.dup.unlink) }
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,28 @@
1
+ module Hindbaer
2
+ class Clip
3
+
4
+ def initialize(fragment, group)
5
+ @doc = fragment
6
+ @group = group
7
+ end
8
+
9
+ attr_reader :group
10
+
11
+ def reference
12
+ id = @doc['Ref'].to_i
13
+ self.group.session.audio_pool.files.find { |a| a.id == id }
14
+ end
15
+
16
+ def name
17
+ @doc['Name']
18
+ end
19
+
20
+ def length
21
+ @doc['Length']
22
+ end
23
+
24
+ def leq
25
+ @doc['Leq'].to_f
26
+ end
27
+ end
28
+ end
data/lib/hindbaer/fade.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  module Hindbaer
2
2
  class Fade
3
3
 
4
- def initialize(node)
5
- @doc = node
4
+ def initialize(fragment)
5
+ @doc = fragment
6
6
  end
7
7
 
8
8
  def start_time
@@ -1,5 +1,5 @@
1
1
  module Hindbaer
2
- class Audio
2
+ class File
3
3
  def initialize(fragment)
4
4
  @doc = fragment
5
5
  end
@@ -0,0 +1,24 @@
1
+ module Hindbaer
2
+ class Group
3
+
4
+ def initialize(fragment, session)
5
+ @doc = fragment
6
+ @session = session
7
+ end
8
+
9
+ attr_reader :session
10
+
11
+ def caption
12
+ @doc['Caption']
13
+ end
14
+
15
+ def num_clips_used
16
+ @doc['Used'].to_i
17
+ end
18
+
19
+ def clips
20
+ @doc.css('Clip').map { |c| Hindbaer::Clip.new(c.dup.unlink, self) }
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,77 @@
1
+ module Hindbaer
2
+ class Info
3
+
4
+ def initialize(fragment)
5
+ @doc = fragment
6
+ end
7
+
8
+ def name
9
+ @doc['Name']
10
+ end
11
+
12
+ def title
13
+ @doc['Title']
14
+ end
15
+
16
+ def subtitle
17
+ @doc['Subtitle']
18
+ end
19
+
20
+ def author
21
+ @doc['Author']
22
+ end
23
+
24
+ def link
25
+ @doc['Link']
26
+ end
27
+
28
+ def email
29
+ @doc['Email']
30
+ end
31
+
32
+ def description
33
+ @doc['Description']
34
+ end
35
+
36
+ def album
37
+ @doc['Album']
38
+ end
39
+
40
+ def album_track
41
+ @doc['Track']
42
+ end
43
+
44
+ def artist
45
+ @doc['Artist']
46
+ end
47
+
48
+ def composer
49
+ @doc['Composer']
50
+ end
51
+
52
+ def date
53
+ @doc['Date']
54
+ end
55
+
56
+ def copyright
57
+ @doc['Copyright']
58
+ end
59
+
60
+ def explicit?
61
+ @doc['Explicit'] == 'Yes'
62
+ end
63
+
64
+ def keywords
65
+ @doc['Keywords'].split(',').map { |k| k.strip }
66
+ end
67
+
68
+ def identifier
69
+ @doc['Identifier']
70
+ end
71
+
72
+ def reference
73
+ @doc['Reference']
74
+ end
75
+
76
+ end
77
+ end
@@ -0,0 +1,20 @@
1
+ module Hindbaer
2
+ class Plugin
3
+
4
+ def initialize(fragment)
5
+ @doc = fragment
6
+ end
7
+
8
+ def id
9
+ @doc['Id'].to_i
10
+ end
11
+
12
+ def name
13
+ @doc['Name']
14
+ end
15
+
16
+ def uid
17
+ @doc['UID']
18
+ end
19
+ end
20
+ end
@@ -1,7 +1,7 @@
1
1
  module Hindbaer
2
2
  class Region
3
- def initialize(node, track = nil)
4
- @doc = node
3
+ def initialize(fragment, track = nil)
4
+ @doc = fragment
5
5
  @track = track
6
6
  end
7
7
 
@@ -9,7 +9,7 @@ module Hindbaer
9
9
 
10
10
  def reference
11
11
  id = @doc['Ref'].to_i
12
- self.track.session.audio_pool.find { |a| a.id == id }
12
+ self.track.session.audio_pool.files.find { |a| a.id == id }
13
13
  end
14
14
 
15
15
  def name
@@ -2,7 +2,7 @@ module Hindbaer
2
2
 
3
3
  class Session
4
4
  def initialize(file)
5
- File.open(file, 'r') do |file|
5
+ ::File.open(file, 'r') do |file|
6
6
  @doc = Nokogiri::XML(file)
7
7
  end
8
8
  end
@@ -15,54 +15,22 @@ module Hindbaer
15
15
  @doc.at_css('Session')['Samplerate']
16
16
  end
17
17
 
18
- def name
19
- info['Name']
20
- end
21
-
22
- def title
23
- info['Title']
24
- end
25
-
26
- def subtitle
27
- info['Subtitle']
28
- end
29
-
30
- def author
31
- info['Author']
32
- end
33
-
34
- def description
35
- info['Description']
36
- end
37
-
38
- def album
39
- info['Album']
40
- end
41
-
42
- def album_track
43
- info['Track']
44
- end
45
-
46
- def keywords
47
- info['Keywords'].split(',').map { |k| k.strip }
18
+ def info
19
+ Hindbaer::Info.new(@doc.at_css('Info').dup.unlink)
48
20
  end
49
21
 
50
22
  def audio_pool
51
- @doc.css('AudioPool File').map { |f| Hindbaer::Audio.new(f.dup.unlink) }
52
- end
53
-
54
- def audio_pool_path
55
- @doc.at_css('AudioPool')['Path']
56
- end
57
-
58
- def audio_pool_location
59
- @doc.at_css('AudioPool')['Location']
23
+ Hindbaer::AudioPool.new(@doc.at_css('AudioPool').dup.unlink)
60
24
  end
61
25
 
62
26
  def tracks
63
27
  @doc.css('Tracks Track').map { |t| Hindbaer::Track.new(t.dup.unlink, self) }
64
28
  end
65
29
 
30
+ def clipboard_groups
31
+ @doc.css('Clipboard Group').map { |g| Hindbaer::Group.new(g.dup.unlink, self) }
32
+ end
33
+
66
34
  def markers
67
35
  @doc.css('Markers Marker').map { |m| Hindbaer::Marker.new(m.dup.unlink) }
68
36
  end
@@ -73,24 +41,10 @@ module Hindbaer
73
41
  end.compact
74
42
 
75
43
  regions.map do |r|
76
- tc_to_secs(r.start_time) +
77
- tc_to_secs(r.length)
44
+ Hindbaer.tc_to_secs(r.start_time) +
45
+ Hindbaer.tc_to_secs(r.length)
78
46
  end.max
79
47
  end
80
-
81
- private
82
-
83
- def info
84
- @doc.at_css('Info')
85
- end
86
-
87
- def tc_to_secs(timecode)
88
- seconds, minutes, hours = timecode.split(':').reverse
89
- total = seconds.to_f if seconds
90
- total += minutes.to_f * 60 if minutes
91
- total += hours.to_f * 60 * 60 if hours
92
- total
93
- end
94
48
 
95
49
  end
96
50
  end
@@ -1,8 +1,8 @@
1
1
  module Hindbaer
2
2
  class Track
3
3
 
4
- def initialize(node, session = nil)
5
- @doc = node
4
+ def initialize(fragment, session = nil)
5
+ @doc = fragment
6
6
  @session = session
7
7
  end
8
8
 
@@ -19,5 +19,9 @@ module Hindbaer
19
19
  def regions
20
20
  @doc.css('Region').map { |r| Hindbaer::Region.new(r.dup.unlink, self) }
21
21
  end
22
+
23
+ def plugins
24
+ @doc.css('Plugin').map { |p| Hindbaer::Plugin.new(p.dup.unlink) }
25
+ end
22
26
  end
23
27
  end
@@ -1,3 +1,3 @@
1
1
  module Hindbaer
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hindbaer::AudioPool do
4
+
5
+ before do
6
+ session = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
+ @pool = session.audio_pool
8
+ end
9
+
10
+ it 'must return path to audio files' do
11
+ @pool.path.must_equal 'Example session Files'
12
+ end
13
+
14
+ it 'must return location of audio file path' do
15
+ @pool.location.must_equal '/Users/jamiehodge/Desktop'
16
+ end
17
+
18
+ end
data/spec/clip_spec.rb ADDED
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hindbaer::Clip do
4
+
5
+ before do
6
+ @session = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
+ @group = @session.clipboard_groups.first
8
+ @clip = @group.clips.first
9
+ end
10
+
11
+ it 'must return file reference' do
12
+ @clip.reference.must_be_kind_of Hindbaer::File
13
+ @clip.reference.id.must_equal 2
14
+ end
15
+
16
+ it 'must return name' do
17
+ @clip.name.must_equal 'Group 1 1'
18
+ end
19
+
20
+ it 'must return length' do
21
+ @clip.length.must_equal '04:03.669'
22
+ end
23
+
24
+ it 'must return long-term equivalent level' do
25
+ @clip.leq.must_equal 0
26
+ end
27
+
28
+ it 'must return parent group' do
29
+ @clip.group.must_equal @group
30
+ end
31
+ end
@@ -1,38 +1,38 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Hindbaer::Audio do
3
+ describe Hindbaer::File do
4
4
 
5
5
  before do
6
6
  project = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
- @audio = project.audio_pool.first
7
+ @file = project.audio_pool.files.first
8
8
  end
9
9
 
10
10
  it 'must return id' do
11
- @audio.id.must_equal 1
11
+ @file.id.must_equal 1
12
12
  end
13
13
 
14
14
  it 'must return name' do
15
- @audio.name.must_equal 'file1.wav'
15
+ @file.name.must_equal 'file1.wav'
16
16
  end
17
17
 
18
18
  it 'must return duration' do
19
- @audio.duration.must_equal '2:51:09.025'
19
+ @file.duration.must_equal '2:51:09.025'
20
20
  end
21
21
 
22
22
  it 'must return the number of channels' do
23
- @audio.num_channels.must_equal 2
23
+ @file.num_channels.must_equal 2
24
24
  end
25
25
 
26
26
  it 'must return leq' do
27
- @audio.leq.must_equal -10.4
27
+ @file.leq.must_equal -10.4
28
28
  end
29
29
 
30
30
  it 'must return dynamics' do
31
- @audio.dynamics.must_equal 0.0
31
+ @file.dynamics.must_equal 0.0
32
32
  end
33
33
 
34
34
  it 'must return the original file path' do
35
- @audio.original_path.must_equal '/path/to/file1.wav'
35
+ @file.original_path.must_equal '/path/to/file1.wav'
36
36
  end
37
37
 
38
38
  end
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
2
  <Session Version="Hindenburg Journalist Pro 1.12.1752" Samplerate="44100">
3
- <Info Subtitle="An example session" Album="An example album" Track="An example track" Author="Jamie Hodge" Description="An example description" Title="Example session" Keywords="example, test"/>
3
+ <Info Subtitle="Vestibulum Ante Ipsum Primis" Album="Nulla At Nulla" Composer="Quisque Eget Odio Ac" Track="1" Genre="Podcast" Author="Jamie Hodge" Link="http://" Email="user@example.com" Description="Etiam at risus et justo" Artist="Lorem Ipsum Dolor" Date="Today" Title="Suspendisse Dictum Feugiat Nisl Ut" Explicit="Yes" Copyright="2011" Identifier="Lorem Ipsum Dolor Sit" Keywords="In, Condimentum, Facilisis" Reference="Vivamus Hendrerit Arcu" />
4
4
  <AudioPool Path="Example session Files" Location="/Users/jamiehodge/Desktop">
5
5
  <File Id="1" Name="file1.wav" Duration="2:51:09.025" Channels="2" Leq="-10.4">
6
6
  <MetaData OriginalPath="/path/to/file1.wav"/>
@@ -21,6 +21,11 @@
21
21
  <Fade Start="00.200" Length="01.013" Gain="2.33123"/>
22
22
  </Region>
23
23
  <Region Ref="1" Name="Speak 2" Start="44.171" Length="08.808" Offset="01:11.521" FadeIn="00.036" FadeOut="00.245" Gain="-0.8" Leq="-16.4"/>
24
+ <Plugins>
25
+ <Plugin Id="0" Name="Equalizer" UID="nheq" Bypass="1" MF_Q="0.1" LF_Gain="0.5" HP_Freq="0.00454545" HP_Gain="0.2" HF_Q="0.1" MF_Gain="0.5" HF_Gain="0.5" HF_Freq="0.363636" HF_Type="0" MF_Freq="0.0454545" LF_Freq="0.00909091" LF_Q="0.1" LF_Type="0">
26
+ <![CDATA[]]>
27
+ </Plugin>
28
+ </Plugins>
24
29
  </Track>
25
30
  <Track Name="Interview" Pan="0.025">
26
31
  <Region Ref="2" Name="Interview 1" Start="10.758" Length="33.553" FadeIn="00.085" Gain="1.2" Leq="-21.1"/>
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hindbaer::Group do
4
+
5
+ before do
6
+ @session = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
+ @group = @session.clipboard_groups.first
8
+ end
9
+
10
+ it 'must return caption' do
11
+ @group.caption.must_equal 'Group 1'
12
+ end
13
+
14
+ it 'must return number of clips used' do
15
+ @group.num_clips_used.must_equal 2
16
+ end
17
+
18
+ it 'must return all clips' do
19
+ @group.clips.first.must_be_kind_of Hindbaer::Clip
20
+ @group.clips.size.must_equal 2
21
+ end
22
+
23
+ it 'must return session' do
24
+ @group.session.must_equal @session
25
+ end
26
+
27
+ end
data/spec/info_spec.rb ADDED
@@ -0,0 +1,74 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hindbaer::Info do
4
+
5
+ before do
6
+ session = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
+ @info = session.info
8
+ end
9
+
10
+ it 'must return title' do
11
+ @info.title.must_equal 'Suspendisse Dictum Feugiat Nisl Ut'
12
+ end
13
+
14
+ it 'must return subtitle' do
15
+ @info.subtitle.must_equal 'Vestibulum Ante Ipsum Primis'
16
+ end
17
+
18
+ it 'must return description' do
19
+ @info.description.must_equal 'Etiam at risus et justo'
20
+ end
21
+
22
+ it 'must return author' do
23
+ @info.author.must_equal 'Jamie Hodge'
24
+ end
25
+
26
+ it 'must return link' do
27
+ @info.link.must_equal 'http://'
28
+ end
29
+
30
+ it 'must return email' do
31
+ @info.email.must_equal 'user@example.com'
32
+ end
33
+
34
+ it 'must return album' do
35
+ @info.album.must_equal 'Nulla At Nulla'
36
+ end
37
+
38
+ it 'must return album track' do
39
+ @info.album_track.must_equal '1'
40
+ end
41
+
42
+ it 'must return artist' do
43
+ @info.artist.must_equal 'Lorem Ipsum Dolor'
44
+ end
45
+
46
+ it 'must return composer' do
47
+ @info.composer.must_equal 'Quisque Eget Odio Ac'
48
+ end
49
+
50
+ it 'must return date' do
51
+ @info.date.must_equal 'Today'
52
+ end
53
+
54
+ it 'must return copyright' do
55
+ @info.copyright.must_equal '2011'
56
+ end
57
+
58
+ it 'must return whether explicit' do
59
+ @info.explicit?.must_equal true
60
+ end
61
+
62
+ it 'must return identifier' do
63
+ @info.identifier.must_equal 'Lorem Ipsum Dolor Sit'
64
+ end
65
+
66
+ it 'must return reference' do
67
+ @info.reference.must_equal 'Vivamus Hendrerit Arcu'
68
+ end
69
+
70
+ it 'must return keywords' do
71
+ @info.keywords.must_equal %w{In Condimentum Facilisis}
72
+ end
73
+
74
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hindbaer::Plugin do
4
+
5
+ before do
6
+ project = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
+ track = project.tracks.first
8
+ @plugin = track.plugins.first
9
+ end
10
+
11
+ it 'must return id' do
12
+ @plugin.id.must_equal 0
13
+ end
14
+
15
+ it 'must return name' do
16
+ @plugin.name.must_equal 'Equalizer'
17
+ end
18
+
19
+ it 'must return uid (unique identifier)' do
20
+ @plugin.uid.must_equal 'nheq'
21
+ end
22
+
23
+ end
data/spec/region_spec.rb CHANGED
@@ -4,10 +4,12 @@ describe Hindbaer::Region do
4
4
 
5
5
  before do
6
6
  session = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
- @region = session.tracks.first.regions.first
7
+ @track = session.tracks.first
8
+ @region = @track.regions.first
8
9
  end
9
10
 
10
11
  it 'must return audio reference' do
12
+ @region.reference.must_be_kind_of Hindbaer::File
11
13
  @region.reference.id.must_equal 1
12
14
  end
13
15
 
@@ -44,6 +46,11 @@ describe Hindbaer::Region do
44
46
  end
45
47
 
46
48
  it 'must return all fades' do
49
+ @region.fades.first.must_be_kind_of Hindbaer::Fade
47
50
  @region.fades.size.must_equal 1
48
51
  end
52
+
53
+ it 'must return parent track' do
54
+ @region.track.must_equal @track
55
+ end
49
56
  end
data/spec/session_spec.rb CHANGED
@@ -14,51 +14,26 @@ describe Hindbaer::Session do
14
14
  @session.sample_rate.must_equal '44100'
15
15
  end
16
16
 
17
- it 'must return title' do
18
- @session.title.must_equal 'Example session'
17
+ it 'must return session info' do
18
+ @session.info.must_be_instance_of Hindbaer::Info
19
19
  end
20
20
 
21
- it 'must return subtitle' do
22
- @session.subtitle.must_equal 'An example session'
23
- end
24
-
25
- it 'must return description' do
26
- @session.description.must_equal 'An example description'
27
- end
28
-
29
- it 'must return author' do
30
- @session.author.must_equal 'Jamie Hodge'
31
- end
32
-
33
- it 'must return album' do
34
- @session.album.must_equal 'An example album'
35
- end
36
-
37
- it 'must return album track' do
38
- @session.album_track.must_equal 'An example track'
39
- end
40
-
41
- it 'must return keywords' do
42
- @session.keywords.must_equal ['example', 'test']
43
- end
44
-
45
- it 'must return all audio files' do
46
- @session.audio_pool.size.must_equal 4
47
- end
48
-
49
- it 'must return path to audio files' do
50
- @session.audio_pool_path.must_equal 'Example session Files'
51
- end
52
-
53
- it 'must return location of audio file path' do
54
- @session.audio_pool_location.must_equal '/Users/jamiehodge/Desktop'
21
+ it 'must return audio pool' do
22
+ @session.audio_pool.must_be_instance_of Hindbaer::AudioPool
55
23
  end
56
24
 
57
25
  it 'must return all tracks' do
26
+ @session.tracks.first.must_be_kind_of Hindbaer::Track
58
27
  @session.tracks.size.must_equal 5
59
28
  end
60
29
 
30
+ it 'must return clipboard groups' do
31
+ @session.clipboard_groups.first.must_be_kind_of Hindbaer::Group
32
+ @session.clipboard_groups.size.must_equal 4
33
+ end
34
+
61
35
  it 'must return all markers' do
36
+ @session.markers.first.must_be_kind_of Hindbaer::Marker
62
37
  @session.markers.size.must_equal 2
63
38
  end
64
39
 
data/spec/track_spec.rb CHANGED
@@ -3,8 +3,8 @@ require 'spec_helper'
3
3
  describe Hindbaer::Track do
4
4
 
5
5
  before do
6
- project = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
- @track = project.tracks.first
6
+ @session = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
+ @track = @session.tracks.first
8
8
  end
9
9
 
10
10
  it 'must return name' do
@@ -16,6 +16,16 @@ describe Hindbaer::Track do
16
16
  end
17
17
 
18
18
  it 'must return all regions' do
19
+ @track.regions.first.must_be_kind_of Hindbaer::Region
19
20
  @track.regions.size.must_equal 2
20
21
  end
22
+
23
+ it 'must return all plugins' do
24
+ @track.plugins.first.must_be_kind_of Hindbaer::Plugin
25
+ @track.plugins.size.must_equal 1
26
+ end
27
+
28
+ it 'must return parent session' do
29
+ @track.session.must_equal @session
30
+ end
21
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hindbaer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-08-24 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: &70320665195120 !ruby/object:Gem::Requirement
16
+ requirement: &70139580355740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70320665195120
24
+ version_requirements: *70139580355740
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: guard
27
- requirement: &70320665194560 !ruby/object:Gem::Requirement
27
+ requirement: &70139580355160 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70320665194560
35
+ version_requirements: *70139580355160
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: guard-minitest
38
- requirement: &70320665193880 !ruby/object:Gem::Requirement
38
+ requirement: &70139580354440 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70320665193880
46
+ version_requirements: *70139580354440
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rb-fsevent
49
- requirement: &70320665193180 !ruby/object:Gem::Requirement
49
+ requirement: &70139580353860 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70320665193180
57
+ version_requirements: *70139580353860
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: growl_notify
60
- requirement: &70320665192520 !ruby/object:Gem::Requirement
60
+ requirement: &70139580353260 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70320665192520
68
+ version_requirements: *70139580353260
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: mocha
71
- requirement: &70320665191920 !ruby/object:Gem::Requirement
71
+ requirement: &70139580352660 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70320665191920
79
+ version_requirements: *70139580352660
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: nokogiri
82
- requirement: &70320665191400 !ruby/object:Gem::Requirement
82
+ requirement: &70139580352240 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *70320665191400
90
+ version_requirements: *70139580352240
91
91
  description: A Hindenburg Journalist client
92
92
  email:
93
93
  - jamiehodge@me.com
@@ -102,17 +102,27 @@ files:
102
102
  - Rakefile
103
103
  - hindbaer.gemspec
104
104
  - lib/hindbaer.rb
105
- - lib/hindbaer/audio.rb
105
+ - lib/hindbaer/audio_pool.rb
106
+ - lib/hindbaer/clip.rb
106
107
  - lib/hindbaer/fade.rb
108
+ - lib/hindbaer/file.rb
109
+ - lib/hindbaer/group.rb
110
+ - lib/hindbaer/info.rb
107
111
  - lib/hindbaer/marker.rb
112
+ - lib/hindbaer/plugin.rb
108
113
  - lib/hindbaer/region.rb
109
114
  - lib/hindbaer/session.rb
110
115
  - lib/hindbaer/track.rb
111
116
  - lib/hindbaer/version.rb
112
- - spec/audio_spec.rb
117
+ - spec/audio_pool_spec.rb
118
+ - spec/clip_spec.rb
113
119
  - spec/fade_spec.rb
120
+ - spec/file_spec.rb
114
121
  - spec/fixtures/project.nhsx
122
+ - spec/group_spec.rb
123
+ - spec/info_spec.rb
115
124
  - spec/marker_spec.rb
125
+ - spec/plugin_spec.rb
116
126
  - spec/region_spec.rb
117
127
  - spec/session_spec.rb
118
128
  - spec/spec_helper.rb
@@ -142,10 +152,15 @@ signing_key:
142
152
  specification_version: 3
143
153
  summary: Parse, modify and generate Hindenburg Journalist audio session files
144
154
  test_files:
145
- - spec/audio_spec.rb
155
+ - spec/audio_pool_spec.rb
156
+ - spec/clip_spec.rb
146
157
  - spec/fade_spec.rb
158
+ - spec/file_spec.rb
147
159
  - spec/fixtures/project.nhsx
160
+ - spec/group_spec.rb
161
+ - spec/info_spec.rb
148
162
  - spec/marker_spec.rb
163
+ - spec/plugin_spec.rb
149
164
  - spec/region_spec.rb
150
165
  - spec/session_spec.rb
151
166
  - spec/spec_helper.rb