working on win32 uwp! and libremidi update

This commit is contained in:
Sebastian @ HfG
2024-10-28 19:24:18 +01:00
parent 06cb6d8319
commit 1e3755148c
106 changed files with 8474 additions and 2198 deletions
+59
View File
@@ -0,0 +1,59 @@
#pragma once
// clang-format off
#include <libremidi/config.hpp>
// clang-format on
#include <libremidi/cmidi2.hpp>
#include <libremidi/error.hpp>
#include <libremidi/message.hpp>
#include <libremidi/ump.hpp>
namespace libremidi
{
struct midi1_to_midi2
{
stdx::error
convert(const unsigned char* message, std::size_t size, int64_t timestamp, auto on_ump)
{
context.midi1 = const_cast<unsigned char*>(message);
context.midi1_num_bytes = size;
context.midi1_proceeded_bytes = 0;
context.ump = ump;
context.ump_num_bytes = sizeof(ump);
context.ump_proceeded_bytes = 0;
if (auto res = cmidi2_convert_midi1_to_ump(&context); res != CMIDI2_CONVERSION_RESULT_OK)
return std::errc::invalid_argument;
return on_ump(context.ump, context.ump_proceeded_bytes / 4, timestamp);
}
cmidi2_midi_conversion_context context = [] {
cmidi2_midi_conversion_context tmp;
cmidi2_midi_conversion_context_initialize(&tmp);
return tmp;
}();
uint32_t ump[65536 / 4];
};
struct midi2_to_midi1
{
stdx::error
convert(const uint32_t* message, std::size_t /* size */, int64_t timestamp, auto on_midi)
{
auto n
= cmidi2_convert_single_ump_to_midi1(midi, sizeof(midi), const_cast<uint32_t*>(message));
if (n > 0)
return on_midi(midi, n, timestamp);
else
return std::errc::no_buffer_space;
}
cmidi2_midi_conversion_context context = [] {
cmidi2_midi_conversion_context tmp;
cmidi2_midi_conversion_context_initialize(&tmp);
return tmp;
}();
uint8_t midi[65536];
};
}