midi: play c major scale
TIMA occurs at half the speed predicted in the SCSP manual in mednafen, but at the correct speed in Kronos. I don't know which is correct.
This commit is contained in:
parent
c26bdd2630
commit
778138971f
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,6 +8,7 @@
|
|||||||
*.png
|
*.png
|
||||||
*.out
|
*.out
|
||||||
*.pcm
|
*.pcm
|
||||||
|
*.su
|
||||||
res/mai.data
|
res/mai.data
|
||||||
tools/ttf-convert
|
tools/ttf-convert
|
||||||
tools/ttf-bitmap
|
tools/ttf-bitmap
|
||||||
|
6
Makefile
6
Makefile
@ -108,20 +108,20 @@ scsp/%-44100-s16be-1ch-100sample.pcm:
|
|||||||
synth 100s $* 440 vol -10dB
|
synth 100s $* 440 vol -10dB
|
||||||
mv $@.raw $@
|
mv $@.raw $@
|
||||||
|
|
||||||
scsp/slot.elf: scsp/slot.o scsp/sine-44100-s16be-1ch-1sec.pcm.o
|
|
||||||
|
|
||||||
m68k:
|
m68k:
|
||||||
|
|
||||||
m68k/%.bin: m68k
|
m68k/%.bin: m68k
|
||||||
$(MAKE) -C m68k $(notdir $@)
|
$(MAKE) -C m68k $(notdir $@)
|
||||||
|
|
||||||
|
scsp/slot.elf: scsp/slot.o scsp/sine-44100-s16be-1ch-1sec.pcm.o
|
||||||
|
|
||||||
scsp/sound_cpu__slot.elf: scsp/sound_cpu__slot.o m68k/slot.bin.o
|
scsp/sound_cpu__slot.elf: scsp/sound_cpu__slot.o m68k/slot.bin.o
|
||||||
|
|
||||||
scsp/sound_cpu__interrupt.elf: scsp/sound_cpu__interrupt.o m68k/interrupt.bin.o sh/lib1funcs.o res/sperrypc.font.bin.o common/draw_font.o common/palette.o
|
scsp/sound_cpu__interrupt.elf: scsp/sound_cpu__interrupt.o m68k/interrupt.bin.o sh/lib1funcs.o res/sperrypc.font.bin.o common/draw_font.o common/palette.o
|
||||||
|
|
||||||
scsp/fm.elf: scsp/fm.o res/nec.bitmap.bin.o sh/lib1funcs.o saturn/start.o scsp/sine-44100-s16be-1ch-100sample.pcm.o
|
scsp/fm.elf: scsp/fm.o res/nec.bitmap.bin.o sh/lib1funcs.o saturn/start.o scsp/sine-44100-s16be-1ch-100sample.pcm.o
|
||||||
|
|
||||||
scsp/midi.elf: scsp/midi.o res/nec.bitmap.bin.o sh/lib1funcs.o saturn/start.o scsp/sine-44100-s16be-1ch-100sample.pcm.o
|
scsp/sound_cpu__midi.elf: scsp/sound_cpu__midi.o m68k/midi.bin.o res/nec.bitmap.bin.o sh/lib1funcs.o saturn/start.o
|
||||||
|
|
||||||
res/sperrypc.bitmap.bin: tools/ttf-bitmap
|
res/sperrypc.bitmap.bin: tools/ttf-bitmap
|
||||||
./tools/ttf-bitmap 20 7f res/Bm437_SperryPC_CGA.otb $@
|
./tools/ttf-bitmap 20 7f res/Bm437_SperryPC_CGA.otb $@
|
||||||
|
@ -1,14 +1,28 @@
|
|||||||
CFLAGS = -I../saturn
|
CFLAGS = -I../saturn -fstack-usage
|
||||||
OPT = -Og
|
OPT = -O0
|
||||||
|
LIBGCC = $(shell $(CC) -print-file-name=libgcc.a)
|
||||||
LIB = ../saturn
|
LIB = ../saturn
|
||||||
|
|
||||||
all:
|
all:
|
||||||
|
|
||||||
include $(LIB)/m68k/common.mk
|
include $(LIB)/m68k/common.mk
|
||||||
|
|
||||||
|
# 200 bytes
|
||||||
|
%-44100-s16be-1ch-100sample.pcm: Makefile
|
||||||
|
sox \
|
||||||
|
-r 44100 -e signed-integer -b 16 -c 1 -n -B \
|
||||||
|
$@.raw \
|
||||||
|
synth 100s $* 440 vol -10dB
|
||||||
|
mv $@.raw $@
|
||||||
|
|
||||||
%.pcm.o: %.pcm
|
%.pcm.o: %.pcm
|
||||||
$(BUILD_BINARY_O)
|
$(BUILD_BINARY_O)
|
||||||
|
|
||||||
|
%.mid.o: %.mid
|
||||||
|
$(BUILD_BINARY_O)
|
||||||
|
|
||||||
slot.elf: slot.o sine-44100-s16be-1ch-1sec.pcm.o
|
slot.elf: slot.o sine-44100-s16be-1ch-1sec.pcm.o
|
||||||
|
|
||||||
interrupt.elf: interrupt.o jojo-11025-s16be-1ch.pcm.o
|
interrupt.elf: interrupt.o jojo-11025-s16be-1ch.pcm.o
|
||||||
|
|
||||||
|
midi.elf: midi.o sine-44100-s16be-1ch-100sample.pcm.o midi_test-c-major-scale.mid.o ../midi/parse.o $(LIBGCC)
|
||||||
|
262
m68k/midi.cpp
Normal file
262
m68k/midi.cpp
Normal file
@ -0,0 +1,262 @@
|
|||||||
|
#include <cstdint>
|
||||||
|
#include <tuple>
|
||||||
|
|
||||||
|
#include "scsp.h"
|
||||||
|
#include "../math/fp.hpp"
|
||||||
|
#include "../midi/parse.hpp"
|
||||||
|
#include "../common/copy.hpp"
|
||||||
|
|
||||||
|
extern void * _sine_start __asm("_binary_sine_44100_s16be_1ch_100sample_pcm_start");
|
||||||
|
extern void * _midi_start __asm("_binary_midi_test_c_major_scale_mid_start");
|
||||||
|
|
||||||
|
uint16_t
|
||||||
|
midi_note_to_oct_fns(const int8_t midi_note)
|
||||||
|
{
|
||||||
|
static const uint16_t _cent_to_fns[] = {
|
||||||
|
0x0,
|
||||||
|
0x3d,
|
||||||
|
0x7d,
|
||||||
|
0xc2,
|
||||||
|
0x10a,
|
||||||
|
0x157,
|
||||||
|
0x1a8,
|
||||||
|
0x1fe,
|
||||||
|
0x25a,
|
||||||
|
0x2ba,
|
||||||
|
0x321,
|
||||||
|
0x38d,
|
||||||
|
};
|
||||||
|
|
||||||
|
const int8_t a440_note = midi_note - 69;
|
||||||
|
const int8_t a440_note_d = (a440_note < 0) ? a440_note - 11 : a440_note;
|
||||||
|
const int8_t div12 = a440_note_d / static_cast<int8_t>(12);
|
||||||
|
const int8_t mod12 = a440_note % static_cast<int8_t>(12);
|
||||||
|
|
||||||
|
const uint16_t oct = div12;
|
||||||
|
const uint16_t cent = (a440_note < 0) ? 12 + mod12 : mod12;
|
||||||
|
const uint16_t fns = _cent_to_fns[cent];
|
||||||
|
|
||||||
|
return PITCH__OCT(oct) | PITCH__FNS(fns);
|
||||||
|
}
|
||||||
|
|
||||||
|
// maximum delay of 3258 days
|
||||||
|
using fp48_16 = fp<uint64_t, uint64_t, 16>;
|
||||||
|
|
||||||
|
constexpr uint8_t tactl = 7; // F/128
|
||||||
|
constexpr uint8_t tima = 0xfe;
|
||||||
|
|
||||||
|
constexpr fp48_16 increment_ms{2902, 32394}; // 2902.494293212890625
|
||||||
|
|
||||||
|
struct midi_state {
|
||||||
|
uint8_t const * buf;
|
||||||
|
midi::header_t header;
|
||||||
|
struct track {
|
||||||
|
uint8_t const * start;
|
||||||
|
int32_t length;
|
||||||
|
} current_track;
|
||||||
|
|
||||||
|
struct midi {
|
||||||
|
uint32_t tempo;
|
||||||
|
} midi;
|
||||||
|
|
||||||
|
fp48_16 delta_time_ms;
|
||||||
|
};
|
||||||
|
|
||||||
|
static midi_state state = {0};
|
||||||
|
|
||||||
|
[[noreturn]]
|
||||||
|
void error()
|
||||||
|
{
|
||||||
|
const uint32_t sine_start = reinterpret_cast<uint32_t>(&_sine_start);
|
||||||
|
|
||||||
|
{
|
||||||
|
scsp_slot& slot = scsp.reg.slot[0];
|
||||||
|
// start address (bytes)
|
||||||
|
slot.SA = SA__KYONB | SA__LPCTL__NORMAL | SA__SA(sine_start); // kx kb sbctl[1:0] ssctl[1:0] lpctl[1:0] 8b sa[19:0]
|
||||||
|
slot.LSA = 0; // loop start address (samples)
|
||||||
|
slot.LEA = 99; // loop end address (samples)
|
||||||
|
slot.EG = EG__EGHOLD; // d2r d1r ho ar krs dl rr
|
||||||
|
slot.FM = 0; // stwinh sdir tl mdl mdxsl mdysl
|
||||||
|
//slot.PITCH = PITCH__OCT(0) | PITCH__FNS(0); // oct fns
|
||||||
|
slot.PITCH = 0x78c2;
|
||||||
|
slot.LFO = 0; // lfof plfows
|
||||||
|
slot.MIXER = MIXER__DISDL(0b110); // disdl dipan efsdl efpan
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
scsp_slot& slot = scsp.reg.slot[1];
|
||||||
|
// start address (bytes)
|
||||||
|
slot.SA = SA__KYONB | SA__LPCTL__NORMAL | SA__SA(sine_start); // kx kb sbctl[1:0] ssctl[1:0] lpctl[1:0] 8b sa[19:0]
|
||||||
|
slot.LSA = 0; // loop start address (samples)
|
||||||
|
slot.LEA = 99; // loop end address (samples)
|
||||||
|
slot.EG = EG__EGHOLD; // d2r d1r ho ar krs dl rr
|
||||||
|
slot.FM = 0; // stwinh sdir tl mdl mdxsl mdysl
|
||||||
|
slot.PITCH = PITCH__OCT(1) | PITCH__FNS(0); // oct fns
|
||||||
|
slot.LFO = 0; // lfof plfows
|
||||||
|
slot.MIXER = MIXER__DISDL(0b110); // disdl dipan efsdl efpan
|
||||||
|
}
|
||||||
|
|
||||||
|
scsp.reg.slot[0].LOOP |= LOOP__KYONEX;
|
||||||
|
|
||||||
|
while (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
fp48_16 delay_ms(uint32_t delta_time)
|
||||||
|
{
|
||||||
|
return {(delta_time * state.midi.tempo) /
|
||||||
|
state.header.division.metrical.ticks_per_quarter_note};
|
||||||
|
}
|
||||||
|
|
||||||
|
static int _event = 0;
|
||||||
|
|
||||||
|
static volatile int timer_fired = 0;
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
void auto_vector_1(void) __attribute__ ((interrupt_handler));
|
||||||
|
void auto_vector_1(void)
|
||||||
|
{
|
||||||
|
// reset TIMER_A interrupt
|
||||||
|
scsp.reg.ctrl.SCIRE = INT__TIMER_A;
|
||||||
|
scsp.reg.ctrl.TIMA = TIMA__TACTL(tactl) | TIMA__TIMA(tima);
|
||||||
|
|
||||||
|
timer_fired = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void midi_step()
|
||||||
|
{
|
||||||
|
const uint32_t sine_start = reinterpret_cast<uint32_t>(&_sine_start);
|
||||||
|
// 11.2896 MHz
|
||||||
|
|
||||||
|
// 2902.4943 µs per interrupt this gives us 32768 cycles per
|
||||||
|
// interrupt, which *might* be roomy enough.
|
||||||
|
|
||||||
|
int kyonex = 0;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
scsp.ram.u32[0] = _event;
|
||||||
|
scsp.ram.u32[1] = state.delta_time_ms.value >> 16;
|
||||||
|
|
||||||
|
if (!(state.buf - state.current_track.start < state.current_track.length))
|
||||||
|
return;
|
||||||
|
|
||||||
|
auto mtrk_event_o = midi::parse::mtrk_event(state.buf);
|
||||||
|
if (!mtrk_event_o) error();
|
||||||
|
midi::mtrk_event_t mtrk_event;
|
||||||
|
uint8_t const * buf;
|
||||||
|
std::tie(buf, mtrk_event) = *mtrk_event_o;
|
||||||
|
|
||||||
|
scsp.ram.u32[2] = delay_ms(mtrk_event.delta_time).value >> 16;
|
||||||
|
|
||||||
|
fp48_16 delta_time_ms{0};
|
||||||
|
if (mtrk_event.delta_time != 0 &&
|
||||||
|
state.delta_time_ms.value < (delta_time_ms = delay_ms(mtrk_event.delta_time)).value)
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
state.buf = buf;
|
||||||
|
|
||||||
|
_event++;
|
||||||
|
|
||||||
|
switch (mtrk_event.event.type) {
|
||||||
|
case midi::event_t::type_t::midi:
|
||||||
|
{
|
||||||
|
midi::midi_event_t& midi_event = mtrk_event.event.event.midi;
|
||||||
|
|
||||||
|
switch (midi_event.type) {
|
||||||
|
case midi::midi_event_t::type_t::note_on:
|
||||||
|
{
|
||||||
|
scsp_slot& slot = scsp.reg.slot[0];
|
||||||
|
|
||||||
|
scsp.ram.u32[3] = midi_event.data.note_on.note;
|
||||||
|
|
||||||
|
//slot.SA = SA__KYONB | SA__LPCTL__NORMAL | SA__SA(sine_start);
|
||||||
|
slot.LOOP = LOOP__KYONB | LOOP__LPCTL__NORMAL | SAH__SA(sine_start);
|
||||||
|
slot.SAL = SAL__SA(sine_start);
|
||||||
|
slot.LSA = 0;
|
||||||
|
slot.LEA = 99;
|
||||||
|
slot.EG = EG__EGHOLD; //EG__AR(0x0f) | EG__D1R(0x4) | EG__D2R(0x4) | EG__RR(0x1f);
|
||||||
|
slot.FM = 0;
|
||||||
|
slot.PITCH = midi_note_to_oct_fns(midi_event.data.note_on.note);
|
||||||
|
slot.LFO = 0;
|
||||||
|
slot.MIXER = MIXER__DISDL(0b110);
|
||||||
|
|
||||||
|
kyonex = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case midi::midi_event_t::type_t::note_off:
|
||||||
|
{
|
||||||
|
scsp_slot& slot = scsp.reg.slot[0];
|
||||||
|
slot.LOOP = 0;
|
||||||
|
scsp.reg.slot[0].SA |= SA__KYONEX;
|
||||||
|
|
||||||
|
kyonex = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
state.delta_time_ms -= delta_time_ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (kyonex) {
|
||||||
|
scsp.reg.slot[0].SA |= SA__KYONEX;
|
||||||
|
}
|
||||||
|
|
||||||
|
state.delta_time_ms += increment_ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void init_midi()
|
||||||
|
{
|
||||||
|
state.buf = reinterpret_cast<uint8_t const *>(&_midi_start);
|
||||||
|
|
||||||
|
auto header_o = midi::parse::header(state.buf);
|
||||||
|
if (!header_o) error();
|
||||||
|
std::tie(state.buf, state.header) = *header_o;
|
||||||
|
|
||||||
|
auto track_o = midi::parse::track(state.buf);
|
||||||
|
if (!track_o) error();
|
||||||
|
std::tie(state.buf, state.current_track.length) = *track_o;
|
||||||
|
state.current_track.start = state.buf;
|
||||||
|
|
||||||
|
state.delta_time_ms = fp48_16{0};
|
||||||
|
state.midi.tempo = 500000; // default tempo
|
||||||
|
}
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
_event = 0;
|
||||||
|
scsp.ram.u32[0] = _event;
|
||||||
|
|
||||||
|
for (long i = 0; i < 3200; i++) { asm volatile ("nop"); } // wait for (way) more than 30µs
|
||||||
|
|
||||||
|
init_midi();
|
||||||
|
|
||||||
|
// timer A is vector 1 (0b001)
|
||||||
|
scsp.reg.ctrl.SCILV2 = 0;
|
||||||
|
scsp.reg.ctrl.SCILV1 = 0;
|
||||||
|
scsp.reg.ctrl.SCILV0 = SCILV__TIMER_A;
|
||||||
|
|
||||||
|
// enable TIMER_A
|
||||||
|
scsp.reg.ctrl.SCIRE = INT__TIMER_A;
|
||||||
|
scsp.reg.ctrl.SCIEB = INT__TIMER_A;
|
||||||
|
|
||||||
|
scsp.reg.ctrl.TIMA = TIMA__TACTL(tactl) | TIMA__TIMA(tima);
|
||||||
|
|
||||||
|
asm volatile ("move.w #8192,%sr");
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
while (timer_fired == 0) {
|
||||||
|
asm volatile ("nop");
|
||||||
|
}
|
||||||
|
|
||||||
|
timer_fired = 0;
|
||||||
|
midi_step();
|
||||||
|
}
|
||||||
|
}
|
@ -1 +0,0 @@
|
|||||||
../scsp/sine-44100-s16be-1ch.pcm
|
|
@ -10,10 +10,18 @@ struct fp
|
|||||||
{
|
{
|
||||||
T value;
|
T value;
|
||||||
|
|
||||||
|
constexpr inline fp() noexcept
|
||||||
|
: value(0)
|
||||||
|
{}
|
||||||
|
|
||||||
constexpr inline fp(T n) noexcept
|
constexpr inline fp(T n) noexcept
|
||||||
: value(n * (1 << B))
|
: value(n * (1 << B))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
constexpr inline fp(T n, T d) noexcept
|
||||||
|
: value(n * (1 << B) + d)
|
||||||
|
{}
|
||||||
|
|
||||||
constexpr inline explicit fp(T n, struct fp_raw_tag) noexcept
|
constexpr inline explicit fp(T n, struct fp_raw_tag) noexcept
|
||||||
: value(n)
|
: value(n)
|
||||||
{}
|
{}
|
||||||
|
@ -2,10 +2,57 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
#include <tuple>
|
||||||
|
|
||||||
#include "parse.hpp"
|
#include "parse.hpp"
|
||||||
#include "strings.hpp"
|
#include "strings.hpp"
|
||||||
|
|
||||||
|
static uint16_t _cent_to_fns[] = {
|
||||||
|
0x0,
|
||||||
|
0x3d,
|
||||||
|
0x7d,
|
||||||
|
0xc2,
|
||||||
|
0x10a,
|
||||||
|
0x157,
|
||||||
|
0x1a8,
|
||||||
|
0x1fe,
|
||||||
|
0x25a,
|
||||||
|
0x2ba,
|
||||||
|
0x321,
|
||||||
|
0x38d,
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr std::tuple<uint16_t, uint16_t>
|
||||||
|
midi_note_to_oct_fns(const int32_t midi_note)
|
||||||
|
{
|
||||||
|
int32_t a440_note = midi_note - 69;
|
||||||
|
uint16_t oct = (a440_note / 12) & 0xf;
|
||||||
|
uint32_t cent = static_cast<uint32_t>(a440_note) % 12;
|
||||||
|
uint16_t fns = _cent_to_fns[cent];
|
||||||
|
return {oct, fns};
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
dump_midi(midi::midi_event_t& midi_event)
|
||||||
|
{
|
||||||
|
switch (midi_event.type) {
|
||||||
|
case midi::midi_event_t::type_t::note_on:
|
||||||
|
{
|
||||||
|
std::cout << " note_on " << (int)midi_event.data.note_on.note << '\n';
|
||||||
|
auto&& [oct, fns] = midi_note_to_oct_fns(midi_event.data.note_on.note);
|
||||||
|
std::cout << " oct " << oct << " fns " << fns << '\n';
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case midi::midi_event_t::type_t::note_off:
|
||||||
|
{
|
||||||
|
std::cout << " note_off " << (int)midi_event.data.note_on.note << '\n';
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int parse(uint8_t const * start)
|
int parse(uint8_t const * start)
|
||||||
{
|
{
|
||||||
uint8_t const * buf = &start[0];
|
uint8_t const * buf = &start[0];
|
||||||
@ -56,6 +103,10 @@ int parse(uint8_t const * start)
|
|||||||
switch (mtrk_event.event.type) {
|
switch (mtrk_event.event.type) {
|
||||||
case midi::event_t::type_t::midi:
|
case midi::event_t::type_t::midi:
|
||||||
std::cout << " midi: " << '\n';
|
std::cout << " midi: " << '\n';
|
||||||
|
|
||||||
|
dump_midi(mtrk_event.event.event.midi);
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case midi::event_t::type_t::sysex:
|
case midi::event_t::type_t::sysex:
|
||||||
std::cout << " sysex: " << '\n';
|
std::cout << " sysex: " << '\n';
|
||||||
@ -69,8 +120,9 @@ int parse(uint8_t const * start)
|
|||||||
}
|
}
|
||||||
|
|
||||||
assert(buf - track_start == track_length);
|
assert(buf - track_start == track_length);
|
||||||
|
std::cout << "trailing/unparsed data: " << buf - track_start << '\n';
|
||||||
}
|
}
|
||||||
std::cout << "trailing/unparsed data: " << size - (buf - start) << '\n';
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
|
17
midi/interpreter.py
Normal file
17
midi/interpreter.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
def note_freq(n):
|
||||||
|
return 440 * 2 ** ((n-69)/12)
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class State:
|
||||||
|
tempo: int = 500000 # µS/qn
|
||||||
|
division: int = 96 # ticks/qn
|
||||||
|
|
||||||
|
state = State()
|
||||||
|
|
||||||
|
def delay(dt # microseconds
|
||||||
|
) -> int: # in microseconds
|
||||||
|
return int((dt * state.tempo) / state.division)
|
||||||
|
|
||||||
|
print(delay(96))
|
@ -24,11 +24,11 @@ int_variable_length(buf_t buf)
|
|||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr inline std::tuple<buf_t, uint16_t>
|
static inline std::tuple<buf_t, uint16_t>
|
||||||
int_fixed_length16(buf_t buf)
|
int_fixed_length16(buf_t buf)
|
||||||
{
|
{
|
||||||
uint16_t n;
|
uint16_t n;
|
||||||
if constexpr (std::endian::native == std::endian::big) {
|
if (0) {// constexpr (std::endian::native == std::endian::big) {
|
||||||
n = *reinterpret_cast<const uint16_t*>(buf);
|
n = *reinterpret_cast<const uint16_t*>(buf);
|
||||||
} else {
|
} else {
|
||||||
n = (buf[0] << 8 | buf[1] << 0);
|
n = (buf[0] << 8 | buf[1] << 0);
|
||||||
@ -36,11 +36,11 @@ int_fixed_length16(buf_t buf)
|
|||||||
return {buf + (sizeof (uint16_t)), n};
|
return {buf + (sizeof (uint16_t)), n};
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr inline std::tuple<buf_t, uint32_t>
|
static inline std::tuple<buf_t, uint32_t>
|
||||||
int_fixed_length32(buf_t buf)
|
int_fixed_length32(buf_t buf)
|
||||||
{
|
{
|
||||||
uint32_t n;
|
uint32_t n;
|
||||||
if constexpr (std::endian::native == std::endian::big) {
|
if (0) {//constexpr (std::endian::native == std::endian::big) {
|
||||||
n = *reinterpret_cast<const uint32_t*>(buf);
|
n = *reinterpret_cast<const uint32_t*>(buf);
|
||||||
} else {
|
} else {
|
||||||
n = (buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3] << 0);
|
n = (buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3] << 0);
|
||||||
@ -60,7 +60,7 @@ header_chunk_type(buf_t buf)
|
|||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr inline std::tuple<buf_t, division_t>
|
static inline std::tuple<buf_t, division_t>
|
||||||
division(buf_t buf)
|
division(buf_t buf)
|
||||||
{
|
{
|
||||||
uint16_t n;
|
uint16_t n;
|
||||||
|
372
midi/parse.su
Normal file
372
midi/parse.su
Normal file
@ -0,0 +1,372 @@
|
|||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/m68k-none-elf/bits/c++config.h:540:3:constexpr bool std::__is_constant_evaluated() 0 static
|
||||||
|
../midi/parse.cpp:12:1:constexpr std::optional<std::tuple<const unsigned char*, long unsigned int> > midi::parse::int_variable_length(buf_t) 48 dynamic,bounded
|
||||||
|
../midi/parse.cpp:28:1:std::tuple<const unsigned char*, short unsigned int> midi::parse::int_fixed_length16(buf_t) 24 dynamic,bounded
|
||||||
|
../midi/parse.cpp:40:1:std::tuple<const unsigned char*, long unsigned int> midi::parse::int_fixed_length32(buf_t) 24 dynamic,bounded
|
||||||
|
../midi/parse.cpp:52:1:constexpr std::optional<const unsigned char*> midi::parse::header_chunk_type(buf_t) 16 dynamic,bounded
|
||||||
|
../midi/parse.cpp:64:1:std::tuple<const unsigned char*, midi::division_t> midi::parse::division(buf_t) 44 dynamic,bounded
|
||||||
|
../midi/parse.cpp:82:1:std::optional<std::tuple<const unsigned char*, midi::header_t> > midi::parse::header(buf_t) 128 dynamic,bounded
|
||||||
|
../midi/parse.cpp:107:1:constexpr std::optional<std::tuple<const unsigned char*, midi::midi_event_t::type_t> > midi::parse::midi_event_type(buf_t) 120 dynamic,bounded
|
||||||
|
../midi/parse.cpp:128:1:constexpr int32_t midi::parse::midi_event_message_length(midi::midi_event_t::type_t) 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:984:26:constexpr std::optional<_Tp>::operator bool() const [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t::type_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:470:22:constexpr bool std::_Optional_base_impl<_Tp, _Dp>::_M_is_engaged() const [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t::type_t>; _Dp = std::_Optional_base<std::tuple<const unsigned char*, midi::midi_event_t::type_t>, true, false>] 0 static
|
||||||
|
../midi/parse.cpp:137:1:constexpr std::optional<std::tuple<const unsigned char*, midi::midi_event_t> > midi::parse::midi_event(buf_t) 60 dynamic,bounded
|
||||||
|
../midi/parse.cpp:159:1:constexpr std::optional<std::tuple<const unsigned char*, midi::sysex_event_t> > midi::parse::sysex_event(buf_t) 68 dynamic,bounded
|
||||||
|
../midi/parse.cpp:171:1:constexpr std::optional<std::tuple<const unsigned char*, midi::meta_event_t> > midi::parse::meta_event(buf_t) 72 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:984:26:constexpr std::optional<_Tp>::operator bool() const [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:470:22:constexpr bool std::_Optional_base_impl<_Tp, _Dp>::_M_is_engaged() const [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t>; _Dp = std::_Optional_base<std::tuple<const unsigned char*, midi::midi_event_t>, true, false>] 0 static
|
||||||
|
../midi/parse.cpp:184:1:constexpr std::optional<std::tuple<const unsigned char*, midi::event_t> > midi::parse::event(buf_t) 212 dynamic,bounded
|
||||||
|
../midi/parse.cpp:204:1:std::optional<std::tuple<const unsigned char*, midi::mtrk_event_t> > midi::parse::mtrk_event(buf_t) 128 dynamic,bounded
|
||||||
|
../midi/parse.cpp:219:1:constexpr std::optional<const unsigned char*> midi::parse::track_chunk_type(buf_t) 16 dynamic,bounded
|
||||||
|
../midi/parse.cpp:231:1:std::optional<std::tuple<const unsigned char*, long unsigned int> > midi::parse::track(buf_t) 56 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1338:2:constexpr std::tuple<_T1, _T2>::tuple(_U1&&, _U2&&) [with _U1 = const unsigned char*; _U2 = long unsigned int&; typename std::enable_if<std::_TupleConstraints<(! __is_alloc_arg<_U1>()), _T1, _T2>::__is_implicitly_constructible<_U1, _U2>(), bool>::type <anonymous> = true; _T1 = const unsigned char*; _T2 = long unsigned int] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:747:2:constexpr std::optional<_Tp>::optional(_Up&&) [with _Up = std::tuple<const unsigned char*, long unsigned int>; typename std::enable_if<__and_v<std::__not_<std::is_same<std::optional<_Tp>, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::__not_<std::is_same<std::in_place_t, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >, bool>::type <anonymous> = true; _Tp = std::tuple<const unsigned char*, long unsigned int>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:120:7:constexpr std::_Optional_payload_base<_Tp>::_Optional_payload_base() [with _Tp = std::tuple<const unsigned char*, long unsigned int>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:399:7:constexpr std::_Optional_payload<_Tp, true, false, false>::_Optional_payload() [with _Tp = std::tuple<const unsigned char*, long unsigned int>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:600:17:constexpr std::_Optional_base<_Tp, true, false>::_Optional_base() [with _Tp = std::tuple<const unsigned char*, long unsigned int>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:739:17:constexpr std::optional<_Tp>::optional(std::nullopt_t) [with _Tp = std::tuple<const unsigned char*, long unsigned int>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1338:2:constexpr std::tuple<_T1, _T2>::tuple(_U1&&, _U2&&) [with _U1 = const unsigned char*; _U2 = short unsigned int&; typename std::enable_if<std::_TupleConstraints<(! __is_alloc_arg<_U1>()), _T1, _T2>::__is_implicitly_constructible<_U1, _U2>(), bool>::type <anonymous> = true; _T1 = const unsigned char*; _T2 = short unsigned int] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:747:2:constexpr std::optional<_Tp>::optional(_Up&&) [with _Up = const unsigned char*; typename std::enable_if<__and_v<std::__not_<std::is_same<std::optional<_Tp>, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::__not_<std::is_same<std::in_place_t, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >, bool>::type <anonymous> = true; _Tp = const unsigned char*] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:120:7:constexpr std::_Optional_payload_base<_Tp>::_Optional_payload_base() [with _Tp = const unsigned char*] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:341:7:constexpr std::_Optional_payload<_Tp, true, true, true>::_Optional_payload() [with _Tp = const unsigned char*] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:643:17:constexpr std::_Optional_base<_Tp, true, true>::_Optional_base() [with _Tp = const unsigned char*] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:739:17:constexpr std::optional<_Tp>::optional(std::nullopt_t) [with _Tp = const unsigned char*] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:2155:5:) [with _Elements = {const unsigned char*, short unsigned int}] 16 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1638:2:constexpr std::__enable_if_t<__assignable<_U1, _U2>(), std::tuple<_T1, _T2>&> std::tuple<_T1, _T2>::operator=(std::tuple<_U1, _U2>&&) [with _U1 = const unsigned char*; _U2 = short unsigned int; _T1 = const unsigned char*&; _T2 = short unsigned int&] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1324:2:constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with bool _Dummy = true; typename std::enable_if<std::_TupleConstraints<_Dummy, _T1, _T2>::__is_implicitly_constructible<const _T1&, const _T2&>(), bool>::type <anonymous> = true; _T1 = const unsigned char*; _T2 = midi::division_t] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:984:26:constexpr std::optional<_Tp>::operator bool() const [with _Tp = const unsigned char*] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:120:7:constexpr std::_Optional_payload_base<_Tp>::_Optional_payload_base() [with _Tp = std::tuple<const unsigned char*, midi::header_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:399:7:constexpr std::_Optional_payload<_Tp, true, false, false>::_Optional_payload() [with _Tp = std::tuple<const unsigned char*, midi::header_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:600:17:constexpr std::_Optional_base<_Tp, true, false>::_Optional_base() [with _Tp = std::tuple<const unsigned char*, midi::header_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:739:17:constexpr std::optional<_Tp>::optional(std::nullopt_t) [with _Tp = std::tuple<const unsigned char*, midi::header_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:973:7:constexpr _Tp& std::optional<_Tp>::operator*() & [with _Tp = const unsigned char*] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:2155:5:) [with _Elements = {const unsigned char*, long unsigned int}] 16 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1638:2:constexpr std::__enable_if_t<__assignable<_U1, _U2>(), std::tuple<_T1, _T2>&> std::tuple<_T1, _T2>::operator=(std::tuple<_U1, _U2>&&) [with _U1 = const unsigned char*; _U2 = long unsigned int; _T1 = const unsigned char*&; _T2 = long unsigned int&] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:2155:5:) [with _Elements = {const unsigned char*, midi::division_t}] 16 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1638:2:constexpr std::__enable_if_t<__assignable<_U1, _U2>(), std::tuple<_T1, _T2>&> std::tuple<_T1, _T2>::operator=(std::tuple<_U1, _U2>&&) [with _U1 = const unsigned char*; _U2 = midi::division_t; _T1 = const unsigned char*&; _T2 = midi::division_t&] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1324:2:constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with bool _Dummy = true; typename std::enable_if<std::_TupleConstraints<_Dummy, _T1, _T2>::__is_implicitly_constructible<const _T1&, const _T2&>(), bool>::type <anonymous> = true; _T1 = const unsigned char*; _T2 = midi::header_t] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:747:2:constexpr std::optional<_Tp>::optional(_Up&&) [with _Up = std::tuple<const unsigned char*, midi::header_t>; typename std::enable_if<__and_v<std::__not_<std::is_same<std::optional<_Tp>, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::__not_<std::is_same<std::in_place_t, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >, bool>::type <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::header_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1338:2:constexpr std::tuple<_T1, _T2>::tuple(_U1&&, _U2&&) [with _U1 = const unsigned char*&; _U2 = midi::midi_event_t::type_t; typename std::enable_if<std::_TupleConstraints<(! __is_alloc_arg<_U1>()), _T1, _T2>::__is_implicitly_constructible<_U1, _U2>(), bool>::type <anonymous> = true; _T1 = const unsigned char*; _T2 = midi::midi_event_t::type_t] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:747:2:constexpr std::optional<_Tp>::optional(_Up&&) [with _Up = std::tuple<const unsigned char*, midi::midi_event_t::type_t>; typename std::enable_if<__and_v<std::__not_<std::is_same<std::optional<_Tp>, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::__not_<std::is_same<std::in_place_t, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >, bool>::type <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::midi_event_t::type_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:120:7:constexpr std::_Optional_payload_base<_Tp>::_Optional_payload_base() [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t::type_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:399:7:constexpr std::_Optional_payload<_Tp, true, false, false>::_Optional_payload() [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t::type_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:600:17:constexpr std::_Optional_base<_Tp, true, false>::_Optional_base() [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t::type_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:739:17:constexpr std::optional<_Tp>::optional(std::nullopt_t) [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t::type_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:120:7:constexpr std::_Optional_payload_base<_Tp>::_Optional_payload_base() [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:399:7:constexpr std::_Optional_payload<_Tp, true, false, false>::_Optional_payload() [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:600:17:constexpr std::_Optional_base<_Tp, true, false>::_Optional_base() [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:739:17:constexpr std::optional<_Tp>::optional(std::nullopt_t) [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:2155:5:) [with _Elements = {const unsigned char*, midi::midi_event_t::type_t}] 16 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:973:7:constexpr _Tp& std::optional<_Tp>::operator*() & [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t::type_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1628:2:constexpr std::__enable_if_t<__assignable<const _U1&, const _U2&>(), std::tuple<_T1, _T2>&> std::tuple<_T1, _T2>::operator=(const std::tuple<_U1, _U2>&) [with _U1 = const unsigned char*; _U2 = midi::midi_event_t::type_t; _T1 = const unsigned char*&; _T2 = midi::midi_event_t::type_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1338:2:constexpr std::tuple<_T1, _T2>::tuple(_U1&&, _U2&&) [with _U1 = const unsigned char*&; _U2 = midi::midi_event_t&; typename std::enable_if<std::_TupleConstraints<(! __is_alloc_arg<_U1>()), _T1, _T2>::__is_implicitly_constructible<_U1, _U2>(), bool>::type <anonymous> = true; _T1 = const unsigned char*; _T2 = midi::midi_event_t] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:747:2:constexpr std::optional<_Tp>::optional(_Up&&) [with _Up = std::tuple<const unsigned char*, midi::midi_event_t>; typename std::enable_if<__and_v<std::__not_<std::is_same<std::optional<_Tp>, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::__not_<std::is_same<std::in_place_t, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >, bool>::type <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::midi_event_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:120:7:constexpr std::_Optional_payload_base<_Tp>::_Optional_payload_base() [with _Tp = std::tuple<const unsigned char*, midi::sysex_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:399:7:constexpr std::_Optional_payload<_Tp, true, false, false>::_Optional_payload() [with _Tp = std::tuple<const unsigned char*, midi::sysex_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:600:17:constexpr std::_Optional_base<_Tp, true, false>::_Optional_base() [with _Tp = std::tuple<const unsigned char*, midi::sysex_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:739:17:constexpr std::optional<_Tp>::optional(std::nullopt_t) [with _Tp = std::tuple<const unsigned char*, midi::sysex_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:984:26:constexpr std::optional<_Tp>::operator bool() const [with _Tp = std::tuple<const unsigned char*, long unsigned int>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:973:7:constexpr _Tp& std::optional<_Tp>::operator*() & [with _Tp = std::tuple<const unsigned char*, long unsigned int>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1628:2:constexpr std::__enable_if_t<__assignable<const _U1&, const _U2&>(), std::tuple<_T1, _T2>&> std::tuple<_T1, _T2>::operator=(const std::tuple<_U1, _U2>&) [with _U1 = const unsigned char*; _U2 = long unsigned int; _T1 = const unsigned char*&; _T2 = long unsigned int&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1324:2:constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with bool _Dummy = true; typename std::enable_if<std::_TupleConstraints<_Dummy, _T1, _T2>::__is_implicitly_constructible<const _T1&, const _T2&>(), bool>::type <anonymous> = true; _T1 = const unsigned char*; _T2 = midi::sysex_event_t] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:747:2:constexpr std::optional<_Tp>::optional(_Up&&) [with _Up = std::tuple<const unsigned char*, midi::sysex_event_t>; typename std::enable_if<__and_v<std::__not_<std::is_same<std::optional<_Tp>, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::__not_<std::is_same<std::in_place_t, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >, bool>::type <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::sysex_event_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:120:7:constexpr std::_Optional_payload_base<_Tp>::_Optional_payload_base() [with _Tp = std::tuple<const unsigned char*, midi::meta_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:399:7:constexpr std::_Optional_payload<_Tp, true, false, false>::_Optional_payload() [with _Tp = std::tuple<const unsigned char*, midi::meta_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:600:17:constexpr std::_Optional_base<_Tp, true, false>::_Optional_base() [with _Tp = std::tuple<const unsigned char*, midi::meta_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:739:17:constexpr std::optional<_Tp>::optional(std::nullopt_t) [with _Tp = std::tuple<const unsigned char*, midi::meta_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1324:2:constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with bool _Dummy = true; typename std::enable_if<std::_TupleConstraints<_Dummy, _T1, _T2>::__is_implicitly_constructible<const _T1&, const _T2&>(), bool>::type <anonymous> = true; _T1 = const unsigned char*; _T2 = midi::meta_event_t] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:747:2:constexpr std::optional<_Tp>::optional(_Up&&) [with _Up = std::tuple<const unsigned char*, midi::meta_event_t>; typename std::enable_if<__and_v<std::__not_<std::is_same<std::optional<_Tp>, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::__not_<std::is_same<std::in_place_t, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >, bool>::type <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::meta_event_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:2155:5:) [with _Elements = {const unsigned char*, midi::midi_event_t}] 16 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:973:7:constexpr _Tp& std::optional<_Tp>::operator*() & [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1628:2:constexpr std::__enable_if_t<__assignable<const _U1&, const _U2&>(), std::tuple<_T1, _T2>&> std::tuple<_T1, _T2>::operator=(const std::tuple<_U1, _U2>&) [with _U1 = const unsigned char*; _U2 = midi::midi_event_t; _T1 = const unsigned char*&; _T2 = midi::midi_event_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1324:2:constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with bool _Dummy = true; typename std::enable_if<std::_TupleConstraints<_Dummy, _T1, _T2>::__is_implicitly_constructible<const _T1&, const _T2&>(), bool>::type <anonymous> = true; _T1 = const unsigned char*; _T2 = midi::event_t] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:747:2:constexpr std::optional<_Tp>::optional(_Up&&) [with _Up = std::tuple<const unsigned char*, midi::event_t>; typename std::enable_if<__and_v<std::__not_<std::is_same<std::optional<_Tp>, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::__not_<std::is_same<std::in_place_t, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >, bool>::type <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::event_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:984:26:constexpr std::optional<_Tp>::operator bool() const [with _Tp = std::tuple<const unsigned char*, midi::meta_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:2155:5:) [with _Elements = {const unsigned char*, midi::meta_event_t}] 16 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:973:7:constexpr _Tp& std::optional<_Tp>::operator*() & [with _Tp = std::tuple<const unsigned char*, midi::meta_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1628:2:constexpr std::__enable_if_t<__assignable<const _U1&, const _U2&>(), std::tuple<_T1, _T2>&> std::tuple<_T1, _T2>::operator=(const std::tuple<_U1, _U2>&) [with _U1 = const unsigned char*; _U2 = midi::meta_event_t; _T1 = const unsigned char*&; _T2 = midi::meta_event_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:984:26:constexpr std::optional<_Tp>::operator bool() const [with _Tp = std::tuple<const unsigned char*, midi::sysex_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:2155:5:) [with _Elements = {const unsigned char*, midi::sysex_event_t}] 16 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:973:7:constexpr _Tp& std::optional<_Tp>::operator*() & [with _Tp = std::tuple<const unsigned char*, midi::sysex_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1628:2:constexpr std::__enable_if_t<__assignable<const _U1&, const _U2&>(), std::tuple<_T1, _T2>&> std::tuple<_T1, _T2>::operator=(const std::tuple<_U1, _U2>&) [with _U1 = const unsigned char*; _U2 = midi::sysex_event_t; _T1 = const unsigned char*&; _T2 = midi::sysex_event_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:120:7:constexpr std::_Optional_payload_base<_Tp>::_Optional_payload_base() [with _Tp = std::tuple<const unsigned char*, midi::event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:399:7:constexpr std::_Optional_payload<_Tp, true, false, false>::_Optional_payload() [with _Tp = std::tuple<const unsigned char*, midi::event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:600:17:constexpr std::_Optional_base<_Tp, true, false>::_Optional_base() [with _Tp = std::tuple<const unsigned char*, midi::event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:739:17:constexpr std::optional<_Tp>::optional(std::nullopt_t) [with _Tp = std::tuple<const unsigned char*, midi::event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:120:7:constexpr std::_Optional_payload_base<_Tp>::_Optional_payload_base() [with _Tp = std::tuple<const unsigned char*, midi::mtrk_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:399:7:constexpr std::_Optional_payload<_Tp, true, false, false>::_Optional_payload() [with _Tp = std::tuple<const unsigned char*, midi::mtrk_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:600:17:constexpr std::_Optional_base<_Tp, true, false>::_Optional_base() [with _Tp = std::tuple<const unsigned char*, midi::mtrk_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:739:17:constexpr std::optional<_Tp>::optional(std::nullopt_t) [with _Tp = std::tuple<const unsigned char*, midi::mtrk_event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:984:26:constexpr std::optional<_Tp>::operator bool() const [with _Tp = std::tuple<const unsigned char*, midi::event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:2155:5:) [with _Elements = {const unsigned char*, midi::event_t}] 16 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:973:7:constexpr _Tp& std::optional<_Tp>::operator*() & [with _Tp = std::tuple<const unsigned char*, midi::event_t>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1628:2:constexpr std::__enable_if_t<__assignable<const _U1&, const _U2&>(), std::tuple<_T1, _T2>&> std::tuple<_T1, _T2>::operator=(const std::tuple<_U1, _U2>&) [with _U1 = const unsigned char*; _U2 = midi::event_t; _T1 = const unsigned char*&; _T2 = midi::event_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1324:2:constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with bool _Dummy = true; typename std::enable_if<std::_TupleConstraints<_Dummy, _T1, _T2>::__is_implicitly_constructible<const _T1&, const _T2&>(), bool>::type <anonymous> = true; _T1 = const unsigned char*; _T2 = midi::mtrk_event_t] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:747:2:constexpr std::optional<_Tp>::optional(_Up&&) [with _Up = std::tuple<const unsigned char*, midi::mtrk_event_t>; typename std::enable_if<__and_v<std::__not_<std::is_same<std::optional<_Tp>, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::__not_<std::is_same<std::in_place_t, typename std::remove_cv<typename std::remove_reference<_Iter>::type>::type> >, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >, bool>::type <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::mtrk_event_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1338:2:constexpr std::tuple<_T1, _T2>::tuple(_U1&&, _U2&&) [with _U1 = const unsigned char*&; _U2 = long unsigned int&; typename std::enable_if<std::_TupleConstraints<(! __is_alloc_arg<_U1>()), _T1, _T2>::__is_implicitly_constructible<_U1, _U2>(), bool>::type <anonymous> = true; _T1 = const unsigned char*; _T2 = long unsigned int] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = const unsigned char*] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = long unsigned int&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:291:2:) [with _UHead = const unsigned char*; _UTail = {long unsigned int&}; <template-parameter-2-3> = void; long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {long unsigned int}] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = tuple<const unsigned char*, long unsigned int>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:397:42:) [with _Args = {std::tuple<const unsigned char*, long unsigned int>}][inherited from std::_Optional_payload_base<std::tuple<const unsigned char*, long unsigned int> >] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:606:2:>, bool>::type <anonymous> = false; _Tp = std::tuple<const unsigned char*, long unsigned int>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:209:14:constexpr std::_Optional_payload_base<_Tp>::_Storage<_Up, <anonymous> >::_Storage() [with _Up = std::tuple<const unsigned char*, long unsigned int>; bool <anonymous> = true; _Tp = std::tuple<const unsigned char*, long unsigned int>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = short unsigned int&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:291:2:) [with _UHead = const unsigned char*; _UTail = {short unsigned int&}; <template-parameter-2-3> = void; long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {short unsigned int}] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:339:42:) [with _Args = {const unsigned char*}][inherited from std::_Optional_payload_base<const unsigned char*>] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:649:2:>, bool>::type <anonymous> = false; _Tp = const unsigned char*] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:209:14:constexpr std::_Optional_payload_base<_Tp>::_Storage<_Up, <anonymous> >::_Storage() [with _Up = const unsigned char*; bool <anonymous> = true; _Tp = const unsigned char*] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1324:2:constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with bool _Dummy = true; typename std::enable_if<std::_TupleConstraints<_Dummy, _T1, _T2>::__is_implicitly_constructible<const _T1&, const _T2&>(), bool>::type <anonymous> = true; _T1 = const unsigned char*&; _T2 = short unsigned int&] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:104:5:constexpr typename std::remove_reference<_Tp>::type&& std::move(_Tp&&) [with _Tp = tuple<const unsigned char*, short unsigned int>&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:437:2:>&&) [with _UHead = const unsigned char*; _UTails = {short unsigned int}; long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {short unsigned int&}] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:284:7:) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::division_t}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:470:22:constexpr bool std::_Optional_base_impl<_Tp, _Dp>::_M_is_engaged() const [with _Tp = const unsigned char*; _Dp = std::_Optional_base<const unsigned char*, true, true>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:209:14:constexpr std::_Optional_payload_base<_Tp>::_Storage<_Up, <anonymous> >::_Storage() [with _Up = std::tuple<const unsigned char*, midi::header_t>; bool <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::header_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:475:7:constexpr _Tp& std::_Optional_base_impl<_Tp, _Dp>::_M_get() [with _Tp = const unsigned char*; _Dp = std::_Optional_base<const unsigned char*, true, true>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1324:2:constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with bool _Dummy = true; typename std::enable_if<std::_TupleConstraints<_Dummy, _T1, _T2>::__is_implicitly_constructible<const _T1&, const _T2&>(), bool>::type <anonymous> = true; _T1 = const unsigned char*&; _T2 = long unsigned int&] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:104:5:constexpr typename std::remove_reference<_Tp>::type&& std::move(_Tp&&) [with _Tp = tuple<const unsigned char*, long unsigned int>&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:437:2:>&&) [with _UHead = const unsigned char*; _UTails = {long unsigned int}; long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {long unsigned int&}] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1324:2:constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with bool _Dummy = true; typename std::enable_if<std::_TupleConstraints<_Dummy, _T1, _T2>::__is_implicitly_constructible<const _T1&, const _T2&>(), bool>::type <anonymous> = true; _T1 = const unsigned char*&; _T2 = midi::division_t&] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:104:5:constexpr typename std::remove_reference<_Tp>::type&& std::move(_Tp&&) [with _Tp = tuple<const unsigned char*, midi::division_t>&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:437:2:>&&) [with _UHead = const unsigned char*; _UTails = {midi::division_t}; long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::division_t&}] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:284:7:) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::header_t}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = tuple<const unsigned char*, midi::header_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:397:42:) [with _Args = {std::tuple<const unsigned char*, midi::header_t>}][inherited from std::_Optional_payload_base<std::tuple<const unsigned char*, midi::header_t> >] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:606:2:>, bool>::type <anonymous> = false; _Tp = std::tuple<const unsigned char*, midi::header_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = const unsigned char*&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = midi::midi_event_t::type_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:291:2:) [with _UHead = const unsigned char*&; _UTail = {midi::midi_event_t::type_t}; <template-parameter-2-3> = void; long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::midi_event_t::type_t}] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = tuple<const unsigned char*, midi::midi_event_t::type_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:397:42:) [with _Args = {std::tuple<const unsigned char*, midi::midi_event_t::type_t>}][inherited from std::_Optional_payload_base<std::tuple<const unsigned char*, midi::midi_event_t::type_t> >] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:606:2:>, bool>::type <anonymous> = false; _Tp = std::tuple<const unsigned char*, midi::midi_event_t::type_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:209:14:constexpr std::_Optional_payload_base<_Tp>::_Storage<_Up, <anonymous> >::_Storage() [with _Up = std::tuple<const unsigned char*, midi::midi_event_t::type_t>; bool <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::midi_event_t::type_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:209:14:constexpr std::_Optional_payload_base<_Tp>::_Storage<_Up, <anonymous> >::_Storage() [with _Up = std::tuple<const unsigned char*, midi::midi_event_t>; bool <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::midi_event_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1324:2:constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with bool _Dummy = true; typename std::enable_if<std::_TupleConstraints<_Dummy, _T1, _T2>::__is_implicitly_constructible<const _T1&, const _T2&>(), bool>::type <anonymous> = true; _T1 = const unsigned char*&; _T2 = midi::midi_event_t::type_t&] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:475:7:constexpr _Tp& std::_Optional_base_impl<_Tp, _Dp>::_M_get() [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t::type_t>; _Dp = std::_Optional_base<std::tuple<const unsigned char*, midi::midi_event_t::type_t>, true, false>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:427:2:>&) [with _UElements = {const unsigned char*, midi::midi_event_t::type_t}; long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::midi_event_t::type_t&}] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = midi::midi_event_t&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:291:2:) [with _UHead = const unsigned char*&; _UTail = {midi::midi_event_t&}; <template-parameter-2-3> = void; long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::midi_event_t}] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = tuple<const unsigned char*, midi::midi_event_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:397:42:) [with _Args = {std::tuple<const unsigned char*, midi::midi_event_t>}][inherited from std::_Optional_payload_base<std::tuple<const unsigned char*, midi::midi_event_t> >] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:606:2:>, bool>::type <anonymous> = false; _Tp = std::tuple<const unsigned char*, midi::midi_event_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:209:14:constexpr std::_Optional_payload_base<_Tp>::_Storage<_Up, <anonymous> >::_Storage() [with _Up = std::tuple<const unsigned char*, midi::sysex_event_t>; bool <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::sysex_event_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:470:22:constexpr bool std::_Optional_base_impl<_Tp, _Dp>::_M_is_engaged() const [with _Tp = std::tuple<const unsigned char*, long unsigned int>; _Dp = std::_Optional_base<std::tuple<const unsigned char*, long unsigned int>, true, false>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:475:7:constexpr _Tp& std::_Optional_base_impl<_Tp, _Dp>::_M_get() [with _Tp = std::tuple<const unsigned char*, long unsigned int>; _Dp = std::_Optional_base<std::tuple<const unsigned char*, long unsigned int>, true, false>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:427:2:>&) [with _UElements = {const unsigned char*, long unsigned int}; long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {long unsigned int&}] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:284:7:) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::sysex_event_t}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = tuple<const unsigned char*, midi::sysex_event_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:397:42:) [with _Args = {std::tuple<const unsigned char*, midi::sysex_event_t>}][inherited from std::_Optional_payload_base<std::tuple<const unsigned char*, midi::sysex_event_t> >] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:606:2:>, bool>::type <anonymous> = false; _Tp = std::tuple<const unsigned char*, midi::sysex_event_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:209:14:constexpr std::_Optional_payload_base<_Tp>::_Storage<_Up, <anonymous> >::_Storage() [with _Up = std::tuple<const unsigned char*, midi::meta_event_t>; bool <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::meta_event_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:284:7:) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::meta_event_t}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = tuple<const unsigned char*, midi::meta_event_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:397:42:) [with _Args = {std::tuple<const unsigned char*, midi::meta_event_t>}][inherited from std::_Optional_payload_base<std::tuple<const unsigned char*, midi::meta_event_t> >] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:606:2:>, bool>::type <anonymous> = false; _Tp = std::tuple<const unsigned char*, midi::meta_event_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1324:2:constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with bool _Dummy = true; typename std::enable_if<std::_TupleConstraints<_Dummy, _T1, _T2>::__is_implicitly_constructible<const _T1&, const _T2&>(), bool>::type <anonymous> = true; _T1 = const unsigned char*&; _T2 = midi::midi_event_t&] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:475:7:constexpr _Tp& std::_Optional_base_impl<_Tp, _Dp>::_M_get() [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t>; _Dp = std::_Optional_base<std::tuple<const unsigned char*, midi::midi_event_t>, true, false>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:427:2:>&) [with _UElements = {const unsigned char*, midi::midi_event_t}; long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::midi_event_t&}] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:284:7:) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::event_t}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = tuple<const unsigned char*, midi::event_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:397:42:) [with _Args = {std::tuple<const unsigned char*, midi::event_t>}][inherited from std::_Optional_payload_base<std::tuple<const unsigned char*, midi::event_t> >] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:606:2:>, bool>::type <anonymous> = false; _Tp = std::tuple<const unsigned char*, midi::event_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:470:22:constexpr bool std::_Optional_base_impl<_Tp, _Dp>::_M_is_engaged() const [with _Tp = std::tuple<const unsigned char*, midi::meta_event_t>; _Dp = std::_Optional_base<std::tuple<const unsigned char*, midi::meta_event_t>, true, false>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1324:2:constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with bool _Dummy = true; typename std::enable_if<std::_TupleConstraints<_Dummy, _T1, _T2>::__is_implicitly_constructible<const _T1&, const _T2&>(), bool>::type <anonymous> = true; _T1 = const unsigned char*&; _T2 = midi::meta_event_t&] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:475:7:constexpr _Tp& std::_Optional_base_impl<_Tp, _Dp>::_M_get() [with _Tp = std::tuple<const unsigned char*, midi::meta_event_t>; _Dp = std::_Optional_base<std::tuple<const unsigned char*, midi::meta_event_t>, true, false>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:427:2:>&) [with _UElements = {const unsigned char*, midi::meta_event_t}; long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::meta_event_t&}] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:470:22:constexpr bool std::_Optional_base_impl<_Tp, _Dp>::_M_is_engaged() const [with _Tp = std::tuple<const unsigned char*, midi::sysex_event_t>; _Dp = std::_Optional_base<std::tuple<const unsigned char*, midi::sysex_event_t>, true, false>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1324:2:constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with bool _Dummy = true; typename std::enable_if<std::_TupleConstraints<_Dummy, _T1, _T2>::__is_implicitly_constructible<const _T1&, const _T2&>(), bool>::type <anonymous> = true; _T1 = const unsigned char*&; _T2 = midi::sysex_event_t&] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:475:7:constexpr _Tp& std::_Optional_base_impl<_Tp, _Dp>::_M_get() [with _Tp = std::tuple<const unsigned char*, midi::sysex_event_t>; _Dp = std::_Optional_base<std::tuple<const unsigned char*, midi::sysex_event_t>, true, false>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:427:2:>&) [with _UElements = {const unsigned char*, midi::sysex_event_t}; long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::sysex_event_t&}] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:209:14:constexpr std::_Optional_payload_base<_Tp>::_Storage<_Up, <anonymous> >::_Storage() [with _Up = std::tuple<const unsigned char*, midi::event_t>; bool <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::event_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:209:14:constexpr std::_Optional_payload_base<_Tp>::_Storage<_Up, <anonymous> >::_Storage() [with _Up = std::tuple<const unsigned char*, midi::mtrk_event_t>; bool <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::mtrk_event_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:470:22:constexpr bool std::_Optional_base_impl<_Tp, _Dp>::_M_is_engaged() const [with _Tp = std::tuple<const unsigned char*, midi::event_t>; _Dp = std::_Optional_base<std::tuple<const unsigned char*, midi::event_t>, true, false>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1324:2:constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with bool _Dummy = true; typename std::enable_if<std::_TupleConstraints<_Dummy, _T1, _T2>::__is_implicitly_constructible<const _T1&, const _T2&>(), bool>::type <anonymous> = true; _T1 = const unsigned char*&; _T2 = midi::event_t&] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:475:7:constexpr _Tp& std::_Optional_base_impl<_Tp, _Dp>::_M_get() [with _Tp = std::tuple<const unsigned char*, midi::event_t>; _Dp = std::_Optional_base<std::tuple<const unsigned char*, midi::event_t>, true, false>] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:427:2:>&) [with _UElements = {const unsigned char*, midi::event_t}; long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::event_t&}] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:284:7:) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::mtrk_event_t}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = tuple<const unsigned char*, midi::mtrk_event_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:397:42:) [with _Args = {std::tuple<const unsigned char*, midi::mtrk_event_t>}][inherited from std::_Optional_payload_base<std::tuple<const unsigned char*, midi::mtrk_event_t> >] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:606:2:>, bool>::type <anonymous> = false; _Tp = std::tuple<const unsigned char*, midi::mtrk_event_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:291:2:) [with _UHead = const unsigned char*&; _UTail = {long unsigned int&}; <template-parameter-2-3> = void; long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {long unsigned int}] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:513:2:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(_UHead&&) [with _UHead = long unsigned int&; long unsigned int _Idx = 1; _Head = long unsigned int] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:200:19:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(_UHead&&) [with _UHead = const unsigned char*; long unsigned int _Idx = 0; _Head = const unsigned char*] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:125:2:) [with _Args = {std::tuple<const unsigned char*, long unsigned int>}; _Tp = std::tuple<const unsigned char*, long unsigned int>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:513:2:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(_UHead&&) [with _UHead = short unsigned int&; long unsigned int _Idx = 1; _Head = short unsigned int] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:125:2:) [with _Args = {const unsigned char*}; _Tp = const unsigned char*] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:284:7:) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {short unsigned int&}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:269:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {short unsigned int&}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:269:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {short unsigned int}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:275:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {short unsigned int&}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:275:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {short unsigned int}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:104:5:constexpr typename std::remove_reference<_Tp>::type&& std::move(_Tp&&) [with _Tp = _Tuple_impl<1, short unsigned int>&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:640:2:constexpr void std::_Tuple_impl<_Idx, _Head>::_M_assign(std::_Tuple_impl<_Idx, _UHead>&&) [with _UHead = short unsigned int; long unsigned int _Idx = 1; _Head = short unsigned int&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:507:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::division_t] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:193:17:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const _Head&) [with long unsigned int _Idx = 0; _Head = const unsigned char*] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:306:7:constexpr _Tp& std::_Optional_payload_base<_Tp>::_M_get() [with _Tp = const unsigned char*] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:284:7:) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {long unsigned int&}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:269:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {long unsigned int&}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:269:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {long unsigned int}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:275:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {long unsigned int&}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:275:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {long unsigned int}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:104:5:constexpr typename std::remove_reference<_Tp>::type&& std::move(_Tp&&) [with _Tp = _Tuple_impl<1, long unsigned int>&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:640:2:constexpr void std::_Tuple_impl<_Idx, _Head>::_M_assign(std::_Tuple_impl<_Idx, _UHead>&&) [with _UHead = long unsigned int; long unsigned int _Idx = 1; _Head = long unsigned int&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:284:7:) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::division_t&}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:269:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::division_t&}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:269:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::division_t}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:275:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::division_t&}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:275:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::division_t}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:104:5:constexpr typename std::remove_reference<_Tp>::type&& std::move(_Tp&&) [with _Tp = _Tuple_impl<1, midi::division_t>&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:640:2:constexpr void std::_Tuple_impl<_Idx, _Head>::_M_assign(std::_Tuple_impl<_Idx, _UHead>&&) [with _UHead = midi::division_t; long unsigned int _Idx = 1; _Head = midi::division_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:507:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::header_t] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:125:2:) [with _Args = {std::tuple<const unsigned char*, midi::header_t>}; _Tp = std::tuple<const unsigned char*, midi::header_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:513:2:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(_UHead&&) [with _UHead = midi::midi_event_t::type_t; long unsigned int _Idx = 1; _Head = midi::midi_event_t::type_t] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:200:19:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(_UHead&&) [with _UHead = const unsigned char*&; long unsigned int _Idx = 0; _Head = const unsigned char*] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:125:2:) [with _Args = {std::tuple<const unsigned char*, midi::midi_event_t::type_t>}; _Tp = std::tuple<const unsigned char*, midi::midi_event_t::type_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:284:7:) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::midi_event_t::type_t&}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:306:7:constexpr _Tp& std::_Optional_payload_base<_Tp>::_M_get() [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t::type_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:269:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::midi_event_t::type_t&}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:272:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::midi_event_t::type_t}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:275:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::midi_event_t::type_t&}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:278:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::midi_event_t::type_t}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:632:2:constexpr void std::_Tuple_impl<_Idx, _Head>::_M_assign(const std::_Tuple_impl<_Idx, _UHead>&) [with _UHead = midi::midi_event_t::type_t; long unsigned int _Idx = 1; _Head = midi::midi_event_t::type_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:513:2:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(_UHead&&) [with _UHead = midi::midi_event_t&; long unsigned int _Idx = 1; _Head = midi::midi_event_t] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:125:2:) [with _Args = {std::tuple<const unsigned char*, midi::midi_event_t>}; _Tp = std::tuple<const unsigned char*, midi::midi_event_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:306:7:constexpr _Tp& std::_Optional_payload_base<_Tp>::_M_get() [with _Tp = std::tuple<const unsigned char*, long unsigned int>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:272:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {long unsigned int}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:278:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {long unsigned int}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:632:2:constexpr void std::_Tuple_impl<_Idx, _Head>::_M_assign(const std::_Tuple_impl<_Idx, _UHead>&) [with _UHead = long unsigned int; long unsigned int _Idx = 1; _Head = long unsigned int&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:507:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::sysex_event_t] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:125:2:) [with _Args = {std::tuple<const unsigned char*, midi::sysex_event_t>}; _Tp = std::tuple<const unsigned char*, midi::sysex_event_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:507:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::meta_event_t] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:125:2:) [with _Args = {std::tuple<const unsigned char*, midi::meta_event_t>}; _Tp = std::tuple<const unsigned char*, midi::meta_event_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:284:7:) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::midi_event_t&}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:306:7:constexpr _Tp& std::_Optional_payload_base<_Tp>::_M_get() [with _Tp = std::tuple<const unsigned char*, midi::midi_event_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:269:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::midi_event_t&}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:272:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::midi_event_t}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:275:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::midi_event_t&}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:278:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::midi_event_t}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:632:2:constexpr void std::_Tuple_impl<_Idx, _Head>::_M_assign(const std::_Tuple_impl<_Idx, _UHead>&) [with _UHead = midi::midi_event_t; long unsigned int _Idx = 1; _Head = midi::midi_event_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:507:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::event_t] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:125:2:) [with _Args = {std::tuple<const unsigned char*, midi::event_t>}; _Tp = std::tuple<const unsigned char*, midi::event_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:284:7:) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::meta_event_t&}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:306:7:constexpr _Tp& std::_Optional_payload_base<_Tp>::_M_get() [with _Tp = std::tuple<const unsigned char*, midi::meta_event_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:269:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::meta_event_t&}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:272:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::meta_event_t}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:275:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::meta_event_t&}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:278:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::meta_event_t}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:632:2:constexpr void std::_Tuple_impl<_Idx, _Head>::_M_assign(const std::_Tuple_impl<_Idx, _UHead>&) [with _UHead = midi::meta_event_t; long unsigned int _Idx = 1; _Head = midi::meta_event_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:284:7:) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::sysex_event_t&}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:306:7:constexpr _Tp& std::_Optional_payload_base<_Tp>::_M_get() [with _Tp = std::tuple<const unsigned char*, midi::sysex_event_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:269:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::sysex_event_t&}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:272:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::sysex_event_t}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:275:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::sysex_event_t&}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:278:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::sysex_event_t}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:632:2:constexpr void std::_Tuple_impl<_Idx, _Head>::_M_assign(const std::_Tuple_impl<_Idx, _UHead>&) [with _UHead = midi::sysex_event_t; long unsigned int _Idx = 1; _Head = midi::sysex_event_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:284:7:) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::event_t&}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:306:7:constexpr _Tp& std::_Optional_payload_base<_Tp>::_M_get() [with _Tp = std::tuple<const unsigned char*, midi::event_t>] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:269:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::event_t&}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:272:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::event_t}] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:275:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&; _Tail = {midi::event_t&}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:278:7:>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::event_t}] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:632:2:constexpr void std::_Tuple_impl<_Idx, _Head>::_M_assign(const std::_Tuple_impl<_Idx, _UHead>&) [with _UHead = midi::event_t; long unsigned int _Idx = 1; _Head = midi::event_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:507:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::mtrk_event_t] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:125:2:) [with _Args = {std::tuple<const unsigned char*, midi::mtrk_event_t>}; _Tp = std::tuple<const unsigned char*, midi::mtrk_event_t>] 20 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:200:19:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(_UHead&&) [with _UHead = long unsigned int&; long unsigned int _Idx = 1; _Head = long unsigned int] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:302:7:>&&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {long unsigned int}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1351:17:constexpr std::tuple<_T1, _T2>::tuple(std::tuple<_T1, _T2>&&) [with _T1 = const unsigned char*; _T2 = long unsigned int] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:213:6:) [with _Args = {std::tuple<const unsigned char*, long unsigned int>}; _Up = std::tuple<const unsigned char*, long unsigned int>; bool <anonymous> = true; _Tp = std::tuple<const unsigned char*, long unsigned int>] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:200:19:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(_UHead&&) [with _UHead = short unsigned int&; long unsigned int _Idx = 1; _Head = short unsigned int] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:213:6:) [with _Args = {const unsigned char*}; _Up = const unsigned char*; bool <anonymous> = true; _Tp = const unsigned char*] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:507:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(const _Head&) [with long unsigned int _Idx = 1; _Head = short unsigned int&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:193:17:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const _Head&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:234:7:static constexpr _Head& std::_Head_base<_Idx, _Head, false>::_M_head(std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:234:7:static constexpr _Head& std::_Head_base<_Idx, _Head, false>::_M_head(std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:497:7:static constexpr _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = short unsigned int&] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:497:7:static constexpr _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = short unsigned int] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = short unsigned int] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:193:17:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::division_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:507:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(const _Head&) [with long unsigned int _Idx = 1; _Head = long unsigned int&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:497:7:static constexpr _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = long unsigned int&] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:497:7:static constexpr _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = long unsigned int] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = long unsigned int] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:507:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::division_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:497:7:static constexpr _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = midi::division_t&] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:497:7:static constexpr _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = midi::division_t] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/bits/move.h:77:5:constexpr _Tp&& std::forward(typename remove_reference<_Functor>::type&) [with _Tp = midi::division_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:193:17:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::header_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:302:7:>&&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::header_t}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1351:17:constexpr std::tuple<_T1, _T2>::tuple(std::tuple<_T1, _T2>&&) [with _T1 = const unsigned char*; _T2 = midi::header_t] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:213:6:) [with _Args = {std::tuple<const unsigned char*, midi::header_t>}; _Up = std::tuple<const unsigned char*, midi::header_t>; bool <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::header_t>] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:200:19:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(_UHead&&) [with _UHead = midi::midi_event_t::type_t; long unsigned int _Idx = 1; _Head = midi::midi_event_t::type_t] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:302:7:>&&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::midi_event_t::type_t}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1351:17:constexpr std::tuple<_T1, _T2>::tuple(std::tuple<_T1, _T2>&&) [with _T1 = const unsigned char*; _T2 = midi::midi_event_t::type_t] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:213:6:) [with _Args = {std::tuple<const unsigned char*, midi::midi_event_t::type_t>}; _Up = std::tuple<const unsigned char*, midi::midi_event_t::type_t>; bool <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::midi_event_t::type_t>] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:507:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::midi_event_t::type_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:237:7:static constexpr const _Head& std::_Head_base<_Idx, _Head, false>::_M_head(const std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 0; _Head = const unsigned char*] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:497:7:static constexpr _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = midi::midi_event_t::type_t&] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:500:7:static constexpr const _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(const std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = midi::midi_event_t::type_t] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:200:19:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(_UHead&&) [with _UHead = midi::midi_event_t&; long unsigned int _Idx = 1; _Head = midi::midi_event_t] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:302:7:>&&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::midi_event_t}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1351:17:constexpr std::tuple<_T1, _T2>::tuple(std::tuple<_T1, _T2>&&) [with _T1 = const unsigned char*; _T2 = midi::midi_event_t] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:213:6:) [with _Args = {std::tuple<const unsigned char*, midi::midi_event_t>}; _Up = std::tuple<const unsigned char*, midi::midi_event_t>; bool <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::midi_event_t>] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:500:7:static constexpr const _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(const std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = long unsigned int] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:193:17:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::sysex_event_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:302:7:>&&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::sysex_event_t}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1351:17:constexpr std::tuple<_T1, _T2>::tuple(std::tuple<_T1, _T2>&&) [with _T1 = const unsigned char*; _T2 = midi::sysex_event_t] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:213:6:) [with _Args = {std::tuple<const unsigned char*, midi::sysex_event_t>}; _Up = std::tuple<const unsigned char*, midi::sysex_event_t>; bool <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::sysex_event_t>] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:193:17:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::meta_event_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:302:7:>&&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::meta_event_t}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1351:17:constexpr std::tuple<_T1, _T2>::tuple(std::tuple<_T1, _T2>&&) [with _T1 = const unsigned char*; _T2 = midi::meta_event_t] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:213:6:) [with _Args = {std::tuple<const unsigned char*, midi::meta_event_t>}; _Up = std::tuple<const unsigned char*, midi::meta_event_t>; bool <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::meta_event_t>] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:507:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::midi_event_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:497:7:static constexpr _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = midi::midi_event_t&] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:500:7:static constexpr const _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(const std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = midi::midi_event_t] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:193:17:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::event_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:302:7:>&&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::event_t}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1351:17:constexpr std::tuple<_T1, _T2>::tuple(std::tuple<_T1, _T2>&&) [with _T1 = const unsigned char*; _T2 = midi::event_t] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:213:6:) [with _Args = {std::tuple<const unsigned char*, midi::event_t>}; _Up = std::tuple<const unsigned char*, midi::event_t>; bool <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::event_t>] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:507:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::meta_event_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:497:7:static constexpr _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = midi::meta_event_t&] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:500:7:static constexpr const _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(const std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = midi::meta_event_t] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:507:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::sysex_event_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:497:7:static constexpr _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = midi::sysex_event_t&] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:500:7:static constexpr const _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(const std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = midi::sysex_event_t] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:507:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::event_t&] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:497:7:static constexpr _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = midi::event_t&] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:500:7:static constexpr const _Head& std::_Tuple_impl<_Idx, _Head>::_M_head(const std::_Tuple_impl<_Idx, _Head>&) [with long unsigned int _Idx = 1; _Head = midi::event_t] 4 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:193:17:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::mtrk_event_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:302:7:>&&) [with long unsigned int _Idx = 0; _Head = const unsigned char*; _Tail = {midi::mtrk_event_t}] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:1351:17:constexpr std::tuple<_T1, _T2>::tuple(std::tuple<_T1, _T2>&&) [with _T1 = const unsigned char*; _T2 = midi::mtrk_event_t] 8 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/optional:213:6:) [with _Args = {std::tuple<const unsigned char*, midi::mtrk_event_t>}; _Up = std::tuple<const unsigned char*, midi::mtrk_event_t>; bool <anonymous> = true; _Tp = std::tuple<const unsigned char*, midi::mtrk_event_t>] 12 dynamic,bounded
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:527:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head>&&) [with long unsigned int _Idx = 1; _Head = long unsigned int] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:193:17:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const _Head&) [with long unsigned int _Idx = 1; _Head = short unsigned int&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:234:7:static constexpr _Head& std::_Head_base<_Idx, _Head, false>::_M_head(std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = short unsigned int&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:234:7:static constexpr _Head& std::_Head_base<_Idx, _Head, false>::_M_head(std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = short unsigned int] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:193:17:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const _Head&) [with long unsigned int _Idx = 1; _Head = long unsigned int&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:234:7:static constexpr _Head& std::_Head_base<_Idx, _Head, false>::_M_head(std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = long unsigned int&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:234:7:static constexpr _Head& std::_Head_base<_Idx, _Head, false>::_M_head(std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = long unsigned int] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:193:17:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::division_t&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:234:7:static constexpr _Head& std::_Head_base<_Idx, _Head, false>::_M_head(std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = midi::division_t&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:234:7:static constexpr _Head& std::_Head_base<_Idx, _Head, false>::_M_head(std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = midi::division_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:527:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head>&&) [with long unsigned int _Idx = 1; _Head = midi::header_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:527:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head>&&) [with long unsigned int _Idx = 1; _Head = midi::midi_event_t::type_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:193:17:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::midi_event_t::type_t&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:234:7:static constexpr _Head& std::_Head_base<_Idx, _Head, false>::_M_head(std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = midi::midi_event_t::type_t&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:237:7:static constexpr const _Head& std::_Head_base<_Idx, _Head, false>::_M_head(const std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = midi::midi_event_t::type_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:527:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head>&&) [with long unsigned int _Idx = 1; _Head = midi::midi_event_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:237:7:static constexpr const _Head& std::_Head_base<_Idx, _Head, false>::_M_head(const std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = long unsigned int] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:527:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head>&&) [with long unsigned int _Idx = 1; _Head = midi::sysex_event_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:527:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head>&&) [with long unsigned int _Idx = 1; _Head = midi::meta_event_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:193:17:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::midi_event_t&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:234:7:static constexpr _Head& std::_Head_base<_Idx, _Head, false>::_M_head(std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = midi::midi_event_t&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:237:7:static constexpr const _Head& std::_Head_base<_Idx, _Head, false>::_M_head(const std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = midi::midi_event_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:527:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head>&&) [with long unsigned int _Idx = 1; _Head = midi::event_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:193:17:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::meta_event_t&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:234:7:static constexpr _Head& std::_Head_base<_Idx, _Head, false>::_M_head(std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = midi::meta_event_t&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:237:7:static constexpr const _Head& std::_Head_base<_Idx, _Head, false>::_M_head(const std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = midi::meta_event_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:193:17:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::sysex_event_t&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:234:7:static constexpr _Head& std::_Head_base<_Idx, _Head, false>::_M_head(std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = midi::sysex_event_t&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:237:7:static constexpr const _Head& std::_Head_base<_Idx, _Head, false>::_M_head(const std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = midi::sysex_event_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:193:17:constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(const _Head&) [with long unsigned int _Idx = 1; _Head = midi::event_t&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:234:7:static constexpr _Head& std::_Head_base<_Idx, _Head, false>::_M_head(std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = midi::event_t&] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:237:7:static constexpr const _Head& std::_Head_base<_Idx, _Head, false>::_M_head(const std::_Head_base<_Idx, _Head, false>&) [with long unsigned int _Idx = 1; _Head = midi::event_t] 0 static
|
||||||
|
/usr/local/m68k-none-elf/include/c++/13.1.0/tuple:527:7:constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head>&&) [with long unsigned int _Idx = 1; _Head = midi::mtrk_event_t] 0 static
|
22
scsp/fm.cpp
22
scsp/fm.cpp
@ -658,6 +658,15 @@ void v_blank_in_int()
|
|||||||
|
|
||||||
void init_slots()
|
void init_slots()
|
||||||
{
|
{
|
||||||
|
while ((smpc.reg.SF & 1) != 0);
|
||||||
|
smpc.reg.SF = 1;
|
||||||
|
smpc.reg.COMREG = COMREG__SNDOFF;
|
||||||
|
while (smpc.reg.OREG[31].val != OREG31__SNDOFF);
|
||||||
|
|
||||||
|
scsp.reg.ctrl.MIXER = MIXER__MEM4MB | MIXER__MVOL(0);
|
||||||
|
|
||||||
|
for (long i = 0; i < 3200; i++) { asm volatile ("nop"); } // wait for (way) more than 30µs
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The Saturn BIOS does not (un)initialize the DSP. Without zeroizing the DSP
|
The Saturn BIOS does not (un)initialize the DSP. Without zeroizing the DSP
|
||||||
program, the SCSP DSP appears to have a program that continuously writes to
|
program, the SCSP DSP appears to have a program that continuously writes to
|
||||||
@ -670,11 +679,9 @@ void init_slots()
|
|||||||
while ((smpc.reg.SF & 1) != 0);
|
while ((smpc.reg.SF & 1) != 0);
|
||||||
smpc.reg.SF = 1;
|
smpc.reg.SF = 1;
|
||||||
smpc.reg.COMREG = COMREG__SNDON;
|
smpc.reg.COMREG = COMREG__SNDON;
|
||||||
while (smpc.reg.OREG[31].val != 0b00000110);
|
while (smpc.reg.OREG[31].val != OREG31__SNDON);
|
||||||
|
|
||||||
for (long i = 0; i < 807; i++) { asm volatile ("nop"); } // wait for (way) more than 30µs
|
for (long i = 0; i < 3200; i++) { asm volatile ("nop"); } // wait for (way) more than 30µs
|
||||||
|
|
||||||
scsp.reg.ctrl.MIXER = MIXER__MEM4MB | MIXER__MVOL(0);
|
|
||||||
|
|
||||||
const uint32_t * buf = reinterpret_cast<uint32_t*>(&_sine_start);
|
const uint32_t * buf = reinterpret_cast<uint32_t*>(&_sine_start);
|
||||||
const uint32_t size = reinterpret_cast<uint32_t>(&_sine_size);
|
const uint32_t size = reinterpret_cast<uint32_t>(&_sine_size);
|
||||||
@ -683,12 +690,13 @@ void init_slots()
|
|||||||
for (int i = 0; i < 32; i++) {
|
for (int i = 0; i < 32; i++) {
|
||||||
scsp_slot& slot = scsp.reg.slot[i];
|
scsp_slot& slot = scsp.reg.slot[i];
|
||||||
// start address (bytes)
|
// start address (bytes)
|
||||||
slot.SA = SA__KYONB | SA__LPCTL__NORMAL | SA__SA(0); // kx kb sbctl[1:0] ssctl[1:0] lpctl[1:0] 8b sa[19:0]
|
slot.SA = SA__LPCTL__NORMAL | SA__SA(0); // kx kb sbctl[1:0] ssctl[1:0] lpctl[1:0] 8b sa[19:0]
|
||||||
slot.LSA = 0; // loop start address (samples)
|
slot.LSA = 0; // loop start address (samples)
|
||||||
slot.LEA = 100; // loop end address (samples)
|
slot.LEA = 100; // loop end address (samples)
|
||||||
slot.EG = EG__EGHOLD; // d2r d1r ho ar krs dl rr
|
slot.EG = EG__AR(0x1f) | EG__RR(0x1f); // d2r d1r ho ar krs dl rr
|
||||||
slot.FM = 0; // stwinh sdir tl mdl mdxsl mdysl
|
slot.FM = 0; // stwinh sdir tl mdl mdxsl mdysl
|
||||||
slot.PITCH = PITCH__OCT(0) | PITCH__FNS(0); // oct fns
|
//slot.PITCH = PITCH__OCT(-1) | PITCH__FNS(0xc2); // oct fns
|
||||||
|
slot.PITCH = 0x78c2;
|
||||||
slot.LFO = 0; // lfof plfows
|
slot.LFO = 0; // lfof plfows
|
||||||
slot.MIXER = MIXER__DISDL(0b101); // disdl dipan efsdl efpan
|
slot.MIXER = MIXER__DISDL(0b101); // disdl dipan efsdl efpan
|
||||||
}
|
}
|
||||||
|
@ -12,8 +12,8 @@
|
|||||||
#include "../common/vdp2_func.hpp"
|
#include "../common/vdp2_func.hpp"
|
||||||
#include "../common/string.hpp"
|
#include "../common/string.hpp"
|
||||||
|
|
||||||
extern void * _sine_start __asm("_binary_scsp_sine_44100_s16be_1ch_100sample_pcm_start");
|
extern void * _m68k_start __asm("_binary_m68k_midi_bin_start");
|
||||||
extern void * _sine_size __asm("_binary_scsp_sine_44100_s16be_1ch_100sample_pcm_size");
|
extern void * _m68k_size __asm("_binary_m68k_midi_bin_size");
|
||||||
|
|
||||||
extern void * _nec_bitmap_start __asm("_binary_res_nec_bitmap_bin_start");
|
extern void * _nec_bitmap_start __asm("_binary_res_nec_bitmap_bin_start");
|
||||||
|
|
||||||
@ -194,13 +194,38 @@ set_char(int32_t x, int32_t y, uint8_t palette, uint8_t c)
|
|||||||
| PATTERN_NAME_TABLE_1WORD__CHARACTER((c - 0x20));
|
| PATTERN_NAME_TABLE_1WORD__CHARACTER((c - 0x20));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int render_state = 0;
|
||||||
|
|
||||||
void render()
|
void render()
|
||||||
{
|
{
|
||||||
|
if (++render_state < 1)
|
||||||
|
return;
|
||||||
|
render_state = 0;
|
||||||
|
|
||||||
// 012345678901234
|
// 012345678901234
|
||||||
uint8_t label[] = "midi";
|
static uint8_t label[] = "midi";
|
||||||
for (uint32_t i = 0; label[i] != 0; i++) {
|
for (uint32_t i = 0; label[i] != 0; i++) {
|
||||||
set_char(0 + i, 1, 0, label[i]);
|
set_char(0 + i, 1, 0, label[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t i;
|
||||||
|
uint8_t buf[8];
|
||||||
|
static uint8_t l1[] = "evnt";
|
||||||
|
string::hex(buf, 8, scsp.ram.u32[0]);
|
||||||
|
for (i = 0; i < 4; i++) set_char(0 + i, 3, 0, l1[i]);
|
||||||
|
for (i = 0; i < 8; i++) set_char(5 + i, 3, 0, buf[i]);
|
||||||
|
static uint8_t l2[] = "s_dt";
|
||||||
|
string::hex(buf, 8, scsp.ram.u32[1]);
|
||||||
|
for (i = 0; i < 4; i++) set_char(0 + i, 4, 0, l2[i]);
|
||||||
|
for (i = 0; i < 8; i++) set_char(5 + i, 4, 0, buf[i]);
|
||||||
|
static uint8_t l3[] = "e_dt";
|
||||||
|
string::hex(buf, 8, scsp.ram.u32[2]);
|
||||||
|
for (i = 0; i < 4; i++) set_char(0 + i, 5, 0, l3[i]);
|
||||||
|
for (i = 0; i < 8; i++) set_char(5 + i, 5, 0, buf[i]);
|
||||||
|
static uint8_t l4[] = "note";
|
||||||
|
string::hex(buf, 8, scsp.ram.u32[3]);
|
||||||
|
for (i = 0; i < 4; i++) set_char(0 + i, 6, 0, l4[i]);
|
||||||
|
for (i = 0; i < 8; i++) set_char(5 + i, 6, 0, buf[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void update()
|
void update()
|
||||||
@ -216,7 +241,7 @@ void v_blank_in_int()
|
|||||||
|
|
||||||
// flip planes;
|
// flip planes;
|
||||||
vdp2.reg.MPABN0 = MPABN0__N0MPB(0) | MPABN0__N0MPA(plane_a + plane_ix);
|
vdp2.reg.MPABN0 = MPABN0__N0MPB(0) | MPABN0__N0MPA(plane_a + plane_ix);
|
||||||
plane_ix = !plane_ix;
|
//plane_ix = !plane_ix;
|
||||||
|
|
||||||
// wait at least 300us, as specified in the SMPC manual.
|
// wait at least 300us, as specified in the SMPC manual.
|
||||||
// It appears reading FRC.H is mandatory and *must* occur before FRC.L on real
|
// It appears reading FRC.H is mandatory and *must* occur before FRC.L on real
|
||||||
@ -244,7 +269,7 @@ void v_blank_in_int()
|
|||||||
render();
|
render();
|
||||||
}
|
}
|
||||||
|
|
||||||
void init_slots()
|
void init_snd_cpu()
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
The Saturn BIOS does not (un)initialize the DSP. Without zeroizing the DSP
|
The Saturn BIOS does not (un)initialize the DSP. Without zeroizing the DSP
|
||||||
@ -255,38 +280,49 @@ void init_slots()
|
|||||||
reg32 * dsp_steps = reinterpret_cast<reg32*>(&(scsp.reg.dsp.STEP[0].MPRO[0]));
|
reg32 * dsp_steps = reinterpret_cast<reg32*>(&(scsp.reg.dsp.STEP[0].MPRO[0]));
|
||||||
fill<reg32>(dsp_steps, 0, (sizeof (scsp.reg.dsp.STEP)));
|
fill<reg32>(dsp_steps, 0, (sizeof (scsp.reg.dsp.STEP)));
|
||||||
|
|
||||||
|
/* SEGA SATURN TECHNICAL BULLETIN # 51
|
||||||
|
|
||||||
|
The document suggests that Sound RAM is (somewhat) preserved
|
||||||
|
during SNDOFF.
|
||||||
|
*/
|
||||||
|
|
||||||
|
scsp.reg.ctrl.MIXER = MIXER__MEM4MB;
|
||||||
|
|
||||||
|
while ((smpc.reg.SF & 1) != 0);
|
||||||
|
smpc.reg.SF = 1;
|
||||||
|
smpc.reg.COMREG = COMREG__SNDOFF;
|
||||||
|
while (smpc.reg.OREG[31].val != OREG31__SNDOFF);
|
||||||
|
|
||||||
|
uint32_t * m68k_main_start = reinterpret_cast<uint32_t*>(&_m68k_start);
|
||||||
|
uint32_t m68k_main_size = reinterpret_cast<uint32_t>(&_m68k_size);
|
||||||
|
copy<uint32_t>(&scsp.ram.u32[0], m68k_main_start, m68k_main_size);
|
||||||
|
|
||||||
while ((smpc.reg.SF & 1) != 0);
|
while ((smpc.reg.SF & 1) != 0);
|
||||||
smpc.reg.SF = 1;
|
smpc.reg.SF = 1;
|
||||||
smpc.reg.COMREG = COMREG__SNDON;
|
smpc.reg.COMREG = COMREG__SNDON;
|
||||||
while (smpc.reg.OREG[31].val != 0b00000110);
|
while (smpc.reg.OREG[31].val != OREG31__SNDON);
|
||||||
|
|
||||||
for (long i = 0; i < 807; i++) { asm volatile ("nop"); } // wait for (way) more than 30µs
|
|
||||||
|
|
||||||
scsp.reg.ctrl.MIXER = MIXER__MEM4MB | MIXER__MVOL(0);
|
|
||||||
|
|
||||||
const uint32_t * buf = reinterpret_cast<uint32_t*>(&_sine_start);
|
|
||||||
const uint32_t size = reinterpret_cast<uint32_t>(&_sine_size);
|
|
||||||
copy<uint32_t>(&scsp.ram.u32[0], buf, size);
|
|
||||||
|
|
||||||
for (int i = 0; i < 32; i++) {
|
for (int i = 0; i < 32; i++) {
|
||||||
|
break;
|
||||||
scsp_slot& slot = scsp.reg.slot[i];
|
scsp_slot& slot = scsp.reg.slot[i];
|
||||||
// start address (bytes)
|
// start address (bytes)
|
||||||
slot.SA = SA__KYONB | SA__LPCTL__NORMAL | SA__SA(0); // kx kb sbctl[1:0] ssctl[1:0] lpctl[1:0] 8b sa[19:0]
|
slot.SA = 0; // kx kb sbctl[1:0] ssctl[1:0] lpctl[1:0] 8b sa[19:0]
|
||||||
slot.LSA = 0; // loop start address (samples)
|
slot.LSA = 0; // loop start address (samples)
|
||||||
slot.LEA = 100; // loop end address (samples)
|
slot.LEA = 0; // loop end address (samples)
|
||||||
slot.EG = EG__EGHOLD; // d2r d1r ho ar krs dl rr
|
slot.EG = EG__RR(0x1f); // d2r d1r ho ar krs dl rr
|
||||||
slot.FM = 0; // stwinh sdir tl mdl mdxsl mdysl
|
slot.FM = 0; // stwinh sdir tl mdl mdxsl mdysl
|
||||||
slot.PITCH = PITCH__OCT(0) | PITCH__FNS(0); // oct fns
|
slot.PITCH = 0; // oct fns
|
||||||
slot.LFO = 0; // lfof plfows
|
slot.LFO = 0; // lfof plfows
|
||||||
slot.MIXER = MIXER__DISDL(0b101); // disdl dipan efsdl efpan
|
slot.MIXER = 0; // disdl dipan efsdl efpan
|
||||||
}
|
}
|
||||||
|
//scsp.reg.slot[0].LOOP |= LOOP__KYONEX;
|
||||||
|
|
||||||
scsp.reg.ctrl.MIXER = MIXER__MEM4MB | MIXER__MVOL(0xf);
|
scsp.reg.ctrl.MIXER = MIXER__MEM4MB | MIXER__MVOL(0xf);
|
||||||
}
|
}
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
init_slots();
|
init_snd_cpu();
|
||||||
|
|
||||||
v_blank_in();
|
v_blank_in();
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user