ACMX 2.139.0
Dual-Backend Real-Time GPU Video Synthesis
Loading...
Searching...
No Matches
midi.hpp
Go to the documentation of this file.
1#ifndef ACMXVK_MIDI_HPP
2#define ACMXVK_MIDI_HPP
3
4#include <cstdint>
5#include <memory>
6#include <ostream>
7#include <string>
8#include <vector>
9
10namespace acmxvk::midi {
11
12 struct MidiMessage {
13 double delta_seconds = 0.0;
14 std::vector<unsigned char> bytes;
15 std::uint64_t sequence = 0;
16 };
17
18 struct MidiMapping {
21 unsigned char status = 0;
22 unsigned char data1 = 0;
23 unsigned char data2 = 0;
24 };
25
26 [[nodiscard]] std::vector<MidiMapping> load_mapping_file(const std::string &filename);
27
28 class MidiInput {
29 public:
30 MidiInput();
32
33 MidiInput(const MidiInput &) = delete;
34 MidiInput &operator=(const MidiInput &) = delete;
35
36 bool open(int port = 0);
37 void close();
38 [[nodiscard]] bool is_open() const;
39 [[nodiscard]] std::vector<MidiMessage> poll_messages();
40 [[nodiscard]] std::uint64_t dropped_message_count() const;
41
42 static void list_ports(std::ostream &output);
43
44 private:
45 class Impl;
46 std::unique_ptr<Impl> impl;
47 };
48
49} // namespace acmxvk::midi
50
51#endif
std::uint64_t dropped_message_count() const
Definition midi.cpp:240
std::vector< MidiMessage > poll_messages()
Definition midi.cpp:238
static void list_ports(std::ostream &output)
Definition midi.cpp:242
bool is_open() const
Definition midi.cpp:236
std::unique_ptr< Impl > impl
Definition midi.hpp:46
MidiInput(const MidiInput &)=delete
MidiInput & operator=(const MidiInput &)=delete
bool open(int port=0)
Definition midi.cpp:232
std::vector< MidiMapping > load_mapping_file(const std::string &filename)
Definition midi.cpp:53
unsigned char status
Definition midi.hpp:21
unsigned char data1
Definition midi.hpp:22
unsigned char data2
Definition midi.hpp:23
std::vector< unsigned char > bytes
Definition midi.hpp:14
std::uint64_t sequence
Definition midi.hpp:15