win32-sound 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGES +78 -73
- data/MANIFEST +10 -10
- data/README +57 -57
- data/Rakefile +33 -36
- data/certs/djberg96_pub.pem +21 -0
- data/examples/example_win32_sound.rb +56 -56
- data/lib/win32/sound.rb +350 -350
- data/lib/win32/windows/functions.rb +41 -41
- data/lib/win32/windows/structs.rb +78 -78
- data/test/test_win32_sound.rb +141 -141
- data/win32-sound.gemspec +26 -25
- metadata +44 -16
- metadata.gz.sig +3 -0
- data/.gemtest +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 102a96475033f671a73175b40f9736d4bf6a2a5d
|
4
|
+
data.tar.gz: 1c60b32e6106f5eb3316bf3d0ccd78dfa4dfea92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0cddb71cd50ab915c4bf4788dd4655eca894fc2ed82b11d5e6b973704c62d77ecadd358607067fa86fc358246c2a43810e9698bf63f8ea10aa66a396c507f410
|
7
|
+
data.tar.gz: 599ba440eeaf8e7bf472825196efc792654e20fa58d1311cff3e5824d41cebb5f688cba0a4d24663044fe5cb3e78b8dc6c9b07e686204434edc2d90a42169008
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
Binary file
|
data/CHANGES
CHANGED
@@ -1,73 +1,78 @@
|
|
1
|
-
== 0.6.
|
2
|
-
* Added
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
*
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
*
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
*
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
*
|
31
|
-
*
|
32
|
-
|
33
|
-
*
|
34
|
-
|
35
|
-
|
36
|
-
*
|
37
|
-
|
38
|
-
*
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
*
|
43
|
-
*
|
44
|
-
*
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
*
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
*
|
54
|
-
|
55
|
-
|
56
|
-
*
|
57
|
-
*
|
58
|
-
|
59
|
-
|
60
|
-
*
|
61
|
-
*
|
62
|
-
*
|
63
|
-
|
64
|
-
== 0.2.
|
65
|
-
* Moved the
|
66
|
-
*
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
*
|
71
|
-
|
72
|
-
|
73
|
-
|
1
|
+
== 0.6.1 - 19-Mar-2017
|
2
|
+
* Added a cert file.
|
3
|
+
* Removed the .gemtest file.
|
4
|
+
* All gem related rake tasks now assume Rubygems 2.0 or later.
|
5
|
+
|
6
|
+
== 0.6.0 - 30-Jul-2014
|
7
|
+
* Added the play_freq method. This lets you play a frequency for a
|
8
|
+
specified duration at a given volume. Big thanks go out to Dominic
|
9
|
+
Muller for the patch.
|
10
|
+
* Reorganization of FFI related code into their own files.
|
11
|
+
* Updated the gem:create and gem:install rake tasks.
|
12
|
+
|
13
|
+
== 0.5.1 - 10-Apr-2013
|
14
|
+
* Updated HANDLE prototype in underlying FFI code. This affects
|
15
|
+
64 bit versions of Ruby.
|
16
|
+
|
17
|
+
== 0.5.0 - 28-Jun-2012
|
18
|
+
* Now uses FFI instead of win32-api. This means it works with JRuby, too.
|
19
|
+
* Corresponding updates to the tests, Rakefile, gemspec, etc.
|
20
|
+
* Removed the Sound::Error exception class. If an underlying FFI function
|
21
|
+
fails then a SystemCallError (Errno::XXX) is raised instead.
|
22
|
+
|
23
|
+
== 0.4.3 - 21-May-2011
|
24
|
+
* Refactored Rakefile, removing an old gem install task and adding a
|
25
|
+
default task and a clean task.
|
26
|
+
* Altered the gemspec, including a platform change to 'universal-win32', and
|
27
|
+
removed a deprecated specification method.
|
28
|
+
|
29
|
+
== 0.4.2 - 6-Aug-2009
|
30
|
+
* Changed the license to Artistic 2.0.
|
31
|
+
* Updated to use the Windows::Sound module from the windows-pr library.
|
32
|
+
* Fixed the Sound::ALIAS value. It was wrongly set to SND_ALIAS_ID.
|
33
|
+
* Several gemspec updates, including the license and description.
|
34
|
+
* The Sound.get_wave_volume method is now a true alias.
|
35
|
+
* Renamed the test file to test_win32_sound.rb.
|
36
|
+
* Renamed the example file to example_win32_sound.rb to avoid any possible
|
37
|
+
confusion with actual test files.
|
38
|
+
* Added the 'example' rake task.
|
39
|
+
|
40
|
+
== 0.4.1 - 27-Jul-2007
|
41
|
+
* Changed SoundError to Sound::Error.
|
42
|
+
* Added a Rakefile with tasks for installation and testing.
|
43
|
+
* Removed the install.rb file. Installation is now handled via a rake task.
|
44
|
+
* Documentation updates.
|
45
|
+
|
46
|
+
== 0.4.0 - 26-Feb-2006
|
47
|
+
* Now pure Ruby only.
|
48
|
+
* Documentation updates and reorganization.
|
49
|
+
* Added a gemspec.
|
50
|
+
* Minor test suite changes.
|
51
|
+
|
52
|
+
== 0.3.0 - 29-May-2005
|
53
|
+
* Changed the Sound.volume= method (which didn't work) to
|
54
|
+
Sound.set_wave_volume because it takes up to two values and only affects
|
55
|
+
the wave volume, not the master volume.
|
56
|
+
* Renamed the Sound.volume method to Sound.wave_volume.
|
57
|
+
* Fixed a bug in the Sound.wave_volume method.
|
58
|
+
* Created the Sound.get_wave_volume alias for Sound.wave_volume.
|
59
|
+
* Fixed the Sound.set_wave_volume method.
|
60
|
+
* Test adjustments and additions to reflect API changes.
|
61
|
+
* Now Unicode friendly.
|
62
|
+
* Removed the sound.rd file. The sound.txt file is now rdoc friendly.
|
63
|
+
|
64
|
+
== 0.2.1 - 1-Mar-2005
|
65
|
+
* Moved the 'examples' directory to the toplevel directory
|
66
|
+
* Made the CHANGES and README files rdoc friendly
|
67
|
+
* Some cleanup in sound.h.
|
68
|
+
|
69
|
+
== 0.2.0 - 13-Jul-2004
|
70
|
+
* Moved the SoundError class under the Win32 module namespace
|
71
|
+
* Replaced the deprecated STR2CSTR() function with the StringValuePtr()
|
72
|
+
function. This means that as of version 0.2.0, this package requires
|
73
|
+
Ruby 1.8.0 or later.
|
74
|
+
* Moved the test.rb script to doc/examples
|
75
|
+
* Added the README file (oops).
|
76
|
+
|
77
|
+
== 0.1.0 - 14-Feb-2004
|
78
|
+
* Initial release
|
data/MANIFEST
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
* MANIFEST
|
2
|
-
* CHANGES
|
3
|
-
* README
|
4
|
-
* Rakefile
|
5
|
-
* win32-sound.gempsec
|
6
|
-
* examples/sound_test.rb
|
7
|
-
* lib/win32/sound.rb
|
8
|
-
* lib/win32/windows/functions.rb
|
9
|
-
* lib/win32/windows/structs.rb
|
10
|
-
* test/test_win32_sound.rb
|
1
|
+
* MANIFEST
|
2
|
+
* CHANGES
|
3
|
+
* README
|
4
|
+
* Rakefile
|
5
|
+
* win32-sound.gempsec
|
6
|
+
* examples/sound_test.rb
|
7
|
+
* lib/win32/sound.rb
|
8
|
+
* lib/win32/windows/functions.rb
|
9
|
+
* lib/win32/windows/structs.rb
|
10
|
+
* test/test_win32_sound.rb
|
data/README
CHANGED
@@ -1,57 +1,57 @@
|
|
1
|
-
= Description
|
2
|
-
A library for playing and controlling sounds on MS Windows.
|
3
|
-
|
4
|
-
= Prerequisites
|
5
|
-
* ffi
|
6
|
-
* test-unit 2 (Development only)
|
7
|
-
|
8
|
-
= Installation
|
9
|
-
gem install win32-sound
|
10
|
-
|
11
|
-
= Synopsis
|
12
|
-
require 'win32/sound'
|
13
|
-
include Win32
|
14
|
-
|
15
|
-
# Play a wav file
|
16
|
-
Sound.play("somefile.wav")
|
17
|
-
|
18
|
-
# Play a system sound
|
19
|
-
Sound.play("SystemAsterisk",Sound::ALIAS)
|
20
|
-
|
21
|
-
# Get the current volume of the waveform-audio output device.
|
22
|
-
p Sound.volume.join(", ") # left channel, right channel
|
23
|
-
|
24
|
-
= Acknowledgements
|
25
|
-
API ideas derived (or not) from Perl's Win32::Sound module and Python's
|
26
|
-
winsound package.
|
27
|
-
|
28
|
-
= Known Bugs
|
29
|
-
None that I'm aware of. Please report any bugs on the project page
|
30
|
-
at https://github.com/djberg96/win32-sound.
|
31
|
-
|
32
|
-
= Future Plans
|
33
|
-
Add ability to retrieve information about WAV files.
|
34
|
-
Add MIDI support?
|
35
|
-
|
36
|
-
= Developer's Notes
|
37
|
-
The MessageBeep() function, which the Python "winsound" module contains,
|
38
|
-
is intentionally omitted here. I felt it was redundant, because you can
|
39
|
-
achieve the same effect with something like this:
|
40
|
-
|
41
|
-
Sound.play("SystemAsterisk", Sound::ALIAS).
|
42
|
-
|
43
|
-
= License
|
44
|
-
Artistic 2.0
|
45
|
-
|
46
|
-
= Copyright
|
47
|
-
(C) 2004-
|
48
|
-
|
49
|
-
= Warranty
|
50
|
-
This package is provided "as is" and without any express or
|
51
|
-
implied warranties, including, without limitation, the implied
|
52
|
-
warranties of merchantability and fitness for a particular purpose.
|
53
|
-
|
54
|
-
= Author(s)
|
55
|
-
Daniel Berger
|
56
|
-
Park Heesob
|
57
|
-
Dominic Muller
|
1
|
+
= Description
|
2
|
+
A library for playing and controlling sounds on MS Windows.
|
3
|
+
|
4
|
+
= Prerequisites
|
5
|
+
* ffi
|
6
|
+
* test-unit 2 (Development only)
|
7
|
+
|
8
|
+
= Installation
|
9
|
+
gem install win32-sound
|
10
|
+
|
11
|
+
= Synopsis
|
12
|
+
require 'win32/sound'
|
13
|
+
include Win32
|
14
|
+
|
15
|
+
# Play a wav file
|
16
|
+
Sound.play("somefile.wav")
|
17
|
+
|
18
|
+
# Play a system sound
|
19
|
+
Sound.play("SystemAsterisk",Sound::ALIAS)
|
20
|
+
|
21
|
+
# Get the current volume of the waveform-audio output device.
|
22
|
+
p Sound.volume.join(", ") # left channel, right channel
|
23
|
+
|
24
|
+
= Acknowledgements
|
25
|
+
API ideas derived (or not) from Perl's Win32::Sound module and Python's
|
26
|
+
winsound package.
|
27
|
+
|
28
|
+
= Known Bugs
|
29
|
+
None that I'm aware of. Please report any bugs on the project page
|
30
|
+
at https://github.com/djberg96/win32-sound.
|
31
|
+
|
32
|
+
= Future Plans
|
33
|
+
Add ability to retrieve information about WAV files.
|
34
|
+
Add MIDI support?
|
35
|
+
|
36
|
+
= Developer's Notes
|
37
|
+
The MessageBeep() function, which the Python "winsound" module contains,
|
38
|
+
is intentionally omitted here. I felt it was redundant, because you can
|
39
|
+
achieve the same effect with something like this:
|
40
|
+
|
41
|
+
Sound.play("SystemAsterisk", Sound::ALIAS).
|
42
|
+
|
43
|
+
= License
|
44
|
+
Artistic 2.0
|
45
|
+
|
46
|
+
= Copyright
|
47
|
+
(C) 2004-2017, Daniel J. Berger, All Rights Reserved
|
48
|
+
|
49
|
+
= Warranty
|
50
|
+
This package is provided "as is" and without any express or
|
51
|
+
implied warranties, including, without limitation, the implied
|
52
|
+
warranties of merchantability and fitness for a particular purpose.
|
53
|
+
|
54
|
+
= Author(s)
|
55
|
+
Daniel Berger
|
56
|
+
Park Heesob
|
57
|
+
Dominic Muller
|
data/Rakefile
CHANGED
@@ -1,36 +1,33 @@
|
|
1
|
-
require 'rake'
|
2
|
-
require 'rake/testtask'
|
3
|
-
require 'rake/clean'
|
4
|
-
|
5
|
-
CLEAN.include("**/*.gem", "**/*.rbc")
|
6
|
-
|
7
|
-
namespace :gem do
|
8
|
-
desc "Create the win32-sound gem"
|
9
|
-
task :create => [:clean] do
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
task :default => :test
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/clean'
|
4
|
+
|
5
|
+
CLEAN.include("**/*.gem", "**/*.rbc")
|
6
|
+
|
7
|
+
namespace :gem do
|
8
|
+
desc "Create the win32-sound gem"
|
9
|
+
task :create => [:clean] do
|
10
|
+
require 'rubygems/package'
|
11
|
+
spec = eval(IO.read("win32-sound.gemspec"))
|
12
|
+
spec.signing_key = File.join(Dir.home, '.ssh', 'gem-private_key.pem')
|
13
|
+
Gem::Package.build(spec, true)
|
14
|
+
end
|
15
|
+
|
16
|
+
desc "Install the win32-sound library"
|
17
|
+
task :install => [:create] do
|
18
|
+
file = Dir["*.gem"].first
|
19
|
+
sh "gem install -l #{file}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
desc 'Run the example program'
|
24
|
+
task :example do
|
25
|
+
ruby '-Ilib examples\example_win32_sound.rb'
|
26
|
+
end
|
27
|
+
|
28
|
+
Rake::TestTask.new do |t|
|
29
|
+
t.warning = true
|
30
|
+
t.verbose = true
|
31
|
+
end
|
32
|
+
|
33
|
+
task :default => :test
|
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MREwDwYDVQQDDAhkamJl
|
3
|
+
cmc5NjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
|
4
|
+
MB4XDTE2MTIxMjAwMTQ1M1oXDTE3MTIxMjAwMTQ1M1owPzERMA8GA1UEAwwIZGpi
|
5
|
+
ZXJnOTYxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
|
6
|
+
bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVtTm/wETO8yKVKRPBO
|
7
|
+
VgPRvE94iEfKryOb/tQrmhGhchG2ALqdw/r54cGJvLaXeItrYJ6N8pSE/FSnN5jM
|
8
|
+
xugUhHBprPl+AsQ4E+IBy0dKwyU8XjFoVYzWvT1wnqwQdSazdgFCfQqb51QCgUIT
|
9
|
+
PGGakKlyzCb3Mbq30is8+QlRrqXt/JbpkUZbQwUqCdAulMT4oyPBk/L+48pbVX0s
|
10
|
+
4yj7YaVAqfGByAMTPXEmUS388lX+0xq8+GGir2Fuh0TpNW0ggr9BxprwqL0Mg4Oo
|
11
|
+
YhM5L1y8Plolo8mOTN3+K8I3afZ0lD0BtwniVb6g+Ut/4aBjKy2+GyFwwNOu0gSj
|
12
|
+
desCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFJfg
|
13
|
+
HmQ0uDU3Z9A9hB1lQMjr5VZSMB0GA1UdEQQWMBSBEmRqYmVyZzk2QGdtYWlsLmNv
|
14
|
+
bTAdBgNVHRIEFjAUgRJkamJlcmc5NkBnbWFpbC5jb20wDQYJKoZIhvcNAQEFBQAD
|
15
|
+
ggEBACjRCHRP944MHIQJNCglZbDnZowybV2HxmG1uhnvRwrOjBA7CXemc+QSAL7K
|
16
|
+
7eXC4FdojVEJrnU7ZxuCmfQU+fvkEQKOnah1osG1874aPiDlwtjHclpeqcDgTUI7
|
17
|
+
A7CF+OXK8x7ksFx205ruhPHKaPYtwVG/W/J+y7Wx8yl9rvwUgRBL5cVzTBiEz+AB
|
18
|
+
NRT7yoHXXfFXjuQWN1eHunSbNds2ZTGQd64yBCujb17Xdl+F9tu4klkTga3gxP3P
|
19
|
+
y3zoX1VttxnIZBojRM/s2A7c2aubMH2SVbXMR3ccVkB9XbYKl1OvCe7q85xEHit2
|
20
|
+
Kbpico5nnyHqf7YSPmvZe8bCU94=
|
21
|
+
-----END CERTIFICATE-----
|
@@ -1,56 +1,56 @@
|
|
1
|
-
#######################################################################
|
2
|
-
# example_win32_sound.rb (win32-sound)
|
3
|
-
#
|
4
|
-
# A example script to demonstrate the win32-sound library and for
|
5
|
-
# general futzing. You can run this via the 'rake example' task.
|
6
|
-
#
|
7
|
-
# Modify as you see fit.
|
8
|
-
#######################################################################
|
9
|
-
require 'win32/sound'
|
10
|
-
include Win32
|
11
|
-
|
12
|
-
wav = "c:\\windows\\media\\chimes.wav"
|
13
|
-
|
14
|
-
puts "VERSION: " + Sound::VERSION
|
15
|
-
#puts "Devices: " + Sound.devices.join(", ")
|
16
|
-
|
17
|
-
#Sound.volume = [77,128] # my personal settings
|
18
|
-
|
19
|
-
orig_left, orig_right = Sound.wave_volume
|
20
|
-
puts "Volume was: #{orig_left}, #{orig_right}"
|
21
|
-
|
22
|
-
#Sound.volume = 140
|
23
|
-
#puts "Volume is now: " + Sound.volume.join(", ")
|
24
|
-
|
25
|
-
#Sound.volume = [orig_left,orig_right]
|
26
|
-
#puts "Volume is now: " + Sound.volume.join(", ")
|
27
|
-
|
28
|
-
puts "Playing 'SystemAsterisk' sound"
|
29
|
-
sleep 1
|
30
|
-
Sound.play("SystemAsterisk",Sound::ALIAS)
|
31
|
-
|
32
|
-
puts "Playing 'chimes' sound once"
|
33
|
-
sleep 1
|
34
|
-
Sound.play(wav)
|
35
|
-
|
36
|
-
puts "Playing 'chimes' sound in a loop for 3 seconds"
|
37
|
-
sleep 1
|
38
|
-
Sound.play(wav,Sound::ASYNC|Sound::LOOP)
|
39
|
-
sleep 3
|
40
|
-
Sound.stop
|
41
|
-
|
42
|
-
puts "Playing default sound"
|
43
|
-
sleep 1
|
44
|
-
Sound.play("Foofoo", Sound::ALIAS)
|
45
|
-
|
46
|
-
puts "Playing a beep"
|
47
|
-
sleep 1
|
48
|
-
Sound.beep(500, 2000)
|
49
|
-
|
50
|
-
puts "Playing multiple frequencies simultaneously"
|
51
|
-
sleep 1
|
52
|
-
threads = []
|
53
|
-
[440, 660].each do |freq|
|
54
|
-
threads << Thread.new { Sound.play_freq(freq) }
|
55
|
-
end
|
56
|
-
threads.each { |th| th.join }
|
1
|
+
#######################################################################
|
2
|
+
# example_win32_sound.rb (win32-sound)
|
3
|
+
#
|
4
|
+
# A example script to demonstrate the win32-sound library and for
|
5
|
+
# general futzing. You can run this via the 'rake example' task.
|
6
|
+
#
|
7
|
+
# Modify as you see fit.
|
8
|
+
#######################################################################
|
9
|
+
require 'win32/sound'
|
10
|
+
include Win32
|
11
|
+
|
12
|
+
wav = "c:\\windows\\media\\chimes.wav"
|
13
|
+
|
14
|
+
puts "VERSION: " + Sound::VERSION
|
15
|
+
#puts "Devices: " + Sound.devices.join(", ")
|
16
|
+
|
17
|
+
#Sound.volume = [77,128] # my personal settings
|
18
|
+
|
19
|
+
orig_left, orig_right = Sound.wave_volume
|
20
|
+
puts "Volume was: #{orig_left}, #{orig_right}"
|
21
|
+
|
22
|
+
#Sound.volume = 140
|
23
|
+
#puts "Volume is now: " + Sound.volume.join(", ")
|
24
|
+
|
25
|
+
#Sound.volume = [orig_left,orig_right]
|
26
|
+
#puts "Volume is now: " + Sound.volume.join(", ")
|
27
|
+
|
28
|
+
puts "Playing 'SystemAsterisk' sound"
|
29
|
+
sleep 1
|
30
|
+
Sound.play("SystemAsterisk",Sound::ALIAS)
|
31
|
+
|
32
|
+
puts "Playing 'chimes' sound once"
|
33
|
+
sleep 1
|
34
|
+
Sound.play(wav)
|
35
|
+
|
36
|
+
puts "Playing 'chimes' sound in a loop for 3 seconds"
|
37
|
+
sleep 1
|
38
|
+
Sound.play(wav,Sound::ASYNC|Sound::LOOP)
|
39
|
+
sleep 3
|
40
|
+
Sound.stop
|
41
|
+
|
42
|
+
puts "Playing default sound"
|
43
|
+
sleep 1
|
44
|
+
Sound.play("Foofoo", Sound::ALIAS)
|
45
|
+
|
46
|
+
puts "Playing a beep"
|
47
|
+
sleep 1
|
48
|
+
Sound.beep(500, 2000)
|
49
|
+
|
50
|
+
puts "Playing multiple frequencies simultaneously"
|
51
|
+
sleep 1
|
52
|
+
threads = []
|
53
|
+
[440, 660].each do |freq|
|
54
|
+
threads << Thread.new { Sound.play_freq(freq) }
|
55
|
+
end
|
56
|
+
threads.each { |th| th.join }
|