libopenmpt  0.4.10+release
cross-platform C++ and C library to decode tracked music files
libopenmpt_ext.h
Go to the documentation of this file.
1 /*
2  * libopenmpt_ext.h
3  * ----------------
4  * Purpose: libopenmpt public c interface for libopenmpt extensions
5  * Notes :
6  * Authors: OpenMPT Devs
7  * The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
8  */
9 
10 #ifndef LIBOPENMPT_EXT_H
11 #define LIBOPENMPT_EXT_H
12 
13 #include "libopenmpt_config.h"
14 #include "libopenmpt.h"
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
40 
58 LIBOPENMPT_API openmpt_module_ext * openmpt_module_ext_create( openmpt_stream_callbacks stream_callbacks, void * stream, openmpt_log_func logfunc, void * loguser, openmpt_error_func errfunc, void * erruser, int * error, const char * * error_message, const openmpt_module_initial_ctl * ctls );
59 
76 LIBOPENMPT_API openmpt_module_ext * openmpt_module_ext_create_from_memory( const void * filedata, size_t filesize, openmpt_log_func logfunc, void * loguser, openmpt_error_func errfunc, void * erruser, int * error, const char * * error_message, const openmpt_module_initial_ctl * ctls );
77 
82 LIBOPENMPT_API void openmpt_module_ext_destroy( openmpt_module_ext * mod_ext );
83 
91 
101 LIBOPENMPT_API int openmpt_module_ext_get_interface( openmpt_module_ext * mod_ext, const char * interface_id, void * interface, size_t interface_size );
102 
103 
104 
105 #ifndef LIBOPENMPT_EXT_C_INTERFACE_PATTERN_VIS
106 #define LIBOPENMPT_EXT_C_INTERFACE_PATTERN_VIS "pattern_vis"
107 #endif
108 
110 #define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_UNKNOWN 0
111 #define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_GENERAL 1
112 #define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_GLOBAL 2
113 #define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_VOLUME 3
114 #define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_PANNING 4
115 #define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_PITCH 5
116 
127  int ( * get_pattern_row_channel_volume_effect_type ) ( openmpt_module_ext * mod_ext, int32_t pattern, int32_t row, int32_t channel );
128 
138  int ( * get_pattern_row_channel_effect_type ) ( openmpt_module_ext * mod_ext, int32_t pattern, int32_t row, int32_t channel );
140 
141 
142 
143 #ifndef LIBOPENMPT_EXT_C_INTERFACE_INTERACTIVE
144 #define LIBOPENMPT_EXT_C_INTERFACE_INTERACTIVE "interactive"
145 #endif
146 
156  int ( * set_current_speed ) ( openmpt_module_ext * mod_ext, int32_t speed );
157 
166  int ( * set_current_tempo ) ( openmpt_module_ext * mod_ext, int32_t tempo );
167 
176  int ( * set_tempo_factor ) ( openmpt_module_ext * mod_ext, double factor );
177 
184  double ( * get_tempo_factor ) ( openmpt_module_ext * mod_ext );
185 
195  int ( * set_pitch_factor ) ( openmpt_module_ext * mod_ext, double factor );
196 
203  double ( * get_pitch_factor ) ( openmpt_module_ext * mod_ext );
204 
213  int ( * set_global_volume ) ( openmpt_module_ext * mod_ext, double volume );
214 
221  double ( * get_global_volume ) ( openmpt_module_ext * mod_ext );
222 
232  int ( * set_channel_volume ) ( openmpt_module_ext * mod_ext, int32_t channel, double volume );
233 
241  double ( * get_channel_volume ) ( openmpt_module_ext * mod_ext, int32_t channel );
242 
251  int ( * set_channel_mute_status ) ( openmpt_module_ext * mod_ext, int32_t channel, int mute );
252 
260  int ( * get_channel_mute_status ) ( openmpt_module_ext * mod_ext, int32_t channel );
261 
270  int ( * set_instrument_mute_status ) ( openmpt_module_ext * mod_ext, int32_t instrument, int mute );
271 
279  int ( * get_instrument_mute_status ) ( openmpt_module_ext * mod_ext, int32_t instrument );
280 
291  int32_t ( * play_note ) ( openmpt_module_ext * mod_ext, int32_t instrument, int32_t note, double volume, double panning );
292 
300  int ( * stop_note ) ( openmpt_module_ext * mod_ext, int32_t channel );
302 
303 
304 
305 /* add stuff here */
306 
307 
308 
309 #ifdef __cplusplus
310 }
311 #endif
312 
317 #endif /* LIBOPENMPT_EXT_H */
318 
int(* get_pattern_row_channel_volume_effect_type)(openmpt_module_ext *mod_ext, int32_t pattern, int32_t row, int32_t channel)
Definition: libopenmpt_ext.h:127
openmpt_module_ext * openmpt_module_ext_create(openmpt_stream_callbacks stream_callbacks, void *stream, openmpt_log_func logfunc, void *loguser, openmpt_error_func errfunc, void *erruser, int *error, const char **error_message, const openmpt_module_initial_ctl *ctls)
Construct an openmpt_module_ext.
int(* get_pattern_row_channel_effect_type)(openmpt_module_ext *mod_ext, int32_t pattern, int32_t row, int32_t channel)
Definition: libopenmpt_ext.h:138
int(* openmpt_error_func)(int error, void *user)
Error function.
Definition: libopenmpt.h:435
struct openmpt_module_ext_interface_pattern_vis openmpt_module_ext_interface_pattern_vis
void openmpt_module_ext_destroy(openmpt_module_ext *mod_ext)
Unload a previously created openmpt_module_ext from memory.
void(* openmpt_log_func)(const char *message, void *user)
Logging function.
Definition: libopenmpt.h:329
struct openmpt_module openmpt_module
Opaque type representing a libopenmpt module.
Definition: libopenmpt.h:660
int openmpt_module_ext_get_interface(openmpt_module_ext *mod_ext, const char *interface_id, void *interface, size_t interface_size)
Stream callbacks.
Definition: libopenmpt.h:300
Definition: libopenmpt_ext.h:117
openmpt_module * openmpt_module_ext_get_module(openmpt_module_ext *mod_ext)
Retrieve the openmpt_module handle from an openmpt_module_ext handle.
Definition: libopenmpt_ext.h:147
Definition: libopenmpt.h:662
struct openmpt_module_ext_interface_interactive openmpt_module_ext_interface_interactive
openmpt_module_ext * openmpt_module_ext_create_from_memory(const void *filedata, size_t filesize, openmpt_log_func logfunc, void *loguser, openmpt_error_func errfunc, void *erruser, int *error, const char **error_message, const openmpt_module_initial_ctl *ctls)
Construct an openmpt_module_ext.
struct openmpt_module_ext openmpt_module_ext
Opaque type representing a libopenmpt extension module.
Definition: libopenmpt_ext.h:39