forked from bcserv/soundlib
/
soundlib.inc
257 lines (230 loc) · 6.6 KB
/
soundlib.inc
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
68
69
70
71
72
73
74
75
76
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
#if defined _soundlib_included
#endinput
#endif
#define _soundlib_included
/**
* Do not edit below this line!
*/
public Extension:__ext_soundlib =
{
name = "Sound Info Library",
file = "soundlib.ext",
#if defined AUTOLOAD_EXTENSIONS
autoload = 1,
#else
autoload = 0,
#endif
#if defined REQUIRE_EXTENSIONS
required = 1
#else
required = 0
#endif
};
/**
* Opens a sound file.
*
* @note Sound files are closed with CloseHandle().
*
* @param file File to open
* @param relativeToSound If true, it is relative to the sound directory, otherwise you have to build the path yourself
* @return A Handle to the sound file, INVALID_HANDLE on open error.
*/
native Handle:OpenSoundFile(const String:file[], bool:relativeToSound = true);
/**
* Gets the length of the sound file in seconds
*
* @param hndl Handle to the sound file
* @return The song length in seconds
*/
native GetSoundLength(Handle:hndl);
/**
* Gets the length of the sound file in seconds as float.
* Note: this probably won't work with some VBR encoded mp3's
*
* @param hndl Handle to the sound file
* @return The song length in seconds as float
*/
native Float:GetSoundLengthFloat(Handle:hndl);
/**
* Get the Bit rate of sound (kbps)
*
* @param hndl Handle to the sound file
* @return Sound bitrate (cell)
*/
native GetSoundBitRate(Handle:hndl);
/**
* Get the Sampling rate of sound (hz)
*
* @param hndl Handle to the sound file
* @return Sampling rate (cell)
*/
native GetSoundSamplingRate(Handle:hndl);
/**
* Get the Artist of the sound
*
* @param hndl Handle to the sound file
* @param buffer Buffer to use for storing the string.
* @param maxlength Maximum length of the buffer.
* @return Length of string written to buffer.
*/
native GetSoundArtist(Handle:hndl, String:buffer[], maxlength);
/**
* Get the Track title of sound
*
* @param hndl Handle to the sound file
* @param buffer Buffer to use for storing the string.
* @param maxlength Maximum length of the buffer.
* @return Length of string written to buffer.
*/
native GetSoundTitle(Handle:hndl, String:buffer[], maxlength);
/**
* Get the Track number of the sound
*
* @param hndl Handle to the sound file
* @return Sound number (cell)
*/
native GetSoundNum(Handle:hndl);
/**
* Get the Album of the sound
*
* @param hndl Handle to the sound file
* @param buffer Buffer to use for storing the string.
* @param maxlength Maximum length of the buffer.
* @return Length of string written to buffer.
*/
native GetSoundAlbum(Handle:hndl, String:buffer[], maxlength);
/**
* Get the Year of sound
*
* @param hndl Handle to the sound file
* @return Sound year (cell)
*/
native GetSoundYear(Handle:hndl);
/**
* Get the Comment of the sound
*
* @param hndl Handle to the sound file
* @param buffer Buffer to use for storing the string.
* @param maxlength Maximum length of the buffer.
* @return Length of string written to buffer.
*/
native GetSoundComment(Handle:hndl, String:buffer[], maxlength);
/**
* Get the Genre of the sound
*
* @param hndl Handle to the sound file
* @param buffer Buffer to use for storing the string.
* @param maxlength Maximum length of the buffer.
* @return Length of string written to buffer.
*/
native GetSoundGenre(Handle:hndl, String:buffer[], maxlength);
#if (SOURCEMOD_V_MINOR >= 7)
methodmap SoundFile < Handle
{
/**
* Opens a sound file.
*
* @note Sound files are closed with CloseHandle().
*
* @param file File to open
* @param relativeToSound If true, it is relative to the sound directory, otherwise you have to build the path yourself
* @return A Handle to the sound file, null on open error.
*/
public native SoundFile(const char[] file, bool relativeToSound = true);
/**
* Gets the length of the sound file in seconds
*
* @return The song length in seconds
*/
property int Length
{
public native get();
}
/**
* Gets the length of the sound file in seconds as float.
* Note: this probably won't work with some VBR encoded mp3's
*
* @return The song length in seconds as float
*/
property float LengthFloat
{
public native get();
}
/**
* Get the Bit rate of sound (kbps)
*
* @return Sound bitrate (cell)
*/
property int BitRate
{
public native get();
}
/**
* Get the Sampling rate of sound (hz)
*
* @return Sampling rate (cell)
*/
property int SamplingRate
{
public native get();
}
/**
* Get the Artist of the sound
*
* @param buffer Buffer to use for storing the string.
* @param maxlength Maximum length of the buffer.
* @return Length of string written to buffer.
*/
public native int GetArtist(char[] buffer, int maxlength);
/**
* Get the Track title of sound
*
* @param buffer Buffer to use for storing the string.
* @param maxlength Maximum length of the buffer.
* @return Length of string written to buffer.
*/
public native int GetTitle(char[] buffer, int maxlength);
/**
* Get the Track number of the sound
*
* @return Sound number (cell)
*/
property int Number
{
public native get();
}
/**
* Get the Album of the sound
*
* @param buffer Buffer to use for storing the string.
* @param maxlength Maximum length of the buffer.
* @return Length of string written to buffer.
*/
public native int GetAlbum(char[] buffer, int maxlength);
/**
* Get the Year of sound
*
* @return Sound year (cell)
*/
property int Year
{
public native get();
}
/**
* Get the Comment of the sound
*
* @param buffer Buffer to use for storing the string.
* @param maxlength Maximum length of the buffer.
* @return Length of string written to buffer.
*/
public native int GetComment(char[] buffer, int maxlength);
/**
* Get the Genre of the sound
*
* @param buffer Buffer to use for storing the string.
* @param maxlength Maximum length of the buffer.
* @return Length of string written to buffer.
*/
public native int GetGenre(char[] buffer, int maxlength);
};
#endif // (SOURCEMOD_V_MINOR >= 7)