class MTK::IO::DLSSynthDevice
An output device for Apple’s built-in “DLS” synthesizer on OS X
Public Instance Methods
close()
click to toggle source
# File lib/mtk/io/dls_synth_device.rb, line 135 def close if @graph AudioToolbox.AUGraphStop(@graph) AudioToolbox.DisposeAUGraph(@graph) end end
message(*args)
click to toggle source
# File lib/mtk/io/dls_synth_device.rb, line 127 def message(*args) arg0 = args[0] || 0 arg1 = args[1] || 0 arg2 = args[2] || 0 AudioToolbox.MusicDeviceMIDIEvent(@synth, arg0, arg1, arg2, 0) end
name()
click to toggle source
# File lib/mtk/io/dls_synth_device.rb, line 77 def name 'Apple DLS Synthesizer' end
open()
click to toggle source
# File lib/mtk/io/dls_synth_device.rb, line 89 def open synth_pointer = FFI::MemoryPointer.new(:pointer) graph_pointer = FFI::MemoryPointer.new(:pointer) synth_node_pointer = FFI::MemoryPointer.new(:pointer) out_node_pointer = FFI::MemoryPointer.new(:pointer) cd = AudioToolbox::ComponentDescription.new cd[:componentManufacturer] = AudioToolbox::AUDIO_UNIT_MANUFACTURER_APPLE cd[:componentFlags] = 0 cd[:componentFlagsMask] = 0 require_noerr('create AUGraph') { AudioToolbox.NewAUGraph(graph_pointer) } @graph = graph_pointer.get_pointer(0) cd[:componentType] = AudioToolbox::AUDIO_UNIT_TYPE_MUSIC_DEVICE cd[:componentSubType] = AudioToolbox::AUDIO_UNIT_SUBTYPE_DLS_SYNTH require_noerr('add synthNode') { AudioToolbox.AUGraphAddNode(@graph, cd, synth_node_pointer) } synth_node = synth_node_pointer.get_pointer(0) cd[:componentType] = AudioToolbox::AUDIO_UNIT_TYPE_OUTPUT cd[:componentSubType] = AudioToolbox::AUDIO_UNIT_SUBTYPE_DEFAULT_OUTPUT require_noerr('add outNode') { AudioToolbox.AUGraphAddNode(@graph, cd, out_node_pointer) } out_node = out_node_pointer.get_pointer(0) require_noerr('open graph') { AudioToolbox.AUGraphOpen(@graph) } require_noerr('connect synth to out') { AudioToolbox.AUGraphConnectNodeInput(@graph, synth_node, 0, out_node, 0) } require_noerr('graph info') { AudioToolbox.AUGraphNodeInfo(@graph, synth_node, nil, synth_pointer) } @synth = synth_pointer.get_pointer(0) require_noerr('init graph') { AudioToolbox.AUGraphInitialize(@graph) } require_noerr('start graph') { AudioToolbox.AUGraphStart(@graph) } # AudioToolbox.CAShow(@graph) # for debugging end
require_noerr(action_description, &block)
click to toggle source
# File lib/mtk/io/dls_synth_device.rb, line 82 def require_noerr(action_description, &block) if block.call != 0 fail "Failed to #{action_description}" end end