coreaudio 0.0.9 → 0.0.10
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 +7 -0
- data/.gitignore +54 -0
- data/ChangeLog +12 -0
- data/Gemfile +1 -1
- data/Rakefile +2 -46
- data/coreaudio.gemspec +33 -60
- data/examples/.gitignore +1 -0
- data/examples/Gemfile +4 -0
- data/examples/set_def_out_dev.rb +22 -0
- data/ext/audiofile.m +1 -1
- data/ext/coreaudio.m +90 -16
- data/lib/coreaudio.rb +1 -0
- data/lib/coreaudio/version.rb +3 -0
- metadata +74 -75
- data/VERSION +0 -1
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 83e2a881a47617eea51f09c5cd2c4d9a0347188e
|
4
|
+
data.tar.gz: 0579efcdb0c1ee5062092bc7e9523e4e5217a32c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 33e22b4f9b89766c1fdbda2f8093b453a75cc126e2042b8a896a0218d3302512ea0f87029143bf87ffbabfad62eb5a62a803d8da8ec02677fbf7cc801e34aaac
|
7
|
+
data.tar.gz: 2b50a4efcabc83a1220931448de26f34ed19401ceaaebe527775a51afda99ad6876c02cc6ee19ce09122677919ad7bef2fd491d920c2e118fc11e51d1372340c
|
data/.gitignore
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
ext/Makefile
|
2
|
+
ext/extconf.h
|
3
|
+
|
4
|
+
*.gem
|
5
|
+
/Gemfile.lock
|
6
|
+
|
7
|
+
tmp/
|
8
|
+
pkg/
|
9
|
+
|
10
|
+
# rcov generated
|
11
|
+
coverage
|
12
|
+
|
13
|
+
# rdoc generated
|
14
|
+
rdoc
|
15
|
+
|
16
|
+
# yard generated
|
17
|
+
doc/
|
18
|
+
.yardoc
|
19
|
+
|
20
|
+
# bundler
|
21
|
+
.bundle
|
22
|
+
lib/bundler/man
|
23
|
+
vendor/bundle
|
24
|
+
|
25
|
+
# Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
|
26
|
+
#
|
27
|
+
# * Create a file at ~/.gitignore
|
28
|
+
# * Include files you want ignored
|
29
|
+
# * Run: git config --global core.excludesfile ~/.gitignore
|
30
|
+
#
|
31
|
+
# After doing this, these files will be ignored in all your git projects,
|
32
|
+
# saving you from having to 'pollute' every project you touch with them
|
33
|
+
#
|
34
|
+
# Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
|
35
|
+
#
|
36
|
+
# For MacOS:
|
37
|
+
#
|
38
|
+
.DS_Store
|
39
|
+
|
40
|
+
# For TextMate
|
41
|
+
#*.tmproj
|
42
|
+
#tmtags
|
43
|
+
|
44
|
+
# For emacs:
|
45
|
+
#*~
|
46
|
+
#\#*
|
47
|
+
#.\#*
|
48
|
+
|
49
|
+
# For vim:
|
50
|
+
#*.swp
|
51
|
+
|
52
|
+
# For redcar:
|
53
|
+
#.redcar
|
54
|
+
|
data/ChangeLog
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
Thu May 15 20:05:15 2014 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
|
2
|
+
|
3
|
+
* release 0.0.10
|
4
|
+
* remove stale dependencies.
|
5
|
+
* add a new feature.
|
6
|
+
CoreAudio.set_default_output_device - set default output device,
|
7
|
+
thank to kinushu.
|
8
|
+
|
9
|
+
Sat Mar 10 19:16:03 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
|
10
|
+
|
11
|
+
* change gem generate tool from jeweler to Bundler.
|
12
|
+
|
1
13
|
Tue Mar 6 12:39:59 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
|
2
14
|
|
3
15
|
* coreaudio.gemspec: fix dependency. narray should runtime dependency.
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1,46 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'bundler'
|
5
|
-
begin
|
6
|
-
Bundler.setup(:default, :development)
|
7
|
-
rescue Bundler::BundlerError => e
|
8
|
-
$stderr.puts e.message
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
-
exit e.status_code
|
11
|
-
end
|
12
|
-
require 'rake'
|
13
|
-
|
14
|
-
require 'jeweler'
|
15
|
-
Jeweler::Tasks.new do |gem|
|
16
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
-
gem.name = "coreaudio"
|
18
|
-
gem.homepage = "https://github.com/nagachika/ruby-coreaudio"
|
19
|
-
gem.license = "BSDL"
|
20
|
-
gem.summary = %Q{Mac OS X CoreAudio wrapper library}
|
21
|
-
gem.description = %Q{Mac OS X CoreAudio wrapper library}
|
22
|
-
gem.email = "nagachika00@gmail.com"
|
23
|
-
gem.authors = ["CHIKANAGA Tomoyuki"]
|
24
|
-
# dependencies defined in Gemfile
|
25
|
-
end
|
26
|
-
Jeweler::RubygemsDotOrgTasks.new
|
27
|
-
|
28
|
-
require 'rake/testtask'
|
29
|
-
Rake::TestTask.new(:test) do |test|
|
30
|
-
test.libs << 'lib' << 'test'
|
31
|
-
test.pattern = 'test/**/test_*.rb'
|
32
|
-
test.verbose = true
|
33
|
-
end
|
34
|
-
|
35
|
-
task :default => :test
|
36
|
-
|
37
|
-
require 'rdoc/task'
|
38
|
-
Rake::RDocTask.new do |rdoc|
|
39
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
40
|
-
|
41
|
-
rdoc.rdoc_dir = 'rdoc'
|
42
|
-
rdoc.title = "coreaudio #{version}"
|
43
|
-
rdoc.rdoc_files.include('README*')
|
44
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
45
|
-
rdoc.rdoc_files.include('ext/**/*.m')
|
46
|
-
end
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require "bundler/gem_tasks"
|
data/coreaudio.gemspec
CHANGED
@@ -1,76 +1,49 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/coreaudio/version', __FILE__)
|
5
3
|
|
6
|
-
Gem::Specification.new do |
|
7
|
-
|
8
|
-
s.version = "0.0.9"
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.required_rubygems_version = Gem::Requirement.new(">= 0") if gem.respond_to? :required_rubygems_version=
|
9
6
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
7
|
+
gem.authors = ["CHIKANAGA Tomoyuki"]
|
8
|
+
gem.email = ["nagachika00@gmail.com"]
|
9
|
+
gem.description = "Mac OS X CoreAudio wrapper library"
|
10
|
+
gem.summary = "Mac OS X CoreAudio wrapper library"
|
11
|
+
gem.homepage = "https://github.com/nagachika/ruby-coreaudio"
|
12
|
+
|
13
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
14
|
+
gem.files = `git ls-files`.split("\n")
|
15
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
gem.name = "coreaudio"
|
17
|
+
gem.require_paths = ["lib"]
|
18
|
+
gem.version = CoreAudio::VERSION
|
19
|
+
|
20
|
+
gem.extensions = ["ext/extconf.rb"]
|
21
|
+
gem.extra_rdoc_files = [
|
17
22
|
"ChangeLog",
|
18
23
|
"LICENSE.txt",
|
19
24
|
"README.rdoc"
|
20
25
|
]
|
21
|
-
|
22
|
-
".document",
|
23
|
-
"ChangeLog",
|
24
|
-
"Gemfile",
|
25
|
-
"LICENSE.txt",
|
26
|
-
"README.rdoc",
|
27
|
-
"Rakefile",
|
28
|
-
"VERSION",
|
29
|
-
"coreaudio.gemspec",
|
30
|
-
"examples/convert_wav_to_m4a.rb",
|
31
|
-
"examples/fft_shift_pitch.rb",
|
32
|
-
"examples/loopback_delay.rb",
|
33
|
-
"examples/outbuffer_sine.rb",
|
34
|
-
"examples/outloop_sine.rb",
|
35
|
-
"examples/record_to_wave.rb",
|
36
|
-
"examples/ring_modulator.rb",
|
37
|
-
"ext/audiofile.m",
|
38
|
-
"ext/coreaudio.h",
|
39
|
-
"ext/coreaudio.m",
|
40
|
-
"ext/coreaudio_missing.c",
|
41
|
-
"ext/depend",
|
42
|
-
"ext/extconf.rb",
|
43
|
-
"lib/coreaudio.rb",
|
44
|
-
"lib/coreaudio/audiofile.rb"
|
45
|
-
]
|
46
|
-
s.homepage = "https://github.com/nagachika/ruby-coreaudio"
|
47
|
-
s.licenses = ["BSDL"]
|
48
|
-
s.require_paths = ["lib"]
|
49
|
-
s.rubygems_version = "1.8.11"
|
50
|
-
s.summary = "Mac OS X CoreAudio wrapper library"
|
26
|
+
gem.licenses = ["BSDL"]
|
51
27
|
|
52
|
-
if
|
53
|
-
|
28
|
+
if gem.respond_to? :specification_version then
|
29
|
+
gem.specification_version = 3
|
54
30
|
|
55
31
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
s.add_development_dependency(%q<rdoc>, [">= 0"])
|
32
|
+
gem.add_runtime_dependency(%q<narray>, ["~> 0.6.0.0"])
|
33
|
+
gem.add_development_dependency(%q<bundler>, [">= 0"])
|
34
|
+
gem.add_development_dependency(%q<rake>, [">= 0"])
|
35
|
+
gem.add_development_dependency(%q<rdoc>, [">= 0"])
|
61
36
|
else
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
s.add_dependency(%q<rdoc>, [">= 0"])
|
37
|
+
gem.add_dependency(%q<narray>, ["~> 0.6.0.0"])
|
38
|
+
gem.add_dependency(%q<bundler>, [">= 0"])
|
39
|
+
gem.add_dependency(%q<rake>, [">= 0"])
|
40
|
+
gem.add_dependency(%q<rdoc>, [">= 0"])
|
67
41
|
end
|
68
42
|
else
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
s.add_dependency(%q<rdoc>, [">= 0"])
|
43
|
+
gem.add_dependency(%q<narray>, ["~> 0.6.0.0"])
|
44
|
+
gem.add_dependency(%q<bundler>, [">= 0"])
|
45
|
+
gem.add_dependency(%q<rake>, [">= 0"])
|
46
|
+
gem.add_dependency(%q<rdoc>, [">= 0"])
|
74
47
|
end
|
75
48
|
end
|
76
49
|
|
data/examples/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
/Gemfile.lock
|
data/examples/Gemfile
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require "coreaudio"
|
2
|
+
|
3
|
+
# Select option name device as default output device
|
4
|
+
def set_interface(name)
|
5
|
+
if !name
|
6
|
+
puts 'please enter audio output interface name.'
|
7
|
+
return -1
|
8
|
+
end
|
9
|
+
|
10
|
+
devs = CoreAudio.devices
|
11
|
+
|
12
|
+
tgt = devs.find{|dev| dev.name.index(name)}
|
13
|
+
if !tgt
|
14
|
+
p "no match interface #{name}"
|
15
|
+
return -1
|
16
|
+
end
|
17
|
+
|
18
|
+
CoreAudio.set_default_output_device(tgt)
|
19
|
+
p "select default output audio interface #{tgt.name}"
|
20
|
+
end
|
21
|
+
|
22
|
+
set_interface(ARGV[0])
|
data/ext/audiofile.m
CHANGED
@@ -273,7 +273,7 @@ ca_audio_file_write(VALUE self, VALUE data)
|
|
273
273
|
TypedData_Get_Struct(self, ca_audio_file_t, &ca_audio_file_type, file);
|
274
274
|
|
275
275
|
if (file->file == NULL)
|
276
|
-
rb_raise(rb_eIOError, "coreaudio: already
|
276
|
+
rb_raise(rb_eIOError, "coreaudio: already closed file");
|
277
277
|
|
278
278
|
if (!file->for_write)
|
279
279
|
rb_raise(rb_eRuntimeError, "coreaudio: audio file opened for reading");
|
data/ext/coreaudio.m
CHANGED
@@ -194,6 +194,29 @@ ca_get_device_available_sample_rate(AudioDeviceID devID)
|
|
194
194
|
return ary;
|
195
195
|
}
|
196
196
|
|
197
|
+
static VALUE
|
198
|
+
ca_set_device_nominal_sample_rate(AudioDeviceID devID, VALUE sampleRateVal)
|
199
|
+
{
|
200
|
+
AudioObjectPropertyAddress address = PropertyAddress;
|
201
|
+
UInt32 size;
|
202
|
+
OSStatus status;
|
203
|
+
Float64 rate = NUM2DBL(sampleRateVal);
|
204
|
+
|
205
|
+
address.mSelector = kAudioDevicePropertyNominalSampleRate;
|
206
|
+
status = AudioObjectGetPropertyDataSize(devID, &address, 0, NULL, &size);
|
207
|
+
|
208
|
+
if (status != noErr) {
|
209
|
+
rb_raise(rb_eArgError,
|
210
|
+
"coreaudio: get nominal sample rates size failed: %d", status);
|
211
|
+
}
|
212
|
+
status = AudioObjectSetPropertyData(devID, &address, 0, NULL, size, &rate);
|
213
|
+
if (status != noErr) {
|
214
|
+
rb_raise(rb_eArgError,
|
215
|
+
"coreaudio: set nominal sample rates failed: %d", status);
|
216
|
+
}
|
217
|
+
return sampleRateVal;
|
218
|
+
}
|
219
|
+
|
197
220
|
static VALUE
|
198
221
|
ca_get_device_nominal_sample_rate(AudioDeviceID devID)
|
199
222
|
{
|
@@ -240,18 +263,28 @@ ca_get_device_actual_sample_rate(VALUE self)
|
|
240
263
|
}
|
241
264
|
|
242
265
|
static VALUE
|
243
|
-
ca_device_initialize(VALUE self, VALUE devIdVal)
|
266
|
+
ca_device_initialize(VALUE self, VALUE devIdVal, VALUE options)
|
244
267
|
{
|
245
268
|
AudioDeviceID devID = (AudioDeviceID)NUM2LONG(devIdVal);
|
246
269
|
VALUE device_name;
|
247
270
|
VALUE available_sample_rate;
|
248
271
|
VALUE nominal_rate;
|
249
272
|
VALUE input_stream, output_stream;
|
273
|
+
VALUE option_nominal_rate;
|
250
274
|
|
251
275
|
device_name = ca_get_device_name(devID);
|
252
276
|
available_sample_rate = ca_get_device_available_sample_rate(devID);
|
253
277
|
rb_obj_freeze(available_sample_rate);
|
254
|
-
|
278
|
+
|
279
|
+
if (options != Qnil) {
|
280
|
+
option_nominal_rate = rb_funcall(options, rb_intern("[]"), 1, ID2SYM(rb_intern("nominal_rate")));
|
281
|
+
if (option_nominal_rate != Qnil) {
|
282
|
+
nominal_rate = ca_set_device_nominal_sample_rate(devID, option_nominal_rate);
|
283
|
+
}
|
284
|
+
} else {
|
285
|
+
nominal_rate = ca_get_device_nominal_sample_rate(devID);
|
286
|
+
}
|
287
|
+
|
255
288
|
input_stream = ca_stream_new(devIdVal, Qtrue);
|
256
289
|
output_stream = ca_stream_new(devIdVal, Qfalse);
|
257
290
|
|
@@ -266,13 +299,13 @@ ca_device_initialize(VALUE self, VALUE devIdVal)
|
|
266
299
|
}
|
267
300
|
|
268
301
|
static VALUE
|
269
|
-
ca_device_new(AudioDeviceID devid)
|
302
|
+
ca_device_new(AudioDeviceID devid, VALUE options)
|
270
303
|
{
|
271
304
|
VALUE devIdVal = UINT2NUM(devid);
|
272
305
|
VALUE device;
|
273
306
|
|
274
307
|
device = rb_obj_alloc(rb_cAudioDevice);
|
275
|
-
ca_device_initialize(device, devIdVal);
|
308
|
+
ca_device_initialize(device, devIdVal, options);
|
276
309
|
|
277
310
|
return device;
|
278
311
|
}
|
@@ -280,12 +313,13 @@ ca_device_new(AudioDeviceID devid)
|
|
280
313
|
/*
|
281
314
|
* Document-method: CoreAudio.devices
|
282
315
|
* call-seq:
|
283
|
-
* CoreAudio.devices
|
316
|
+
* CoreAudio.devices(options = nil)
|
284
317
|
*
|
285
318
|
* Get available all audio devices (CoreAudio::AudioDevice object).
|
319
|
+
* if options[:nominal_rate] is given, set device nominal rate as given one.
|
286
320
|
*/
|
287
321
|
static VALUE
|
288
|
-
ca_devices(VALUE mod)
|
322
|
+
ca_devices(int argc, VALUE *argv, VALUE mod)
|
289
323
|
{
|
290
324
|
AudioObjectPropertyAddress address = PropertyAddress;
|
291
325
|
AudioDeviceID *devIDs = NULL;
|
@@ -293,6 +327,9 @@ ca_devices(VALUE mod)
|
|
293
327
|
OSStatus status = noErr;
|
294
328
|
VALUE ary;
|
295
329
|
UInt32 i;
|
330
|
+
VALUE options;
|
331
|
+
|
332
|
+
rb_scan_args(argc, argv, "01", &options);
|
296
333
|
|
297
334
|
address.mSelector = kAudioHardwarePropertyDevices;
|
298
335
|
|
@@ -311,7 +348,7 @@ ca_devices(VALUE mod)
|
|
311
348
|
|
312
349
|
ary = rb_ary_new();
|
313
350
|
for (i = 0; i < devnum; i++) {
|
314
|
-
rb_ary_push(ary, ca_device_new(devIDs[i]));
|
351
|
+
rb_ary_push(ary, ca_device_new(devIDs[i], options));
|
315
352
|
}
|
316
353
|
return ary;
|
317
354
|
}
|
@@ -319,17 +356,21 @@ ca_devices(VALUE mod)
|
|
319
356
|
/*
|
320
357
|
* Document-method: CoreAudio.default_input_device
|
321
358
|
* call-seq:
|
322
|
-
* CoreAudio.default_input_device
|
359
|
+
* CoreAudio.default_input_device(options = nil)
|
323
360
|
*
|
324
361
|
* Get system default audio input device as CoreAudio::AudioDevice object.
|
362
|
+
* if options[:nominal_rate] is given, set device nominal rate as given one.
|
325
363
|
*/
|
326
364
|
static VALUE
|
327
|
-
ca_default_input_device(VALUE mod)
|
365
|
+
ca_default_input_device(int argc, VALUE *argv, VALUE mod)
|
328
366
|
{
|
329
367
|
AudioDeviceID devID;
|
330
368
|
AudioObjectPropertyAddress address = PropertyAddress;
|
331
369
|
UInt32 size;
|
332
370
|
OSStatus status;
|
371
|
+
VALUE options;
|
372
|
+
|
373
|
+
rb_scan_args(argc, argv, "01", &options);
|
333
374
|
|
334
375
|
address.mSelector = kAudioHardwarePropertyDefaultInputDevice;
|
335
376
|
size = sizeof(devID);
|
@@ -340,24 +381,28 @@ ca_default_input_device(VALUE mod)
|
|
340
381
|
if (status != noErr)
|
341
382
|
rb_raise(rb_eArgError, "coreaudio: get default input device failed: %d", status);
|
342
383
|
|
343
|
-
return ca_device_new(devID);
|
384
|
+
return ca_device_new(devID, options);
|
344
385
|
}
|
345
386
|
|
346
387
|
|
347
388
|
/*
|
348
389
|
* Document-method: CoreAudio.default_output_device
|
349
390
|
* call-seq:
|
350
|
-
* CoreAudio.default_output_device
|
391
|
+
* CoreAudio.default_output_device(options = nil)
|
351
392
|
*
|
352
393
|
* Get system default audio output device as CoreAudio::AudioDevice object.
|
394
|
+
* if options[:nominal_rate] is given, set device nominal rate as given one.
|
353
395
|
*/
|
354
396
|
static VALUE
|
355
|
-
ca_default_output_device(VALUE mod)
|
397
|
+
ca_default_output_device(int argc, VALUE *argv, VALUE mod)
|
356
398
|
{
|
357
399
|
AudioDeviceID devID;
|
358
400
|
AudioObjectPropertyAddress address = PropertyAddress;
|
359
401
|
UInt32 size;
|
360
402
|
OSStatus status;
|
403
|
+
VALUE options;
|
404
|
+
|
405
|
+
rb_scan_args(argc, argv, "01", &options);
|
361
406
|
|
362
407
|
address.mSelector = kAudioHardwarePropertyDefaultOutputDevice;
|
363
408
|
size = sizeof(devID);
|
@@ -368,7 +413,35 @@ ca_default_output_device(VALUE mod)
|
|
368
413
|
if (status != noErr)
|
369
414
|
rb_raise(rb_eArgError, "coreaudio: get default output device failed: %d", status);
|
370
415
|
|
371
|
-
return ca_device_new(devID);
|
416
|
+
return ca_device_new(devID, options);
|
417
|
+
}
|
418
|
+
|
419
|
+
/*
|
420
|
+
* Document-method: CoreAudio.set_default_output_device
|
421
|
+
* call-seq:
|
422
|
+
* CoreAudio.set_default_output_device(audio_device)
|
423
|
+
*
|
424
|
+
* Set system default audio output device as CoreAudio::AudioDevice object.
|
425
|
+
*/
|
426
|
+
static VALUE
|
427
|
+
ca_set_default_output_device(VALUE self, VALUE device)
|
428
|
+
{
|
429
|
+
AudioDeviceID devID = NUM2UINT(rb_ivar_get(device, sym_iv_devid));
|
430
|
+
AudioObjectPropertyAddress address = PropertyAddress;
|
431
|
+
UInt32 size;
|
432
|
+
OSStatus status;
|
433
|
+
|
434
|
+
address.mSelector = kAudioHardwarePropertyDefaultOutputDevice;
|
435
|
+
address.mScope = kAudioObjectPropertyScopeGlobal;
|
436
|
+
address.mElement = kAudioObjectPropertyElementMaster;
|
437
|
+
|
438
|
+
status = AudioObjectSetPropertyData(kAudioObjectSystemObject, &address, 0, NULL, sizeof(devID), &devID);
|
439
|
+
if (status != noErr) {
|
440
|
+
rb_raise(rb_eArgError,
|
441
|
+
"coreaudio: set default output deveice failed: %d", status);
|
442
|
+
}
|
443
|
+
|
444
|
+
return Qtrue;
|
372
445
|
}
|
373
446
|
|
374
447
|
/*
|
@@ -1082,9 +1155,10 @@ Init_coreaudio_ext(void)
|
|
1082
1155
|
rb_define_attr(rb_cAudioStream, "channels", 1, 0);
|
1083
1156
|
rb_define_attr(rb_cAudioStream, "buffer_frame_size", 1, 0);
|
1084
1157
|
|
1085
|
-
rb_define_singleton_method(rb_mCoreAudio, "devices", ca_devices,
|
1086
|
-
rb_define_singleton_method(rb_mCoreAudio, "default_input_device", ca_default_input_device,
|
1087
|
-
rb_define_singleton_method(rb_mCoreAudio, "default_output_device", ca_default_output_device,
|
1158
|
+
rb_define_singleton_method(rb_mCoreAudio, "devices", ca_devices, -1);
|
1159
|
+
rb_define_singleton_method(rb_mCoreAudio, "default_input_device", ca_default_input_device, -1);
|
1160
|
+
rb_define_singleton_method(rb_mCoreAudio, "default_output_device", ca_default_output_device, -1);
|
1161
|
+
rb_define_singleton_method(rb_mCoreAudio, "set_default_output_device", ca_set_default_output_device, 1);
|
1088
1162
|
|
1089
1163
|
rb_define_method(rb_cOutLoop, "[]=", ca_out_loop_data_assign, 2);
|
1090
1164
|
rb_define_method(rb_cOutLoop, "start", ca_out_loop_data_start, 0);
|
data/lib/coreaudio.rb
CHANGED
metadata
CHANGED
@@ -1,91 +1,92 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: coreaudio
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.0.9
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.10
|
6
5
|
platform: ruby
|
7
|
-
authors:
|
6
|
+
authors:
|
8
7
|
- CHIKANAGA Tomoyuki
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2014-05-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
16
14
|
name: narray
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
- - ~>
|
22
|
-
- !ruby/object:Gem::Version
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
23
19
|
version: 0.6.0.0
|
24
20
|
type: :runtime
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: bundler
|
28
21
|
prerelease: false
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.6.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
35
34
|
type: :development
|
36
|
-
version_requirements: *id002
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: jeweler
|
39
35
|
prerelease: false
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
type: :development
|
47
|
-
version_requirements: *id003
|
48
|
-
- !ruby/object:Gem::Dependency
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
49
42
|
name: rake
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: 0.9.2
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
57
48
|
type: :development
|
58
|
-
version_requirements: *id004
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: rdoc
|
61
49
|
prerelease: false
|
62
|
-
|
63
|
-
|
64
|
-
requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
65
52
|
- - ">="
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version:
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rdoc
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
68
62
|
type: :development
|
69
|
-
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
70
69
|
description: Mac OS X CoreAudio wrapper library
|
71
|
-
email:
|
70
|
+
email:
|
71
|
+
- nagachika00@gmail.com
|
72
72
|
executables: []
|
73
|
-
|
74
|
-
extensions:
|
73
|
+
extensions:
|
75
74
|
- ext/extconf.rb
|
76
|
-
extra_rdoc_files:
|
75
|
+
extra_rdoc_files:
|
77
76
|
- ChangeLog
|
78
77
|
- LICENSE.txt
|
79
78
|
- README.rdoc
|
80
|
-
files:
|
81
|
-
- .document
|
79
|
+
files:
|
80
|
+
- ".document"
|
81
|
+
- ".gitignore"
|
82
82
|
- ChangeLog
|
83
83
|
- Gemfile
|
84
84
|
- LICENSE.txt
|
85
85
|
- README.rdoc
|
86
86
|
- Rakefile
|
87
|
-
- VERSION
|
88
87
|
- coreaudio.gemspec
|
88
|
+
- examples/.gitignore
|
89
|
+
- examples/Gemfile
|
89
90
|
- examples/convert_wav_to_m4a.rb
|
90
91
|
- examples/fft_shift_pitch.rb
|
91
92
|
- examples/loopback_delay.rb
|
@@ -93,6 +94,7 @@ files:
|
|
93
94
|
- examples/outloop_sine.rb
|
94
95
|
- examples/record_to_wave.rb
|
95
96
|
- examples/ring_modulator.rb
|
97
|
+
- examples/set_def_out_dev.rb
|
96
98
|
- ext/audiofile.m
|
97
99
|
- ext/coreaudio.h
|
98
100
|
- ext/coreaudio.m
|
@@ -101,32 +103,29 @@ files:
|
|
101
103
|
- ext/extconf.rb
|
102
104
|
- lib/coreaudio.rb
|
103
105
|
- lib/coreaudio/audiofile.rb
|
106
|
+
- lib/coreaudio/version.rb
|
104
107
|
homepage: https://github.com/nagachika/ruby-coreaudio
|
105
|
-
licenses:
|
108
|
+
licenses:
|
106
109
|
- BSDL
|
110
|
+
metadata: {}
|
107
111
|
post_install_message:
|
108
112
|
rdoc_options: []
|
109
|
-
|
110
|
-
require_paths:
|
113
|
+
require_paths:
|
111
114
|
- lib
|
112
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
-
|
114
|
-
requirements:
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
115
117
|
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version:
|
118
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
|
-
|
120
|
-
requirements:
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
121
122
|
- - ">="
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
version:
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
124
125
|
requirements: []
|
125
|
-
|
126
126
|
rubyforge_project:
|
127
|
-
rubygems_version:
|
127
|
+
rubygems_version: 2.2.2
|
128
128
|
signing_key:
|
129
129
|
specification_version: 3
|
130
130
|
summary: Mac OS X CoreAudio wrapper library
|
131
131
|
test_files: []
|
132
|
-
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.0.9
|