albanpeignier-alsa-backup 0.0.6 → 0.0.7
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/History.txt +4 -0
- data/TODO +0 -3
- data/alsa-backup.gemspec +2 -2
- data/config.sample +17 -0
- data/lib/alsa_backup.rb +1 -1
- data/lib/alsa_backup/recorder.rb +7 -2
- data/lib/alsa_backup/writer.rb +7 -1
- data/spec/alsa_backup/recorder_spec.rb +28 -0
- data/spec/alsa_backup/writer_spec.rb +24 -5
- metadata +2 -2
data/History.txt
CHANGED
data/TODO
CHANGED
data/alsa-backup.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{alsa-backup}
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.7"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Alban Peignier"]
|
9
|
-
s.date = %q{2009-05-
|
9
|
+
s.date = %q{2009-05-31}
|
10
10
|
s.default_executable = %q{alsa.backup}
|
11
11
|
s.description = %q{ALSA client to perform continuous recording}
|
12
12
|
s.email = ["alban.peignier@free.fr"]
|
data/config.sample
CHANGED
@@ -21,6 +21,23 @@
|
|
21
21
|
AlsaBackup.logger.info("load config #{__FILE__}")
|
22
22
|
|
23
23
|
AlsaBackup.config do |recorder|
|
24
|
+
|
25
|
+
#
|
26
|
+
# To specify the alsa device to be used
|
27
|
+
#
|
28
|
+
#recorder.device = "plughw:0"
|
29
|
+
|
30
|
+
#
|
31
|
+
# To specify the channel count to be used
|
32
|
+
#
|
33
|
+
#recorder.channels = 1
|
34
|
+
#recorder.channels = 4
|
35
|
+
|
36
|
+
#
|
37
|
+
# To specify the sample_rate to be used
|
38
|
+
#
|
39
|
+
#recorder.sample_rate = 48000
|
40
|
+
|
24
41
|
#
|
25
42
|
# To use files named like this :
|
26
43
|
# - 2009/05-May/17-Sun/19h.wav
|
data/lib/alsa_backup.rb
CHANGED
data/lib/alsa_backup/recorder.rb
CHANGED
@@ -7,10 +7,15 @@ module AlsaBackup
|
|
7
7
|
@file = File.basename(file)
|
8
8
|
@directory = File.dirname(file)
|
9
9
|
|
10
|
+
@device = "hw:0"
|
11
|
+
@sample_rate = 44100
|
12
|
+
@channels = 2
|
13
|
+
|
10
14
|
@error_handler = Proc.new { |e| true }
|
11
15
|
end
|
12
16
|
|
13
17
|
attr_accessor :file, :directory, :error_handler
|
18
|
+
attr_accessor :device, :sample_rate, :channels
|
14
19
|
|
15
20
|
def start(seconds_to_record = nil)
|
16
21
|
length_controller = self.length_controller(seconds_to_record)
|
@@ -32,7 +37,7 @@ module AlsaBackup
|
|
32
37
|
end
|
33
38
|
|
34
39
|
def open_capture(&block)
|
35
|
-
ALSA::PCM::Capture.open(
|
40
|
+
ALSA::PCM::Capture.open(device, self.format(:sample_format => :s16_le), &block)
|
36
41
|
end
|
37
42
|
|
38
43
|
def handle_error(e, try_to_continue = true)
|
@@ -64,7 +69,7 @@ module AlsaBackup
|
|
64
69
|
end
|
65
70
|
|
66
71
|
def format(additional_parameters = {})
|
67
|
-
{:sample_rate =>
|
72
|
+
{:sample_rate => sample_rate, :channels => channels}.merge(additional_parameters)
|
68
73
|
end
|
69
74
|
|
70
75
|
def length_controller(seconds_to_record)
|
data/lib/alsa_backup/writer.rb
CHANGED
@@ -39,7 +39,13 @@ module AlsaBackup
|
|
39
39
|
def close
|
40
40
|
if @sndfile
|
41
41
|
AlsaBackup.logger.info('close current file')
|
42
|
-
@sndfile.close
|
42
|
+
@sndfile.close
|
43
|
+
|
44
|
+
closed_file = @sndfile.path
|
45
|
+
if File.zero?(closed_file)
|
46
|
+
AlsaBackup.logger.warn('remove empty file #{closed_file}')
|
47
|
+
File.delete closed_file
|
48
|
+
end
|
43
49
|
end
|
44
50
|
@sndfile = nil
|
45
51
|
end
|
@@ -13,6 +13,34 @@ describe AlsaBackup::Recorder do
|
|
13
13
|
lambda { @recorder.start(2) }.should_not raise_error
|
14
14
|
end
|
15
15
|
|
16
|
+
it "should use the specified alsa device" do
|
17
|
+
@recorder.device = alsa_device = "dummy"
|
18
|
+
ALSA::PCM::Capture.should_receive(:open).with(alsa_device, anything)
|
19
|
+
@recorder.open_capture
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should use the specified sample rate" do
|
23
|
+
@recorder.sample_rate = 48000
|
24
|
+
@recorder.format[:sample_rate].should == @recorder.sample_rate
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should use the specified channels" do
|
28
|
+
@recorder.channels = 4
|
29
|
+
@recorder.format[:channels].should == @recorder.channels
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should use 44100 as default sample rate" do
|
33
|
+
@recorder.sample_rate.should == 44100
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should use 2 as default channels" do
|
37
|
+
@recorder.channels.should == 2
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should use hw:0 as default device" do
|
41
|
+
@recorder.device.should == "hw:0"
|
42
|
+
end
|
43
|
+
|
16
44
|
describe "error handler" do
|
17
45
|
|
18
46
|
class TestErrorHandler
|
@@ -5,20 +5,20 @@ describe AlsaBackup::Writer do
|
|
5
5
|
before(:each) do
|
6
6
|
@file = "test.wav"
|
7
7
|
@directory = test_directory
|
8
|
-
@
|
8
|
+
@writer = AlsaBackup::Writer.new(@file, @directory)
|
9
9
|
end
|
10
10
|
|
11
11
|
describe "file" do
|
12
12
|
|
13
13
|
it "should accept file as string" do
|
14
|
-
@
|
15
|
-
@
|
14
|
+
@writer.file = file_name = "dummy"
|
15
|
+
@writer.file.should == file_name
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should accept file as Proc" do
|
19
19
|
file_name = "dummy"
|
20
|
-
@
|
21
|
-
@
|
20
|
+
@writer.file = Proc.new { file_name }
|
21
|
+
@writer.file.should == file_name
|
22
22
|
end
|
23
23
|
|
24
24
|
end
|
@@ -50,4 +50,23 @@ describe AlsaBackup::Writer do
|
|
50
50
|
|
51
51
|
end
|
52
52
|
|
53
|
+
describe "close" do
|
54
|
+
|
55
|
+
it "should close current sndfile" do
|
56
|
+
sndfile = @writer.sndfile
|
57
|
+
sndfile.should_receive(:close)
|
58
|
+
@writer.close
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should remove closed file if empty" do
|
62
|
+
@writer.sndfile
|
63
|
+
|
64
|
+
File.stub!(:zero?).and_return(true)
|
65
|
+
File.should_receive(:delete).with(@writer.target_file)
|
66
|
+
|
67
|
+
@writer.close
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
53
72
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: albanpeignier-alsa-backup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alban Peignier
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-05-
|
12
|
+
date: 2009-05-31 00:00:00 -07:00
|
13
13
|
default_executable: alsa.backup
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|