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