win32-sound 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,14 @@
1
+ == 0.4.2 - 6-Aug-2009
2
+ * Changed the license to Artistic 2.0.
3
+ * Updated to use the Windows::Sound module from the windows-pr library.
4
+ * Fixed the Sound::ALIAS value. It was wrongly set to SND_ALIAS_ID.
5
+ * Several gemspec updates, including the license and description.
6
+ * The Sound.get_wave_volume method is now a true alias.
7
+ * Renamed the test file to test_win32_sound.rb.
8
+ * Renamed the example file to example_win32_sound.rb to avoid any possible
9
+ confusion with actual test files.
10
+ * Added the 'example' rake task.
11
+
1
12
  == 0.4.1 - 27-Jul-2007
2
13
  * Changed SoundError to Sound::Error.
3
14
  * Added a Rakefile with tasks for installation and testing.
@@ -36,4 +47,4 @@
36
47
  * Added the README file (oops).
37
48
 
38
49
  == 0.1.0 - 14-Feb-2004
39
- * Initial release
50
+ * Initial release
data/README CHANGED
@@ -1,11 +1,14 @@
1
1
  == Description
2
- A package for playing with sound on Windows.
2
+ A library for playing and controlling sounds on MS Windows.
3
3
 
4
4
  == Prerequisites
5
- This package requires Ruby 1.8.0 or later. Ruby 1.8.2 or later is
6
- recommended.
5
+ * windows-pr 1.0.6 or later
7
6
 
8
7
  == Installation instructions
8
+ === Gem installation
9
+ gem install win32-sound
10
+
11
+ === Local installation
9
12
  rake test (optional)
10
13
  rake install (non-gem) or rake install_gem (gem)
11
14
 
@@ -13,14 +16,14 @@
13
16
  require 'win32/sound'
14
17
  include Win32
15
18
 
16
- # Get the current volume of the waveform-audio output device.
17
- p Sound.volume.join(", ") # left channel, right channel
19
+ # Play a wav file
20
+ Sound.play("somefile.wav")
18
21
 
19
22
  # Play a system sound
20
23
  Sound.play("SystemAsterisk",Sound::ALIAS)
21
24
 
22
- # Play a wav file
23
- Sound.play("somefile.wav")
25
+ # Get the current volume of the waveform-audio output device.
26
+ p Sound.volume.join(", ") # left channel, right channel
24
27
 
25
28
  == Acknowledgements
26
29
  API ideas derived (or not) from Perl's Win32::Sound module and Python's
@@ -41,14 +44,14 @@
41
44
  == Developer's Notes
42
45
  The MessageBeep() function, which the Python "winsound" module contains,
43
46
  is intentionally omitted here. I felt it was redundant, because you can
44
- achieve the same effect with something like
47
+ achieve the same effect with something like this:
45
48
  Sound.play("SystemAsterisk", Sound::ALIAS).
46
49
 
47
50
  == License
48
- Ruby's
51
+ Artistic 2.0
49
52
 
50
53
  == Copyright
51
- (C) 2004-2007, Daniel J. Berger, All Rights Reserved
54
+ (C) 2004-2009, Daniel J. Berger, All Rights Reserved
52
55
 
53
56
  == Warranty
54
57
  This package is provided "as is" and without any express or
@@ -57,9 +60,4 @@
57
60
 
58
61
  == Author(s)
59
62
  Daniel Berger
60
- djberg96 at nospam at gmail dot com
61
- imperator on IRC (irc.freenode.net)
62
-
63
63
  Park Heesob
64
- phasis at nospam at nownuri dot net
65
- phasis68 on IRC (irc.freenode.net)
data/Rakefile CHANGED
@@ -15,8 +15,12 @@ task :install_gem do
15
15
  sh "gem install #{file}"
16
16
  end
17
17
 
18
+ desc 'Run the example program'
19
+ task :example do
20
+ ruby '-Ilib examples\example_win32_sound.rb'
21
+ end
22
+
18
23
  Rake::TestTask.new do |t|
19
- t.libs << 'lib'
20
24
  t.warning = true
21
- t.test_files = FileList['test/tc*']
25
+ t.verbose = true
22
26
  end
@@ -1,14 +1,12 @@
1
- ##############################################################
2
- # sound_test.rb (win32-sound)
1
+ #######################################################################
2
+ # example_win32_sound.rb (win32-sound)
3
3
  #
4
- # A test script for general futzing. Modify as you see fit.
5
- ##############################################################
6
- if File.basename(Dir.pwd) == "examples"
7
- Dir.chdir ".."
8
- $LOAD_PATH.unshift Dir.pwd + '/lib'
9
- end
10
-
11
- require "win32/sound"
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'
12
10
  include Win32
13
11
 
14
12
  wav = "c:\\windows\\media\\chimes.wav"
@@ -43,8 +41,8 @@ Sound.stop
43
41
 
44
42
  puts "Playing default sound"
45
43
  sleep 1
46
- Sound.play("Foofoo",Sound::ALIAS)
44
+ Sound.play("Foofoo", Sound::ALIAS)
47
45
 
48
46
  puts "Playing a beep"
49
47
  sleep 1
50
- Sound.beep(500,10000)
48
+ Sound.beep(500, 10000)
data/lib/win32/sound.rb CHANGED
@@ -1,55 +1,58 @@
1
- require 'Win32API'
1
+ require 'windows/sound'
2
+ require 'windows/error'
3
+
4
+ # The Win32 module serves as a namespace only.
2
5
  module Win32
6
+
7
+ # The Sound class encapsulates various methods for playing sound as well
8
+ # as querying or configuring sound related properties.
3
9
  class Sound
10
+
11
+ # The Win32::Sound::Error class is typically raised if any of the
12
+ # Win32::Sound methods fail.
4
13
  class Error < StandardError; end
5
14
 
6
- VERSION = '0.4.1'
15
+ include Windows::Sound
16
+ include Windows::Error
17
+ extend Windows::Sound
18
+ extend Windows::Error
19
+
20
+ # The version of the win32-sound library
21
+ VERSION = '0.4.2'
22
+
7
23
  LOW_FREQUENCY = 37
8
24
  HIGH_FREQUENCY = 32767
9
25
  MAX_VOLUME = 0xFFFF
10
26
 
11
- SYNC = 0x0000 # play synchronously (default)
12
- ASYNC = 0x0001 # play asynchronously
13
- NODEFAULT = 0x0002 # silence (!default) if sound not found
14
- MEMORY = 0x0004 # pszSound points to a memory file
15
- LOOP = 0x0008 # loop the sound until next sndPlaySound
16
- NOSTOP = 0x0010 # don't stop any currently playing sound
17
- NOWAIT = 8192 # don't wait if the driver is busy
18
- ALIAS = 65536 # name is a registry alias
19
- ALIAS_ID = 1114112 # alias is a predefined ID
20
- FILENAME = 131072 # name is file name
21
- RESOURCE = 262148 # name is resource name or atom
22
- PURGE = 0x0040 # purge non-static events for task
23
- APPLICATION = 0x0080 # look for application specific association
24
-
25
- @@Beep = Win32API.new('kernel32', 'Beep', 'LL', 'I')
26
- @@PlaySound = Win32API.new('winmm', 'PlaySound', 'PPL', 'I')
27
- @@waveOutSetVolume = Win32API.new('winmm', 'waveOutSetVolume', 'PL', 'I')
28
- @@waveOutGetVolume = Win32API.new('winmm', 'waveOutGetVolume', 'IP', 'I')
29
- @@waveOutGetNumDevs = Win32API.new('winmm', 'waveOutGetNumDevs', 'V', 'I')
30
- @@waveInGetNumDevs = Win32API.new('winmm', 'waveInGetNumDevs', 'V', 'I')
31
- @@midiOutGetNumDevs = Win32API.new('winmm', 'midiOutGetNumDevs', 'V', 'I')
32
- @@midiInGetNumDevs = Win32API.new('winmm', 'midiInGetNumDevs', 'V', 'I')
33
- @@auxGetNumDevs = Win32API.new('winmm', 'auxGetNumDevs', 'V', 'I')
34
- @@mixerGetNumDevs = Win32API.new('winmm', 'mixerGetNumDevs', 'V', 'I')
35
-
36
- @@GetLastError = Win32API.new('kernel32', 'GetLastError', '', 'L')
37
- @@FormatMessage = Win32API.new('kernel32', 'FormatMessage', 'LPLLPLP', 'L')
27
+ SYNC = SND_SYNC # play synchronously (default)
28
+ ASYNC = SND_ASYNC # play asynchronously
29
+ NODEFAULT = SND_NODEFAULT # silence (!default) if sound not found
30
+ MEMORY = SND_MEMORY # pszSound points to a memory file
31
+ LOOP = SND_LOOP # loop the sound until next sndPlaySound
32
+ NOSTOP = SND_NOSTOP # don't stop any currently playing sound
33
+ NOWAIT = SND_NOWAIT # don't wait if the driver is busy
34
+ ALIAS = SND_ALIAS # name is a registry alias
35
+ ALIAS_ID = SND_ALIAS_ID # alias is a predefined ID
36
+ FILENAME = SND_FILENAME # name is file name
37
+ RESOURCE = SND_RESOURCE # name is resource name or atom
38
+ PURGE = SND_PURGE # purge non-static events for task
39
+ APPLICATION = SND_APPLICATION # look for app specific association
38
40
 
39
41
  # Returns an array of all the available sound devices; their names contain
40
- # the type of the device and a zero-based ID number. Possible return values
42
+ # the type of the device and a zero-based ID number. Possible return values
41
43
  # are WAVEOUT, WAVEIN, MIDIOUT, MIDIIN, AUX or MIXER.
44
+ #
42
45
  def self.devices
43
46
  devs = []
44
47
 
45
48
  begin
46
- 0.upto(@@waveOutGetNumDevs.call){ |i| devs << "WAVEOUT#{i}" }
47
- 0.upto(@@waveInGetNumDevs.call){ |i| devs << "WAVEIN#{i}" }
48
- 0.upto(@@midiOutGetNumDevs.call){ |i| devs << "MIDIOUT#{i}" }
49
- 0.upto(@@midiInGetNumDevs.call){ |i| devs << "MIDIIN#{i}" }
50
- 0.upto(@@auxGetNumDevs.call){ |i| devs << "AUX#{i}" }
51
- 0.upto(@@mixerGetNumDevs.call){ |i| devs << "MIXER#{i}" }
52
- rescue Exception => err
49
+ 0.upto(waveOutGetNumDevs()){ |i| devs << "WAVEOUT#{i}" }
50
+ 0.upto(waveInGetNumDevs()){ |i| devs << "WAVEIN#{i}" }
51
+ 0.upto(midiOutGetNumDevs()){ |i| devs << "MIDIOUT#{i}" }
52
+ 0.upto(midiInGetNumDevs()){ |i| devs << "MIDIIN#{i}" }
53
+ 0.upto(auxGetNumDevs()){ |i| devs << "AUX#{i}" }
54
+ 0.upto(mixerGetNumDevs()){ |i| devs << "MIXER#{i}" }
55
+ rescue Exception
53
56
  raise Error, get_last_error
54
57
  end
55
58
 
@@ -58,22 +61,25 @@ module Win32
58
61
 
59
62
  # Generates simple tones on the speaker. The function is synchronous; it
60
63
  # does not return control to its caller until the sound finishes.
61
- #
62
- # The frequency (in Hertz) must be between 37 and 32767.
64
+ #
65
+ # The frequency (in Hertz) must be between 37 and 32767.
63
66
  # The duration is in milliseconds.
67
+ #
64
68
  def self.beep(frequency, duration)
65
69
  if frequency > HIGH_FREQUENCY || frequency < LOW_FREQUENCY
66
70
  raise Error, 'invalid frequency'
67
71
  end
68
72
 
69
- if 0 == @@Beep.call(frequency, duration)
73
+ if 0 == Beep(frequency, duration)
70
74
  raise Error, get_last_error
71
75
  end
76
+
72
77
  self
73
78
  end
74
79
 
75
- # Stops any currently playing waveform sound. If +purge+ is set to
76
- # true, then *all* sounds are stopped. The default is false.
80
+ # Stops any currently playing waveform sound. If +purge+ is set to
81
+ # true, then *all* sounds are stopped. The default is false.
82
+ #
77
83
  def self.stop(purge = false)
78
84
  if purge && purge != 0
79
85
  flags = PURGE
@@ -81,70 +87,87 @@ module Win32
81
87
  flags = 0
82
88
  end
83
89
 
84
- if 0 == @@PlaySound.call(0, 0, flags)
90
+ unless PlaySound(0, 0, flags)
85
91
  raise Error, get_last_error
86
92
  end
93
+
87
94
  self
88
95
  end
89
96
 
90
- # Plays the specified sound. The sound can be a wave file or a system
97
+ # Plays the specified sound. The sound can be a wave file or a system
91
98
  # sound, when used in conjunction with the ALIAS flag.
92
99
  #
93
100
  # Valid flags:
94
101
  #
95
102
  # Sound::ALIAS
96
- # The sound parameter is a system-event alias in the registry or the
97
- # WIN.INI file. If the registry contains no such name, it plays the
98
- # system default sound unless the NODEFAULT value is also specified.
99
- # Do not use with FILENAME.
100
- #
103
+ # The sound parameter is a system-event alias in the registry or the
104
+ # WIN.INI file. If the registry contains no such name, it plays the
105
+ # system default sound unless the NODEFAULT value is also specified.
106
+ # Do not use with FILENAME.
107
+ #
101
108
  # Sound::APPLICATION
102
- # The sound is played using an application-specific association.
103
- #
104
- # Sound::ASYNC
105
- # The sound is played asynchronously and the function returns
106
- # immediately after beginning the sound.
107
- #
108
- # Sound::FILENAME
109
- # The sound parameter is the name of a WAV file. Do not use with
110
- # ALIAS.
111
- #
112
- # Sound::LOOP
113
- # The sound plays repeatedly until Sound.stop() is called. You must
114
- # also specify the ASYNC flag to loop sounds.
115
- #
116
- # Sound::MEMORY
117
- # The sound points to an image of a waveform sound in memory.
109
+ # The sound is played using an application-specific association.
110
+ #
111
+ # Sound::ASYNC
112
+ # The sound is played asynchronously and the function returns
113
+ # immediately after beginning the sound.
114
+ #
115
+ # Sound::FILENAME
116
+ # The sound parameter is the name of a WAV file. Do not use with
117
+ # ALIAS.
118
+ #
119
+ # Sound::LOOP
120
+ # The sound plays repeatedly until Sound.stop() is called. You must
121
+ # also specify the ASYNC flag to loop sounds.
122
+ #
123
+ # Sound::MEMORY
124
+ # The sound points to an image of a waveform sound in memory.
118
125
  #
119
126
  # Sound::NODEFAULT
120
- # If the sound cannot be found, the function returns silently without
121
- # playing the default sound.
122
- #
123
- # Sound::NOSTOP
124
- # If a sound is currently playing, the function immediately returns
125
- # false without playing the requested sound.
126
- #
127
+ # If the sound cannot be found, the function returns silently without
128
+ # playing the default sound.
129
+ #
130
+ # Sound::NOSTOP
131
+ # If a sound is currently playing, the function immediately returns
132
+ # false without playing the requested sound.
133
+ #
127
134
  # Sound::NOWAIT
128
- # If the driver is busy, return immediately without playing the sound.
129
- #
135
+ # If the driver is busy, return immediately without playing the sound.
136
+ #
130
137
  # Sound::PURGE
131
- # Stop playing all instances of the specified sound.
138
+ # Stop playing all instances of the specified sound.
132
139
  #
133
140
  # Sound::SYNC
134
- # The sound is played synchronously and the function does not return
135
- # until the sound ends.
141
+ # The sound is played synchronously and the function does not return
142
+ # until the sound ends.
143
+ #
144
+ # Examples:
145
+ #
146
+ # require 'win32/sound'
147
+ # include Win32
148
+ #
149
+ # # Play a wave file once
150
+ # Sound.play('some_file.wav')
151
+ #
152
+ # # Play a wave file in an asynchronous loop for 2 seconds
153
+ # Sound.play('some_file.wav', Sound::ASYNC | Sound::LOOP)
154
+ # sleep 2
155
+ # Sound.stop
156
+ #
136
157
  def self.play(sound, flags = 0)
137
- if 0 == @@PlaySound.call(sound, 0, flags)
158
+ unless PlaySound(sound, 0, flags)
138
159
  raise Error, get_last_error
139
160
  end
161
+
140
162
  self
141
163
  end
142
164
 
143
- # Sets the volume for the left and right channel. If the +right_channel+
165
+ # Sets the volume for the left and right channel. If the +right_channel+
144
166
  # is omitted, the volume is set for *both* channels.
145
- #
167
+ #
146
168
  # You may optionally pass a single Integer rather than an Array, in which
147
169
  # case it is assumed you are setting both channels to the same value.
170
+ #
148
171
  def self.set_wave_volume(left_channel, right_channel = nil)
149
172
  right_channel ||= left_channel
150
173
 
@@ -153,9 +176,10 @@ module Win32
153
176
 
154
177
  volume = lvolume | rvolume << 16
155
178
 
156
- if @@waveOutSetVolume.call(-1, volume) != 0
179
+ if waveOutSetVolume(-1, volume) != 0
157
180
  raise Error, get_last_error
158
181
  end
182
+
159
183
  self
160
184
  end
161
185
 
@@ -163,16 +187,15 @@ module Win32
163
187
  # and right channel, respectively.
164
188
  def self.wave_volume
165
189
  volume = [0].pack('L')
166
- if @@waveOutGetVolume.call(-1, volume) != 0
190
+ if waveOutGetVolume(-1, volume) != 0
167
191
  raise Error, get_last_error
168
192
  end
169
193
  volume = volume.unpack('L').first
170
194
  [low_word(volume), high_word(volume)]
171
195
  end
172
-
173
- # Alias for Sound.wave_volume
174
- def self.get_wave_volume
175
- self.wave_volume
196
+
197
+ class << self
198
+ alias get_wave_volume wave_volume
176
199
  end
177
200
 
178
201
  private
@@ -184,20 +207,5 @@ module Win32
184
207
  def self.high_word(num)
185
208
  num >> 16
186
209
  end
187
-
188
- # Convenience method that wraps FormatMessage with some sane defaults.
189
- def self.get_last_error(err_num = @@GetLastError.call)
190
- buf = 0.chr * 260
191
- @@FormatMessage.call(
192
- 12288,
193
- 0,
194
- err_num,
195
- 0,
196
- buf,
197
- buf.length,
198
- 0
199
- )
200
- buf.split(0.chr).first.chomp
201
- end
202
210
  end
203
211
  end
@@ -1,39 +1,37 @@
1
1
  ##########################################################################
2
- # tc_sound.rb
2
+ # test_win32_sound.rb
3
3
  #
4
- # Test suite for the win32-sound package. You should run this test case
4
+ # Test suite for the win32-sound library. You should run this test case
5
5
  # via the 'rake test' task.
6
6
  ##########################################################################
7
- puts "You may hear some funny noises - don't panic"
8
- sleep 1
9
-
10
- require "test/unit"
11
- require "win32/sound"
7
+ require 'test/unit'
8
+ require 'win32/sound'
12
9
  include Win32
13
10
 
14
- class TC_Sound < Test::Unit::TestCase
11
+ class TC_Win32_Sound < Test::Unit::TestCase
15
12
  def setup
16
13
  @wav = "c:\\windows\\media\\chimes.wav"
17
14
  end
18
15
 
19
16
  def test_version
20
- assert_equal("0.4.1", Sound::VERSION)
17
+ assert_equal('0.4.2', Sound::VERSION)
21
18
  end
22
19
 
23
20
  def test_beep
24
21
  assert_respond_to(Sound, :beep)
25
- assert_nothing_raised{ Sound.beep(55,100) }
22
+ assert_nothing_raised{ Sound.beep(55, 100) }
23
+ end
26
24
 
27
- assert_raises(Sound::Error){ Sound.beep(0,100) }
25
+ def test_beep_expected_errors
26
+ assert_raises(Sound::Error){ Sound.beep(0, 100) }
28
27
  assert_raises(ArgumentError){ Sound.beep }
29
28
  assert_raises(ArgumentError){ Sound.beep(500) }
30
- assert_raises(ArgumentError){ Sound.beep(500,500,5) }
29
+ assert_raises(ArgumentError){ Sound.beep(500, 500, 5) }
31
30
  end
32
31
 
33
32
  def test_devices
34
33
  assert_respond_to(Sound, :devices)
35
34
  assert_nothing_raised{ Sound.devices }
36
-
37
35
  assert_kind_of(Array,Sound.devices)
38
36
  end
39
37
 
@@ -43,11 +41,13 @@ class TC_Sound < Test::Unit::TestCase
43
41
  assert_nothing_raised{ Sound.stop(true) }
44
42
  end
45
43
 
46
- def test_get_volume
44
+ def test_get_volume_basic
47
45
  assert_respond_to(Sound, :wave_volume)
48
46
  assert_respond_to(Sound, :get_wave_volume)
49
47
  assert_nothing_raised{ Sound.get_wave_volume }
48
+ end
50
49
 
50
+ def test_get_volume
51
51
  assert_kind_of(Array, Sound.get_wave_volume)
52
52
  assert_equal(2, Sound.get_wave_volume.length)
53
53
  end
@@ -61,7 +61,10 @@ class TC_Sound < Test::Unit::TestCase
61
61
  def test_play
62
62
  assert_respond_to(Sound, :play)
63
63
  assert_nothing_raised{ Sound.play(@wav) }
64
- assert_nothing_raised{ Sound.play("SystemAsterisk", Sound::ALIAS) }
64
+ end
65
+
66
+ def test_play_alias
67
+ assert_nothing_raised{ Sound.play('SystemAsterisk', Sound::ALIAS) }
65
68
  end
66
69
 
67
70
  def test_expected_errors
data/win32-sound.gemspec CHANGED
@@ -1,27 +1,28 @@
1
- require "rubygems"
1
+ require 'rubygems'
2
2
 
3
3
  spec = Gem::Specification.new do |gem|
4
- gem.name = "win32-sound"
5
- gem.version = "0.4.1"
6
- gem.author = "Daniel J. Berger"
7
- gem.email = "djberg96@gmail.com"
8
- gem.homepage = "http://www.rubyforge.org/projects/win32utils"
9
- gem.platform = Gem::Platform::RUBY
10
- gem.summary = "A library for playing with sound on MS Windows."
11
- gem.description = "A library for playing with sound on MS Windows."
12
- gem.test_file = "test/tc_sound.rb"
13
- gem.has_rdoc = true
14
- gem.require_path = "lib"
4
+ gem.name = 'win32-sound'
5
+ gem.version = '0.4.2'
6
+ gem.author = 'Daniel J. Berger'
7
+ gem.license = 'Artistic 2.0'
8
+ gem.email = 'djberg96@gmail.com'
9
+ gem.homepage = 'http://www.rubyforge.org/projects/win32utils'
10
+ gem.platform = Gem::Platform::RUBY
11
+ gem.summary = 'A library for playing with sound on MS Windows.'
12
+ gem.test_file = 'test/test_win32_sound.rb'
13
+ gem.has_rdoc = true
14
+ gem.files = Dir['**/*'].reject{ |f| f.include?('CVS') }
15
+
15
16
  gem.extra_rdoc_files = ['CHANGES', 'README', 'MANIFEST']
16
- gem.rubyforge_project = "win32utils"
17
+ gem.rubyforge_project = 'win32utils'
18
+
19
+ gem.add_dependency('windows-pr', '>= 1.0.6')
17
20
 
18
- files = Dir["doc/*"] + Dir["examples/*"] + Dir["lib/win32/*"]
19
- files += Dir["test/*"] + Dir["[A-Z]*"]
20
- files.delete_if{ |item| item.include?("CVS") }
21
- gem.files = files
21
+ gem.description = <<-EOF
22
+ The win32-sound library provides an interface for playing various
23
+ sounds on MS Windows operating systems, including system sounds and
24
+ wave files, as well as querying and configuring sound related properties.
25
+ EOF
22
26
  end
23
27
 
24
- if $0 == __FILE__
25
- Gem.manage_gems
26
- Gem::Builder.new(spec).build
27
- end
28
+ Gem::Builder.new(spec).build
metadata CHANGED
@@ -1,58 +1,73 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.2
3
- specification_version: 1
4
2
  name: win32-sound
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.4.1
7
- date: 2007-07-27 00:00:00 -06:00
8
- summary: A library for playing with sound on MS Windows.
9
- require_paths:
10
- - lib
11
- email: djberg96@gmail.com
12
- homepage: http://www.rubyforge.org/projects/win32utils
13
- rubyforge_project: win32utils
14
- description: A library for playing with sound on MS Windows.
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 0.4.2
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Daniel J. Berger
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-08-06 00:00:00 -06:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: windows-pr
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.0.6
24
+ version:
25
+ description: " The win32-sound library provides an interface for playing various\n sounds on MS Windows operating systems, including system sounds and\n wave files, as well as querying and configuring sound related properties.\n"
26
+ email: djberg96@gmail.com
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - CHANGES
33
+ - README
34
+ - MANIFEST
31
35
  files:
32
- - examples/sound_test.rb
33
- - lib/win32/sound.rb
34
- - test/tc_sound.rb
35
36
  - CHANGES
36
- - examples
37
- - lib
37
+ - examples/example_win32_sound.rb
38
+ - lib/win32/sound.rb
38
39
  - MANIFEST
39
40
  - Rakefile
40
41
  - README
41
- - test
42
+ - test/test_win32_sound.rb
42
43
  - win32-sound.gemspec
43
- test_files:
44
- - test/tc_sound.rb
44
+ has_rdoc: true
45
+ homepage: http://www.rubyforge.org/projects/win32utils
46
+ licenses:
47
+ - Artistic 2.0
48
+ post_install_message:
45
49
  rdoc_options: []
46
50
 
47
- extra_rdoc_files:
48
- - CHANGES
49
- - README
50
- - MANIFEST
51
- executables: []
52
-
53
- extensions: []
54
-
51
+ require_paths:
52
+ - lib
53
+ required_ruby_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: "0"
58
+ version:
59
+ required_rubygems_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
55
65
  requirements: []
56
66
 
57
- dependencies: []
58
-
67
+ rubyforge_project: win32utils
68
+ rubygems_version: 1.3.4
69
+ signing_key:
70
+ specification_version: 3
71
+ summary: A library for playing with sound on MS Windows.
72
+ test_files:
73
+ - test/test_win32_sound.rb