audio_stream 1.2.2 → 1.2.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.
- checksums.yaml +4 -4
- data/lib/audio_stream/audio_input.rb +7 -4
- data/lib/audio_stream/audio_input_device.rb +13 -3
- data/lib/audio_stream/audio_input_file.rb +12 -1
- data/lib/audio_stream/audio_output.rb +0 -1
- data/lib/audio_stream/audio_output_device.rb +1 -5
- data/lib/audio_stream/audio_output_file.rb +2 -6
- data/lib/audio_stream/conductor.rb +18 -16
- data/lib/audio_stream/sync.rb +2 -3
- data/lib/audio_stream/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d68afffda6b1f4c82e28430669330ef49e22c7765d70264686cc6011428ade0e
|
4
|
+
data.tar.gz: 783d2ab1c2f6a69e783064a581c472d66e8f1139e8da208715b4edfef3999dfe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a4c6364f40be8a8125d1c08124a4b4b2e81e955e9f17dff7189f353bca537f581fe6beaba2d3044b61f3eb389e02a2e34531d6f618fee82808371ad4e73e987
|
7
|
+
data.tar.gz: 7c6b41a5baec7931ac771aee1838ed614b13cefd3134fe4e7954ac26993e59b98c33e2a55512ad95a457e64c5af5954f5bc746c0c09814156b15c934a2a01a1c
|
@@ -15,6 +15,13 @@ module AudioStream
|
|
15
15
|
}
|
16
16
|
end
|
17
17
|
|
18
|
+
def disconnect
|
19
|
+
if @connection
|
20
|
+
@connection.join
|
21
|
+
@connection = nil
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
18
25
|
def stream
|
19
26
|
@stream ||= Rx::Observable.create do |observer|
|
20
27
|
each {|buf|
|
@@ -40,9 +47,5 @@ module AudioStream
|
|
40
47
|
def self.device(soundinfo:)
|
41
48
|
AudioInputDevice.default_device(soundinfo: soundinfo)
|
42
49
|
end
|
43
|
-
|
44
|
-
def self.sin(hz, repeat, soundinfo:)
|
45
|
-
AudioInputSin.new(hz, repeat, soundinfo: soundinfo)
|
46
|
-
end
|
47
50
|
end
|
48
51
|
end
|
@@ -13,11 +13,21 @@ module AudioStream
|
|
13
13
|
@dev.name
|
14
14
|
end
|
15
15
|
|
16
|
+
def connect
|
17
|
+
@inbuf = @dev.input_buffer(@soundinfo.window_size)
|
18
|
+
@inbuf.start
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
def disconnect
|
23
|
+
if @inbuf
|
24
|
+
@inbuf.stop
|
25
|
+
super
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
16
29
|
def each(&block)
|
17
30
|
Enumerator.new do |y|
|
18
|
-
@inbuf = @dev.input_buffer(@soundinfo.window_size)
|
19
|
-
@inbuf.start
|
20
|
-
|
21
31
|
channels = @dev.input_stream.channels
|
22
32
|
buf = Buffer.float(@soundinfo.window_size, channels)
|
23
33
|
|
@@ -6,10 +6,21 @@ module AudioStream
|
|
6
6
|
|
7
7
|
def initialize(path, soundinfo:)
|
8
8
|
@path = path
|
9
|
-
@sound = RubyAudio::Sound.open(path)
|
10
9
|
@soundinfo = soundinfo
|
11
10
|
end
|
12
11
|
|
12
|
+
def connect
|
13
|
+
@sound = RubyAudio::Sound.open(@path)
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
17
|
+
def disconnect
|
18
|
+
if @sound && !@sound.closed?
|
19
|
+
@sound.close
|
20
|
+
super
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
13
24
|
def seek(frames, whence=IO::SEEK_SET)
|
14
25
|
@sound.seek(frames, whence)
|
15
26
|
self
|
@@ -17,10 +17,6 @@ module AudioStream
|
|
17
17
|
@buf.stop
|
18
18
|
end
|
19
19
|
|
20
|
-
def join
|
21
|
-
@sync.yield_wait
|
22
|
-
end
|
23
|
-
|
24
20
|
def on_next(input)
|
25
21
|
window_size = input.size
|
26
22
|
channels = input.channels
|
@@ -44,7 +40,7 @@ module AudioStream
|
|
44
40
|
end
|
45
41
|
|
46
42
|
def on_completed
|
47
|
-
|
43
|
+
disconnect
|
48
44
|
end
|
49
45
|
|
50
46
|
def self.default_device(soundinfo:)
|
@@ -11,10 +11,7 @@ module AudioStream
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def disconnect
|
14
|
-
|
15
|
-
|
16
|
-
def join
|
17
|
-
@sync.yield_wait
|
14
|
+
@sound.close
|
18
15
|
end
|
19
16
|
|
20
17
|
def on_next(input)
|
@@ -28,8 +25,7 @@ module AudioStream
|
|
28
25
|
end
|
29
26
|
|
30
27
|
def on_completed
|
31
|
-
|
32
|
-
@sync.finish
|
28
|
+
disconnect
|
33
29
|
end
|
34
30
|
end
|
35
31
|
end
|
@@ -7,32 +7,34 @@ module AudioStream
|
|
7
7
|
|
8
8
|
def connect
|
9
9
|
@outputs.map(&:connect)
|
10
|
-
@
|
10
|
+
@inputs.map(&:connect)
|
11
11
|
|
12
12
|
@sync_thread = Thread.start {
|
13
|
-
|
14
|
-
|
15
|
-
t
|
16
|
-
|
13
|
+
catch :break do
|
14
|
+
loop {
|
15
|
+
@inputs.each {|t|
|
16
|
+
t.sync.resume
|
17
|
+
}
|
18
|
+
|
19
|
+
@inputs.each {|t|
|
20
|
+
stat = t.sync.yield_wait
|
21
|
+
if stat==Sync::COMPLETED
|
22
|
+
throw :break
|
23
|
+
end
|
24
|
+
}
|
17
25
|
|
18
|
-
|
19
|
-
|
20
|
-
if stat==Sync::COMPLETED
|
21
|
-
@inputs.delete(t)
|
26
|
+
if @inputs.length==0
|
27
|
+
throw :break
|
22
28
|
end
|
23
29
|
}
|
24
|
-
|
25
|
-
if @inputs.length==0
|
26
|
-
break
|
27
|
-
end
|
28
|
-
}
|
30
|
+
end
|
29
31
|
}
|
30
32
|
end
|
31
33
|
|
32
34
|
def join
|
33
|
-
@outputs.map(&:join)
|
34
|
-
@input_connections.map(&:join)
|
35
35
|
@sync_thread.join
|
36
|
+
@inputs.map(&:disconnect)
|
37
|
+
@outputs.map(&:disconnect)
|
36
38
|
end
|
37
39
|
end
|
38
40
|
end
|
data/lib/audio_stream/sync.rb
CHANGED
@@ -4,9 +4,8 @@ module AudioStream
|
|
4
4
|
COMPLETED = :completed
|
5
5
|
|
6
6
|
def initialize
|
7
|
-
|
8
|
-
@
|
9
|
-
@yield_queue = SizedQueue.new(buffering)
|
7
|
+
@resume_queue = SizedQueue.new(1)
|
8
|
+
@yield_queue = SizedQueue.new(1)
|
10
9
|
end
|
11
10
|
|
12
11
|
def resume
|
data/lib/audio_stream/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: audio_stream
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yoshida Tetsuya
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-07-
|
11
|
+
date: 2019-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|