Module: Rtmidi::Native
- Extended by:
- FFI::Library
- Defined in:
- lib/rtmidi/native.rb
Defined Under Namespace
Classes: Wrapper
Constant Summary collapse
- LOAD_ERROR_MESSAGE =
"librtmidi \u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\nmacOS: brew install rtmidi\nUbuntu/Debian: sudo apt install librtmidi-dev\n\u74B0\u5883\u5909\u6570 RTMIDI_LIB_PATH \u3067\u30D1\u30B9\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u3002\n".freeze
- DEFAULT_LIBRARIES =
[ "rtmidi", "librtmidi", "librtmidi.so.7", "librtmidi.so", "librtmidi.dylib", "/opt/homebrew/lib/librtmidi.dylib", "/usr/local/lib/librtmidi.dylib", "rtmidi.dll", "librtmidi.dll" ].freeze
- FUNCTION_SIGNATURES =
{ rtmidi_get_version: [[], :string], rtmidi_get_compiled_api: [[:pointer, :uint], :int], rtmidi_api_name: [[:rtmidi_api], :string], rtmidi_api_display_name: [[:rtmidi_api], :string], rtmidi_compiled_api_by_name: [[:string], :rtmidi_api], rtmidi_open_port: [[:pointer, :uint, :string], :void], rtmidi_open_virtual_port: [[:pointer, :string], :void], rtmidi_close_port: [[:pointer], :void], rtmidi_get_port_count: [[:pointer], :uint], rtmidi_get_port_name: [[:pointer, :uint, :pointer, :pointer], :int], rtmidi_set_error_callback: [[:pointer, :rtmidi_error_c_callback, :pointer], :void], rtmidi_in_create_default: [[], :pointer], rtmidi_in_create: [[:rtmidi_api, :string, :uint], :pointer], rtmidi_in_free: [[:pointer], :void], rtmidi_in_get_current_api: [[:pointer], :rtmidi_api], rtmidi_in_set_callback: [[:pointer, :rtmidi_c_callback, :pointer], :void], rtmidi_in_cancel_callback: [[:pointer], :void], rtmidi_in_ignore_types: [[:pointer, :bool, :bool, :bool], :void], rtmidi_in_get_message: [[:pointer, :pointer, :pointer], :double], rtmidi_out_create_default: [[], :pointer], rtmidi_out_create: [[:rtmidi_api, :string], :pointer], rtmidi_out_free: [[:pointer], :void], rtmidi_out_get_current_api: [[:pointer], :rtmidi_api], rtmidi_out_send_message: [[:pointer, :pointer, :int], :int] }.freeze
- OPTIONAL_FUNCTIONS =
[ :rtmidi_set_error_callback ].freeze
Class Method Summary collapse
- .check_error(device_ptr) ⇒ Object
- .ensure_loaded! ⇒ Object
- .function_available?(name) ⇒ Boolean
- .loaded? ⇒ Boolean
- .read_size_t(pointer) ⇒ Object
- .write_size_t(pointer, value) ⇒ Object
Class Method Details
.check_error(device_ptr) ⇒ Object
127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/rtmidi/native.rb', line 127 def check_error(device_ptr) ensure_loaded! return if device_ptr.nil? || device_ptr.null? wrapper = Wrapper.new(device_ptr) return if wrapper[:ok] msg_ptr = wrapper[:msg] = msg_ptr.nil? || msg_ptr.null? ? "Unknown RtMidi error" : msg_ptr.read_string raise Rtmidi::Error, end |
.ensure_loaded! ⇒ Object
105 106 107 108 109 |
# File 'lib/rtmidi/native.rb', line 105 def ensure_loaded! return if loaded? raise @load_error || LoadError, LOAD_ERROR_MESSAGE end |
.function_available?(name) ⇒ Boolean
139 140 141 |
# File 'lib/rtmidi/native.rb', line 139 def function_available?(name) @available_functions.include?(name.to_sym) end |
.loaded? ⇒ Boolean
101 102 103 |
# File 'lib/rtmidi/native.rb', line 101 def loaded? @loaded end |
.read_size_t(pointer) ⇒ Object
111 112 113 114 115 116 117 |
# File 'lib/rtmidi/native.rb', line 111 def read_size_t(pointer) if FFI::Platform::ADDRESS_SIZE == 64 pointer.get_uint64(0) else pointer.get_uint32(0) end end |
.write_size_t(pointer, value) ⇒ Object
119 120 121 122 123 124 125 |
# File 'lib/rtmidi/native.rb', line 119 def write_size_t(pointer, value) if FFI::Platform::ADDRESS_SIZE == 64 pointer.put_uint64(0, value) else pointer.put_uint32(0, value) end end |