1 /* _______ ____ __ ___ ___
2 * \ _ \ \ / \ / \ \ / / ' ' '
3 * | | \ \ | | || | \/ | . .
4 * | | | | | | || ||\ /| |
5 * | | | | | | || || \/ | | ' ' '
6 * | | | | | | || || | | . .
7 * | |_/ / \ \__// || | |
8 * /_______/ynamic \____/niversal /__\ /____\usic /| . . ibliotheque
9 * / \
10 * / . \
11 * itmisc.c - Miscellaneous functions relating / / \ \
12 * to module files. | < / \_
13 * | \/ /\ /
14 * By entheh. \_ / > /
15 * | \ / /
16 * | ' /
17 * \__/
18 */
19
20 #include "dumb.h"
21 #include "internal/it.h"
22
23
24 int dumb_it_default_panning_separation = 25;
25
26
duh_get_it_sigdata(DUH * duh)27 DUMB_IT_SIGDATA *DUMBEXPORT duh_get_it_sigdata(DUH *duh)
28 {
29 return duh_get_raw_sigdata(duh, -1, SIGTYPE_IT);
30 }
31
32
33
dumb_it_sd_get_song_message(DUMB_IT_SIGDATA * sd)34 const unsigned char *DUMBEXPORT dumb_it_sd_get_song_message(DUMB_IT_SIGDATA *sd)
35 {
36 return sd ? sd->song_message : NULL;
37 }
38
39
40
dumb_it_sd_get_n_orders(DUMB_IT_SIGDATA * sd)41 int DUMBEXPORT dumb_it_sd_get_n_orders(DUMB_IT_SIGDATA *sd)
42 {
43 return sd ? sd->n_orders : 0;
44 }
45
46
47
dumb_it_sd_get_n_samples(DUMB_IT_SIGDATA * sd)48 int DUMBEXPORT dumb_it_sd_get_n_samples(DUMB_IT_SIGDATA *sd)
49 {
50 return sd ? sd->n_samples : 0;
51 }
52
53
54
dumb_it_sd_get_n_instruments(DUMB_IT_SIGDATA * sd)55 int DUMBEXPORT dumb_it_sd_get_n_instruments(DUMB_IT_SIGDATA *sd)
56 {
57 return sd ? sd->n_instruments : 0;
58 }
59
60
61
dumb_it_sd_get_sample_name(DUMB_IT_SIGDATA * sd,int i)62 const unsigned char *DUMBEXPORT dumb_it_sd_get_sample_name(DUMB_IT_SIGDATA *sd, int i)
63 {
64 ASSERT(sd && sd->sample && i >= 0 && i < sd->n_samples);
65 return sd->sample[i].name;
66 }
67
68
69
dumb_it_sd_get_sample_filename(DUMB_IT_SIGDATA * sd,int i)70 const unsigned char *DUMBEXPORT dumb_it_sd_get_sample_filename(DUMB_IT_SIGDATA *sd, int i)
71 {
72 ASSERT(sd && sd->sample && i >= 0 && i < sd->n_samples);
73 return sd->sample[i].filename;
74 }
75
76
77
dumb_it_sd_get_instrument_name(DUMB_IT_SIGDATA * sd,int i)78 const unsigned char *DUMBEXPORT dumb_it_sd_get_instrument_name(DUMB_IT_SIGDATA *sd, int i)
79 {
80 ASSERT(sd && sd->instrument && i >= 0 && i < sd->n_instruments);
81 return sd->instrument[i].name;
82 }
83
84
85
dumb_it_sd_get_instrument_filename(DUMB_IT_SIGDATA * sd,int i)86 const unsigned char *DUMBEXPORT dumb_it_sd_get_instrument_filename(DUMB_IT_SIGDATA *sd, int i)
87 {
88 ASSERT(sd && sd->instrument && i >= 0 && i < sd->n_instruments);
89 return sd->instrument[i].filename;
90 }
91
92
93
dumb_it_sd_get_initial_global_volume(DUMB_IT_SIGDATA * sd)94 int DUMBEXPORT dumb_it_sd_get_initial_global_volume(DUMB_IT_SIGDATA *sd)
95 {
96 return sd ? sd->global_volume : 0;
97 }
98
99
100
dumb_it_sd_set_initial_global_volume(DUMB_IT_SIGDATA * sd,int gv)101 void DUMBEXPORT dumb_it_sd_set_initial_global_volume(DUMB_IT_SIGDATA *sd, int gv)
102 {
103 if (sd) sd->global_volume = gv;
104 }
105
106
107
dumb_it_sd_get_mixing_volume(DUMB_IT_SIGDATA * sd)108 int DUMBEXPORT dumb_it_sd_get_mixing_volume(DUMB_IT_SIGDATA *sd)
109 {
110 return sd ? sd->mixing_volume : 0;
111 }
112
113
114
dumb_it_sd_set_mixing_volume(DUMB_IT_SIGDATA * sd,int mv)115 void DUMBEXPORT dumb_it_sd_set_mixing_volume(DUMB_IT_SIGDATA *sd, int mv)
116 {
117 if (sd) sd->mixing_volume = mv;
118 }
119
120
121
dumb_it_sd_get_initial_speed(DUMB_IT_SIGDATA * sd)122 int DUMBEXPORT dumb_it_sd_get_initial_speed(DUMB_IT_SIGDATA *sd)
123 {
124 return sd ? sd->speed : 0;
125 }
126
127
128
dumb_it_sd_set_initial_speed(DUMB_IT_SIGDATA * sd,int speed)129 void DUMBEXPORT dumb_it_sd_set_initial_speed(DUMB_IT_SIGDATA *sd, int speed)
130 {
131 if (sd) sd->speed = speed;
132 }
133
134
135
dumb_it_sd_get_initial_tempo(DUMB_IT_SIGDATA * sd)136 int DUMBEXPORT dumb_it_sd_get_initial_tempo(DUMB_IT_SIGDATA *sd)
137 {
138 return sd ? sd->tempo : 0;
139 }
140
141
142
dumb_it_sd_set_initial_tempo(DUMB_IT_SIGDATA * sd,int tempo)143 void DUMBEXPORT dumb_it_sd_set_initial_tempo(DUMB_IT_SIGDATA *sd, int tempo)
144 {
145 if (sd) sd->tempo = tempo;
146 }
147
148
149
dumb_it_sd_get_initial_channel_volume(DUMB_IT_SIGDATA * sd,int channel)150 int DUMBEXPORT dumb_it_sd_get_initial_channel_volume(DUMB_IT_SIGDATA *sd, int channel)
151 {
152 ASSERT(channel >= 0 && channel < DUMB_IT_N_CHANNELS);
153 return sd ? sd->channel_volume[channel] : 0;
154 }
155
dumb_it_sd_set_initial_channel_volume(DUMB_IT_SIGDATA * sd,int channel,int volume)156 void DUMBEXPORT dumb_it_sd_set_initial_channel_volume(DUMB_IT_SIGDATA *sd, int channel, int volume)
157 {
158 ASSERT(channel >= 0 && channel < DUMB_IT_N_CHANNELS);
159 if (sd) sd->channel_volume[channel] = volume;
160 }
161
162
163
dumb_it_sr_get_current_order(DUMB_IT_SIGRENDERER * sr)164 int DUMBEXPORT dumb_it_sr_get_current_order(DUMB_IT_SIGRENDERER *sr)
165 {
166 return sr ? sr->order : -1;
167 }
168
169
170
dumb_it_sr_get_current_row(DUMB_IT_SIGRENDERER * sr)171 int DUMBEXPORT dumb_it_sr_get_current_row(DUMB_IT_SIGRENDERER *sr)
172 {
173 return sr ? sr->row : -1;
174 }
175
176
177
dumb_it_sr_get_global_volume(DUMB_IT_SIGRENDERER * sr)178 int DUMBEXPORT dumb_it_sr_get_global_volume(DUMB_IT_SIGRENDERER *sr)
179 {
180 return sr ? sr->globalvolume : 0;
181 }
182
183
184
dumb_it_sr_set_global_volume(DUMB_IT_SIGRENDERER * sr,int gv)185 void DUMBEXPORT dumb_it_sr_set_global_volume(DUMB_IT_SIGRENDERER *sr, int gv)
186 {
187 if (sr) sr->globalvolume = gv;
188 }
189
190
191
dumb_it_sr_get_tempo(DUMB_IT_SIGRENDERER * sr)192 int DUMBEXPORT dumb_it_sr_get_tempo(DUMB_IT_SIGRENDERER *sr)
193 {
194 return sr ? sr->tempo : 0;
195 }
196
197
198
dumb_it_sr_set_tempo(DUMB_IT_SIGRENDERER * sr,int tempo)199 void DUMBEXPORT dumb_it_sr_set_tempo(DUMB_IT_SIGRENDERER *sr, int tempo)
200 {
201 if (sr) sr->tempo = tempo;
202 }
203
204
205
dumb_it_sr_get_speed(DUMB_IT_SIGRENDERER * sr)206 int DUMBEXPORT dumb_it_sr_get_speed(DUMB_IT_SIGRENDERER *sr)
207 {
208 return sr ? sr->speed : 0;
209 }
210
211
212
dumb_it_sr_set_speed(DUMB_IT_SIGRENDERER * sr,int speed)213 void DUMBEXPORT dumb_it_sr_set_speed(DUMB_IT_SIGRENDERER *sr, int speed)
214 {
215 if (sr) sr->speed = speed;
216 }
217
218
219
dumb_it_sr_get_channel_volume(DUMB_IT_SIGRENDERER * sr,int channel)220 int DUMBEXPORT dumb_it_sr_get_channel_volume(DUMB_IT_SIGRENDERER *sr, int channel)
221 {
222 return sr ? sr->channel[channel].channelvolume : 0;
223 }
224
225
226
dumb_it_sr_set_channel_volume(DUMB_IT_SIGRENDERER * sr,int channel,int volume)227 void DUMBEXPORT dumb_it_sr_set_channel_volume(DUMB_IT_SIGRENDERER *sr, int channel, int volume)
228 {
229 if (sr) sr->channel[channel].channelvolume = volume;
230 }
231
232
233
dumb_it_sr_set_channel_muted(DUMB_IT_SIGRENDERER * sr,int channel,int muted)234 void DUMBEXPORT dumb_it_sr_set_channel_muted(DUMB_IT_SIGRENDERER *sr, int channel, int muted)
235 {
236 if (sr) {
237 if (muted)
238 sr->channel[channel].flags |= IT_CHANNEL_MUTED;
239 else
240 sr->channel[channel].flags &= ~IT_CHANNEL_MUTED;
241 }
242 }
243
244
245
dumb_it_sr_get_channel_muted(DUMB_IT_SIGRENDERER * sr,int channel)246 int DUMBEXPORT dumb_it_sr_get_channel_muted(DUMB_IT_SIGRENDERER *sr, int channel)
247 {
248 return sr ? (sr->channel[channel].flags & IT_CHANNEL_MUTED) != 0 : 0;
249 }
250