Module: Rtmidi
- Defined in:
- lib/rtmidi/api.rb,
lib/rtmidi/error.rb,
lib/rtmidi/native.rb,
lib/rtmidi/message.rb,
lib/rtmidi/midi_in.rb,
lib/rtmidi/version.rb,
lib/rtmidi/midi_out.rb
Defined Under Namespace
Modules: Api, Message, Native
Classes: DriverError, Error, InvalidPortError, InvalidUseError, MemoryError, MidiIn, MidiOut, NoDevicesError
Constant Summary
collapse
- ERROR_MAP =
{
no_devices_found: NoDevicesError,
invalid_device: InvalidPortError,
memory_error: MemoryError,
invalid_parameter: ArgumentError,
invalid_use: InvalidUseError,
driver_error: DriverError,
system_error: Error,
thread_error: Error,
warning: nil,
debug_warning: nil,
unspecified: Error
}.freeze
- WARNING_TYPES =
%i[warning debug_warning].freeze
- VERSION =
"0.1.0"
Class Method Summary
collapse
Class Method Details
.api_by_name(name) ⇒ Object
68
69
70
71
|
# File 'lib/rtmidi/api.rb', line 68
def api_by_name(name)
value = Native.rtmidi_compiled_api_by_name(name.to_s)
Api.symbol_for(value) || :unspecified
end
|
.api_display_name(api) ⇒ Object
64
65
66
|
# File 'lib/rtmidi/api.rb', line 64
def api_display_name(api)
Native.rtmidi_api_display_name(Api.normalize(api))
end
|
.api_name(api) ⇒ Object
60
61
62
|
# File 'lib/rtmidi/api.rb', line 60
def api_name(api)
Native.rtmidi_api_name(Api.normalize(api))
end
|
.compiled_apis ⇒ Object
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/rtmidi/api.rb', line 46
def compiled_apis
Native.ensure_loaded!
count = Native.rtmidi_get_compiled_api(nil, 0).to_i
return [] if count <= 0
buffer = FFI::MemoryPointer.new(:int, count)
written = Native.rtmidi_get_compiled_api(buffer, count).to_i
length = [written, count].min
return [] if length <= 0
buffer.read_array_of_int(length).filter_map { |value| Api.symbol_for(value) }
end
|
.error_class_for(type) ⇒ Object
40
41
42
|
# File 'lib/rtmidi/error.rb', line 40
def error_class_for(type)
ERROR_MAP.fetch(type.to_sym, Error)
end
|
.error_for(type, message) ⇒ Object
44
45
46
47
48
49
50
|
# File 'lib/rtmidi/error.rb', line 44
def error_for(type, message)
klass = error_class_for(type)
return Error.new(message, type: type) if klass.nil?
return klass.new(message) unless klass <= Error
klass.new(message, type: type)
end
|
.version ⇒ Object
42
43
44
|
# File 'lib/rtmidi/api.rb', line 42
def version
Native.rtmidi_get_version
end
|
.warning_type?(type) ⇒ Boolean
36
37
38
|
# File 'lib/rtmidi/error.rb', line 36
def warning_type?(type)
WARNING_TYPES.include?(type.to_sym)
end
|