diff src/Input/timidity/libtimidity/timidity.h @ 0:13389e613d67 trunk

[svn] - initial import of audacious-plugins tree (lots to do)
author nenolod
date Mon, 18 Sep 2006 01:11:49 -0700
parents
children 088092a52fea
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Input/timidity/libtimidity/timidity.h	Mon Sep 18 01:11:49 2006 -0700
@@ -0,0 +1,206 @@
+/*
+
+    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 "libaudacious/vfs.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 (VFSFile *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 */