Loading...
Searching...
No Matches
MidiDeviceDatabase.hpp
1#pragma once
2
22#include <Protocols/MIDIDevices/MidiDeviceMap.hpp>
23
24#include <QString>
25
26#include <score_plugin_protocols_export.h>
27
28#include <optional>
29#include <vector>
30
31namespace Protocols::MIDIDevices
32{
33
36{
37 QString file;
38
40 QString source;
41
48 QString identity;
49
50 DeviceHeader header;
51
60 QString name() const;
61
63 QString label() const;
64};
65
70SCORE_PLUGIN_PROTOCOLS_EXPORT
71QString withoutBrand(const QString& model, const QString& brand);
72
82inline constexpr auto genericChannelId = "generic:channel";
83
85inline constexpr auto genericExpandedChannelId = "generic:channel+all";
86
91SCORE_PLUGIN_PROTOCOLS_EXPORT
92std::optional<bool> genericChannel(const QString& identity) noexcept;
93
100SCORE_PLUGIN_PROTOCOLS_EXPORT
101std::vector<QString> libraryPaths();
102
107class SCORE_PLUGIN_PROTOCOLS_EXPORT Database
108{
109public:
110 static Database& instance();
111
113 const std::vector<DeviceEntry>& devices() const noexcept { return m_devices; }
114
116 void rescan();
117
119 const DeviceEntry* find(const QString& identity) const noexcept;
120
122 static std::optional<DeviceMap> load(const DeviceEntry& entry);
123
124private:
125 Database();
126
127 std::vector<DeviceEntry> m_devices;
128};
129
130}
Definition MidiDeviceDatabase.hpp:108
const std::vector< DeviceEntry > & devices() const noexcept
Sorted by manufacturer, then model, then preset, case-insensitively.
Definition MidiDeviceDatabase.hpp:113
Where a description is and what it says about itself, not its controls.
Definition MidiDeviceDatabase.hpp:36
QString identity
Definition MidiDeviceDatabase.hpp:48
QString label() const
"Akai: MPK 225 (Preset 6)": name with the brand in front.
Definition MidiDeviceDatabase.cpp:103
QString source
The maps/<source> directory it was found in.
Definition MidiDeviceDatabase.hpp:40
QString name() const
Definition MidiDeviceDatabase.cpp:92
Definition MidiDeviceMap.hpp:392