MCPcopy Create free account
hub / github.com/celtera/libremidi / NB_MODULE

Function NB_MODULE

bindings/python/pylibremidi.cpp:209–491  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

207} // namespace libremidi
208
209NB_MODULE(pylibremidi, m) {
210#if defined(LIBREMIDI_WINMIDI) || defined(LIBREMIDI_WINUWP)
211 winrt::init_apartment();
212#endif
213
214 namespace nb = nanobind;
215 nb::class_<stdx::error>(m, "Error")
216 .def("__bool__", [](stdx::error e) { return e != stdx::error{}; })
217 .def("__str__", [](stdx::error e) { return e.message().data(); })
218 .def("__repr__", [](stdx::error e) { return e.message().data(); });
219 nb::enum_<libremidi::API>(m, "API")
220 .value("UNSPECIFIED", libremidi::API::UNSPECIFIED)
221
222 .value("COREMIDI", libremidi::API::COREMIDI)
223 .value("ALSA_SEQ", libremidi::API::ALSA_SEQ)
224 .value("ALSA_RAW", libremidi::API::ALSA_RAW)
225 .value("JACK_MIDI", libremidi::API::JACK_MIDI)
226 .value("WINDOWS_MM", libremidi::API::WINDOWS_MM)
227 .value("WINDOWS_UWP", libremidi::API::WINDOWS_UWP)
228 .value("WEBMIDI", libremidi::API::WEBMIDI)
229 .value("PIPEWIRE", libremidi::API::PIPEWIRE)
230 .value("KEYBOARD", libremidi::API::KEYBOARD)
231 .value("NETWORK", libremidi::API::NETWORK)
232
233 .value("ALSA_RAW_UMP", libremidi::API::ALSA_RAW_UMP)
234 .value("ALSA_SEQ_UMP", libremidi::API::ALSA_SEQ_UMP)
235 .value("COREMIDI_UMP", libremidi::API::COREMIDI_UMP)
236 .value("WINDOWS_MIDI_SERVICES", libremidi::API::WINDOWS_MIDI_SERVICES)
237 .value("KEYBOARD_UMP", libremidi::API::KEYBOARD_UMP)
238 .value("NETWORK_UMP", libremidi::API::NETWORK_UMP)
239 .value("JACK_UMP", libremidi::API::JACK_UMP)
240 .value("PIPEWIRE_UMP", libremidi::API::PIPEWIRE_UMP)
241
242 .value("DUMMY", libremidi::API::DUMMY)
243 .export_values();
244
245 m.def("available_apis", libremidi::available_apis);
246 m.def("available_ump_apis", libremidi::available_ump_apis);
247 m.def("get_version", libremidi::get_version);
248 m.def("get_api_name", libremidi::get_api_name);
249 m.def("get_api_display_name", libremidi::get_api_display_name);
250 m.def("get_compiled_api_by_name", libremidi::get_compiled_api_by_name);
251 m.def("midi1_default_api", libremidi::midi1::default_api);
252 m.def("midi2_default_api", libremidi::midi2::default_api);
253
254 nb::class_<libremidi::message>(m, "Message")
255 .def(nb::init<>())
256 .def_rw("bytes", &libremidi::message::bytes)
257 .def_rw("timestamp", &libremidi::message::timestamp)
258 .def("__len__", [](const libremidi::message &m, int idx) { return m.size(); })
259 .def("__getitem__", [](const libremidi::message &m, int idx) { return m[idx]; })
260 .def("__setitem__", [](libremidi::message &m, int idx, uint8_t res) { return m[idx] = res; })
261 .def("__repr__", [](const libremidi::message &m) {
262 std::stringstream str;
263 str << m.timestamp << ": ";
264 str << std::hex;
265 str << "[ ";
266 for (int val : m)

Callers

nothing calls this directly

Calls 15

valueMethod · 0.80
current_timeMethod · 0.80
dataMethod · 0.45
messageMethod · 0.45
sizeMethod · 0.45
beginMethod · 0.45
get_current_apiMethod · 0.45
get_input_portsMethod · 0.45
get_output_portsMethod · 0.45
pollMethod · 0.45
open_portMethod · 0.45
open_virtual_portMethod · 0.45

Tested by

no test coverage detected