1 /*--------------------------------------------------------------------------* 2 Project: Revolution Audio sound file converter 3 File: soundconv.h 4 5 Copyright (C)1998-2006 Nintendo All Rights Reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Log: soundconv.h,v $ 14 Revision 1.2 02/09/2006 06:26:26 aka 15 Changed copyright. 16 17 18 *--------------------------------------------------------------------------*/ 19 20 #ifndef __SOUNDCONV_H__ 21 #define __SOUNDCONV_H__ 22 23 #include "types.h" 24 25 26 /*--------------------------------------------------------------------------* 27 soundfil.dll exports 28 *--------------------------------------------------------------------------*/ 29 typedef struct 30 { 31 32 u32 channels; 33 u32 bitsPerSample; 34 u32 sampleRate; 35 u32 samples; 36 u32 loopStart; 37 u32 loopEnd; 38 u32 bufferLength; 39 40 } SOUNDINFO; 41 42 43 /*--------------------------------------------------------------------------* 44 dsptool.dll exports 45 *--------------------------------------------------------------------------*/ 46 typedef struct 47 { 48 // start context 49 u16 coef[16]; 50 u16 gain; 51 u16 pred_scale; 52 u16 yn1; 53 u16 yn2; 54 55 // loop context 56 u16 loop_pred_scale; 57 u16 loop_yn1; 58 u16 loop_yn2; 59 60 } ADPCMINFO; 61 62 63 /*--------------------------------------------------------------------------* 64 local defines 65 *--------------------------------------------------------------------------*/ 66 #define STATUS_SUCCESS 0 67 #define STATUS_EOF 1 68 #define STATUS_ERROR 2 69 70 #define STATE_BEGIN 0 71 #define STATE_END 1 72 73 #define SOUND_FORMAT_ADPCM 0 74 #define SOUND_FORMAT_PCM8 1 75 #define SOUND_FORMAT_PCM16 2 76 77 #define SOUND_STEREO_COMBINE 0 78 #define SOUND_STEREO_LEFT 1 79 #define SOUND_STEREO_RIGHT 2 80 81 82 #define SOUND_DATA_NO_USER_INPUT 0xFFFFFFFF 83 84 85 /*--------------------------------------------------------------------------* 86 player table format 87 *--------------------------------------------------------------------------*/ 88 89 90 typedef struct 91 { 92 93 u32 type; 94 u32 sampleRate; 95 u32 loopAddr; 96 u32 loopEndAddr; 97 u32 endAddr; 98 u32 currentAddr; 99 u32 adpcm; 100 101 } SNDCONVDATA; 102 103 #define SP_TYPE_ADPCM_ONESHOT 0 104 #define SP_TYPE_ADPCM_LOOPED 1 105 #define SP_TYPE_PCM16_ONESHOT 2 106 #define SP_TYPE_PCM16_LOOPED 3 107 #define SP_TYPE_PCM8_ONESHOT 4 108 #define SP_TYPE_PCM8_LOOPED 5 109 110 /*--------------------------------------------------------------------------* 111 function prototypes from sound.c 112 *--------------------------------------------------------------------------*/ 113 void soundSetDefaultFormat (u32 format); 114 void soundInitParams (void); 115 void soundSetSoundFile (char *ch); 116 void soundSetIdString (char *ch); 117 void soundSetSampleRate (u32 i); 118 void soundSetFormat (u32 i); 119 void soundSetLoopStart (u32 i); 120 void soundSetLoopEnd (u32 i); 121 void soundSetMix (u32 i); 122 int soundPrintSound (void); 123 124 125 /*--------------------------------------------------------------------------* 126 function prototypes from soundformat.c 127 *--------------------------------------------------------------------------*/ 128 void soundStereoCombine8Bit (s8 *dest, s8 *source, u32 samples); 129 void soundStereoCombine16Bit (s16 *dest, s16 *source, u32 samples); 130 void soundStereoLeft8Bit (s8 *dest, s8 *source, u32 samples); 131 void soundStereoLeft16Bit (s16 *dest, s16 *source, u32 samples); 132 void soundStereoRight8Bit (s8 *dest, s8 *source, u32 samples); 133 void soundStereoRight16Bit (s16 *dest, s16 *source, u32 samples); 134 void soundConvert8to16Bit (s16 *dest, s8 *source, u32 samples); 135 void soundConvert16to8Bit (s8 *dest, s16 *source, u32 samples); 136 void soundConvert16BitToAdpcm (void *, s16 *, ADPCMINFO *, u32 samples); 137 void soundConvert16BitToAdpcmLoop(void *, s16 *, ADPCMINFO *, u32 samples, u32 loopStart); 138 void soundConvert8BitToAdpcm (void *, s8 *, ADPCMINFO *, u32 samples); 139 void soundConvert8BitToAdpcmLoop(void *, s8 *, ADPCMINFO *, u32 samples, u32 loopStart); 140 141 142 /*--------------------------------------------------------------------------* 143 function prototypes from output.c 144 *--------------------------------------------------------------------------*/ 145 int soundOutputInit (char *name); 146 void soundOutputQuit (void); 147 148 void soundOutputAddEntry( 149 u32 format, 150 u32 dataBytes, 151 void *buffer, 152 u32 samples, 153 u32 sampleRate, 154 u32 loopStart, 155 u32 loopEnd, 156 ADPCMINFO *adpcminfo, 157 char *headerId 158 ); 159 160 void soundOutputComment (char *ch); 161 162 #endif // __SOUNDCONV_H__ 163