-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmidi_processor.h
More file actions
67 lines (51 loc) · 3.41 KB
/
midi_processor.h
File metadata and controls
67 lines (51 loc) · 3.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#ifndef _MIDI_PROCESSORS_H_
#define _MIDI_PROCESSORS_H_
#include "midi_container.h"
#ifndef _countof
template <typename T, size_t N>
char ( &_ArraySizeHelper( T (&array)[N] ))[N];
#define _countof( array ) (sizeof( _ArraySizeHelper( array ) ))
#endif
class midi_processor
{
static const uint8_t end_of_track[2];
static const uint8_t loop_start[11];
static const uint8_t loop_end[9];
static const uint8_t hmp_default_tempo[5];
static const uint8_t xmi_default_tempo[5];
static const uint8_t mus_default_tempo[5];
static const uint8_t mus_controllers[15];
static const uint8_t lds_default_tempo[5];
static int decode_delta( std::vector<uint8_t>::const_iterator & it, std::vector<uint8_t>::const_iterator end );
static unsigned decode_hmp_delta( std::vector<uint8_t>::const_iterator & it, std::vector<uint8_t>::const_iterator end );
static unsigned decode_xmi_delta( std::vector<uint8_t>::const_iterator & it, std::vector<uint8_t>::const_iterator end );
static bool is_standard_midi( std::vector<uint8_t> const& p_file );
static bool is_riff_midi( std::vector<uint8_t> const& p_file );
static bool is_hmp( std::vector<uint8_t> const& p_file );
static bool is_hmi( std::vector<uint8_t> const& p_file );
static bool is_xmi( std::vector<uint8_t> const& p_file );
static bool is_mus( std::vector<uint8_t> const& p_file );
static bool is_mids( std::vector<uint8_t> const& p_file );
static bool is_lds( std::vector<uint8_t> const& p_file, const char * p_extension );
static bool is_gmf( std::vector<uint8_t> const& p_file );
static bool is_syx( std::vector<uint8_t> const& p_file );
static void process_standard_midi_track( std::vector<uint8_t>::const_iterator & it, std::vector<uint8_t>::const_iterator end, midi_container & p_out, bool is_gmf );
static bool process_standard_midi( std::vector<uint8_t> const& p_file, midi_container & p_out );
static bool process_riff_midi( std::vector<uint8_t> const& p_file, midi_container & p_out );
static bool process_hmp( std::vector<uint8_t> const& p_file, midi_container & p_out );
static bool process_hmi( std::vector<uint8_t> const& p_file, midi_container & p_out );
static bool process_xmi( std::vector<uint8_t> const& p_file, midi_container & p_out );
static bool process_mus( std::vector<uint8_t> const& p_file, midi_container & p_out );
static bool process_mids( std::vector<uint8_t> const& p_file, midi_container & p_out );
static bool process_lds( std::vector<uint8_t> const& p_file, midi_container & p_out );
static bool process_gmf( std::vector<uint8_t> const& p_file, midi_container & p_out );
static bool process_syx( std::vector<uint8_t> const& p_file, midi_container & p_out );
static bool process_standard_midi_count( std::vector<uint8_t> const& p_file, size_t & track_count );
static bool process_riff_midi_count( std::vector<uint8_t> const& p_file, size_t & track_count );
static bool process_xmi_count( std::vector<uint8_t> const& p_file, size_t & track_count );
public:
static bool process_track_count( std::vector<uint8_t> const& p_file, const char * p_extension, size_t & track_count );
static bool process_file( std::vector<uint8_t> const& p_file, const char * p_extension, midi_container & p_out );
static bool process_syx_file( std::vector<uint8_t> const& p_file, midi_container & p_out );
};
#endif