Mercurial > audlegacy
view Plugins/Input/timidity/libtimidity/timidity.h @ 352:f13ab2d8e9cf trunk
[svn] various fixes :(
author | nenolod |
---|---|
date | Mon, 26 Dec 2005 14:12:35 -0800 |
parents | d1762728ea4b |
children | c1dfb4b13be8 |
line wrap: on
line source
/* libTiMidity -- MIDI to WAVE converter library Copyright (C) 1995 Tuukka Toivonen <toivonen@clinet.fi> Copyright (C) 2004 Konstantin Korikov <lostclus@ua.fm> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef TIMIDITY_H #define TIMIDITY_H #include <stdio.h> #include <stdlib.h> #ifdef __cplusplus extern "C" { #endif #define LIBTIMIDITY_VERSION_MAJOR 0L #define LIBTIMIDITY_VERSION_MINOR 1L #define LIBTIMIDITY_PATCHLEVEL 0L #define LIBTIMIDITY_VERSION \ ((LIBTIMIDITY_VERSION_MAJOR<<16)| \ (LIBTIMIDITY_VERSION_MINOR<< 8)| \ (LIBTIMIDITY_PATCHLEVEL)) /* Audio format flags (defaults to LSB byte order) */ #define MID_AUDIO_U8 0x0008 /* Unsigned 8-bit samples */ #define MID_AUDIO_S8 0x8008 /* Signed 8-bit samples */ #define MID_AUDIO_U16LSB 0x0010 /* Unsigned 16-bit samples */ #define MID_AUDIO_S16LSB 0x8010 /* Signed 16-bit samples */ #define MID_AUDIO_U16MSB 0x1010 /* As above, but big-endian byte order */ #define MID_AUDIO_S16MSB 0x9010 /* As above, but big-endian byte order */ #define MID_AUDIO_U16 MID_AUDIO_U16LSB #define MID_AUDIO_S16 MID_AUDIO_S16LSB /* Core Library Types */ typedef unsigned char uint8; typedef signed char sint8; typedef unsigned short uint16; typedef signed short sint16; typedef unsigned int uint32; typedef signed int sint32; typedef size_t (*MidIStreamReadFunc) (void *ctx, void *ptr, size_t size, size_t nmemb); typedef int (*MidIStreamCloseFunc) (void *ctx); typedef struct _MidIStream MidIStream; typedef struct _MidDLSPatches MidDLSPatches; typedef struct _MidSong MidSong; typedef struct _MidSongOptions MidSongOptions; struct _MidSongOptions { sint32 rate; /* DSP frequency -- samples per second */ uint16 format; /* Audio data format */ uint8 channels; /* Number of channels: 1 mono, 2 stereo */ uint16 buffer_size; /* Sample buffer size in samples */ }; typedef enum { MID_SONG_TEXT = 0, MID_SONG_COPYRIGHT = 1 } MidSongMetaId; /* Core Library Functions * ====================== */ /* Initialize the library. If config_file is NULL * search for configuratin file in default directories */ extern int mid_init (char *config_file); /* Initialize the library without reading any * configuratin file */ extern int mid_init_no_config (void); /* Shutdown the library */ extern void mid_exit (void); /* Input Stream Functions * ====================== */ /* Create input stream from a file name */ extern MidIStream *mid_istream_open_file (const char *file); /* Create input stream from a file pointer */ extern MidIStream *mid_istream_open_fp (FILE * fp, int autoclose); /* Create input stream from memory */ extern MidIStream *mid_istream_open_mem (void *mem, size_t size, int autofree); /* Create custom input stream */ extern MidIStream *mid_istream_open_callbacks (MidIStreamReadFunc read, MidIStreamCloseFunc close, void *context); /* Read data from input stream */ extern size_t mid_istream_read (MidIStream * stream, void *ptr, size_t size, size_t nmemb); /* Skip data from input stream */ extern void mid_istream_skip (MidIStream * stream, size_t len); /* Close and destroy input stream */ extern int mid_istream_close (MidIStream * stream); /* DLS Pathes Functions * ==================== */ /* Load DLS patches */ extern MidDLSPatches *mid_dlspatches_load (MidIStream * stream); /* Destroy DLS patches */ extern void mid_dlspatches_free (MidDLSPatches * patches); /* MIDI Song Functions * =================== */ /* Load MIDI song */ extern MidSong *mid_song_load (MidIStream * stream, MidSongOptions * options); /* Load MIDI song with specified DLS pathes */ extern MidSong *mid_song_load_dls (MidIStream * stream, MidDLSPatches * patches, MidSongOptions * options); /* Set song amplification value */ extern void mid_song_set_volume (MidSong * song, int volume); /* Seek song to the start position and initialize conversion */ extern void mid_song_start (MidSong * song); /* Read WAVE data */ extern size_t mid_song_read_wave (MidSong * song, void *ptr, size_t size); /* Seek song to specified offset in millseconds */ extern void mid_song_seek (MidSong * song, uint32 ms); /* Get total song time in millseconds */ extern uint32 mid_song_get_total_time (MidSong * song); /* Get current song time in millseconds */ extern uint32 mid_song_get_time (MidSong * song); /* Get song meta data. Return NULL if no meta data found */ extern char *mid_song_get_meta (MidSong * song, MidSongMetaId what); /* Destroy song */ extern void mid_song_free (MidSong * song); #ifdef __cplusplus } #endif #endif /* TIMIDITY_H */