OSDN Git Service

5b75f87e8307fb81e4cf8ae6853e0b98e0e880c0
[playumidi/playumidi.git] / src / midievent.c
1 /*MIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDI
2
3                            P L A Y U M I D I
4                   (/dev/umixiX.Y Direct MIDI Player)
5
6    Copyright(C) 2014 Koine Yuusuke(koinec). All rights reserved.
7
8 Redistribution and use in source and binary forms, with or without
9 modification, are permitted provided that the following conditions are met:
10
11  1. Redistributions of source code must retain the above copyright notice,
12     this list of conditions and the following disclaimer.
13  2. Redistributions in binary form must reproduce the above copyright
14     notice, this list of conditions and the following disclaimer in the
15     documentation and/or other materials provided with the distribution.
16
17 THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
18 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
21 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
27 OF THE POSSIBILITY OF SUCH DAMAGE.
28
29 MIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDIMIDI*/
30
31
32 #define PLAYUMIDI_SRC_MIDIEVENT
33
34 #include<stdio.h>
35 #include<stdlib.h>
36 #include<string.h>
37 #include"playumidi.h"
38
39 MidiEventInfo   *gp_event               = NULL;
40 Byte                    *gpb_vardata    = NULL;
41
42 Word                    guw_division;
43 DWord                   gdw_max_events;
44
45
46 /* ===================================================================*/
47 EXTERN_FUNC_MIDIEVENT   int
48     MidiEvent_GetMidiInfo(
49             MidiInfo    *p_midi )    {
50
51         p_midi->uw_division                             = guw_division;
52         p_midi->dw_max_events                   = gdw_max_events;
53         p_midi->p_event                                 = gp_event;
54         p_midi->pb_vardata                              = gpb_vardata;
55         
56         return  0x00;
57 }
58
59
60 /* ===================================================================*/
61 EXTERN_FUNC_MIDIEVENT   void 
62     MidiEvent_SetMidiDivision(
63             Word        uw_division )    {
64         
65         guw_division    = uw_division;
66
67     return;
68 }
69
70
71 /* ===================================================================*/
72 EXTERN_FUNC_MIDIEVENT   DWord 
73     MidiEvent_GetMidiEvents(
74             void )    {
75         
76         return  gdw_max_events;
77 }
78
79
80 /* ===================================================================*/
81 EXTERN_FUNC_MIDIEVENT   MidiEventInfo *
82     MidiEvent_GetMidiEventPointer(
83             void )    {
84
85     return gp_event;
86 }
87
88
89 /* ===================================================================*/
90 EXTERN_FUNC_MIDIEVENT   Byte *
91     MidiEvent_GetVarDataPointer(
92             void )    {
93
94     return gpb_vardata;
95 }
96
97
98 /* ===================================================================*/
99 EXTERN_FUNC_MIDIEVENT   int
100         MidiEvent_AllocMidiVarData(
101                         DWord   dw_size )       {
102
103         if( NULL != gpb_vardata )       { return -0x01; }
104
105         gpb_vardata = (Byte *)malloc( dw_size );
106         if( NULL == gpb_vardata )       { return -0x02; }
107
108         memset( gpb_vardata, 0x00, dw_size );
109         
110         return 0x00;
111 }
112
113
114 /* ===================================================================*/
115 EXTERN_FUNC_MIDIEVENT int
116         MidiEvent_FreeMidiVarData(
117                         void )  {
118
119         if( NULL != gp_event )  {
120                 free( gp_event );
121                 gp_event        = NULL;
122         }
123
124         return 0x00;
125 }
126
127
128 /* ===================================================================*/
129 EXTERN_FUNC_MIDIEVENT int
130         MidiEvent_AllocMidiEventInfo(
131                         DWord   dw_events )     {
132
133         size_t  sz_size;
134
135         sz_size         = sizeof(MidiEventInfo) * dw_events;
136         
137         if( NULL != gp_event )  { return -0x01; }
138
139         gp_event        = (MidiEventInfo *)malloc( sz_size );
140         if( NULL == gp_event )  { return -0x02; }
141
142         memset( gp_event, 0x00, sz_size );
143         gdw_max_events  = dw_events;
144
145         return 0x00;
146 }
147
148
149 /* ===================================================================*/
150 EXTERN_FUNC_MIDIEVENT int
151         MidiEvent_FreeMidiEvnetInfo(
152                         void )  {
153
154         if( NULL != gp_event )  {
155                 free( gp_event );
156                 gp_event        = NULL;
157         }
158
159         return 0x00;
160 }
161
162
163 /* EOF of midievent.c *************************************************/
164