Skip to content

Latest commit

 

History

History
114 lines (95 loc) · 2.8 KB

music_nativemidi.c

File metadata and controls

114 lines (95 loc) · 2.8 KB
 
1
2
/*
SDL_mixer: An audio mixer library based on the SDL library
Jan 5, 2019
Jan 5, 2019
3
Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
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
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#ifdef MUSIC_MID_NATIVE
/* This file supports playing MIDI files with OS APIs */
#include "music_nativemidi.h"
#include "native_midi/native_midi.h"
static void *NATIVEMIDI_CreateFromRW(SDL_RWops *src, int freesrc)
{
NativeMidiSong *music = native_midi_loadsong_RW(src, freesrc);
if (!music) {
Mix_SetError("%s", native_midi_error());
}
return music;
}
Oct 21, 2017
Oct 21, 2017
39
static int NATIVEMIDI_Play(void *context, int play_count)
40
41
{
NativeMidiSong *music = (NativeMidiSong *)context;
Oct 21, 2017
Oct 21, 2017
42
43
44
45
46
int loops = play_count;
if (loops > 0) {
--loops;
}
native_midi_start(music, loops);
47
48
49
50
51
return 0;
}
static void NATIVEMIDI_SetVolume(void *context, int volume)
{
Nov 18, 2019
Nov 18, 2019
52
(void)context;
53
54
55
56
57
native_midi_setvolume(volume);
}
static SDL_bool NATIVEMIDI_IsPlaying(void *context)
{
Nov 18, 2019
Nov 18, 2019
58
(void)context;
59
60
61
return native_midi_active() ? SDL_TRUE : SDL_FALSE;
}
Oct 18, 2017
Oct 18, 2017
62
63
static void NATIVEMIDI_Pause(void *context)
{
Nov 18, 2019
Nov 18, 2019
64
(void)context;
Oct 18, 2017
Oct 18, 2017
65
66
67
68
69
native_midi_pause();
}
static void NATIVEMIDI_Resume(void *context)
{
Nov 18, 2019
Nov 18, 2019
70
(void)context;
Oct 18, 2017
Oct 18, 2017
71
72
73
native_midi_resume();
}
74
75
static void NATIVEMIDI_Stop(void *context)
{
Nov 18, 2019
Nov 18, 2019
76
(void)context;
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
native_midi_stop();
}
static void NATIVEMIDI_Delete(void *context)
{
NativeMidiSong *music = (NativeMidiSong *)context;
native_midi_freesong(music);
}
Mix_MusicInterface Mix_MusicInterface_NATIVEMIDI =
{
"NATIVEMIDI",
MIX_MUSIC_NATIVEMIDI,
MUS_MID,
SDL_FALSE,
SDL_FALSE,
NULL, /* Load */
NULL, /* Open */
NATIVEMIDI_CreateFromRW,
NULL, /* CreateFromFile */
NATIVEMIDI_SetVolume,
NATIVEMIDI_Play,
NATIVEMIDI_IsPlaying,
NULL, /* GetAudio */
NULL, /* Seek */
Dec 17, 2019
Dec 17, 2019
103
NULL, /* Duration */
Oct 18, 2017
Oct 18, 2017
104
105
NATIVEMIDI_Pause,
NATIVEMIDI_Resume,
106
107
108
NATIVEMIDI_Stop,
NATIVEMIDI_Delete,
NULL, /* Close */
Nov 26, 2019
Nov 26, 2019
109
NULL /* Unload */
110
111
112
113
114
};
#endif /* MUSIC_MID_NATIVE */
/* vi: set ts=4 sw=4 expandtab: */