1 /*************************************************************************** 2 * * 3 * LinuxSampler - modular, streaming capable sampler * 4 * * 5 * Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck * 6 * Copyright (C) 2005 - 2012 Christian Schoenebeck * 7 * * 8 * This program is free software; you can redistribute it and/or modify * 9 * it under the terms of the GNU General Public License as published by * 10 * the Free Software Foundation; either version 2 of the License, or * 11 * (at your option) any later version. * 12 * * 13 * This program is distributed in the hope that it will be useful, * 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 16 * GNU General Public License for more details. * 17 * * 18 * You should have received a copy of the GNU General Public License * 19 * along with this program; if not, write to the Free Software * 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * 21 * MA 02111-1307 USA * 22 ***************************************************************************/ 23 24 #include <unistd.h> 25 #include <stdlib.h> 26 #include <stdio.h> 27 28 #include "Synthesizer.h" 29 30 #define SYNTHESIZE(CHAN,LOOP,FILTER,INTERPOLATE,BITDEPTH24) \ 31 Synthesizer<CHAN,LOOP,FILTER,INTERPOLATE,BITDEPTH24>::SynthesizeSubFragment( \ 32 pFinalParam, pLoop) 33 34 namespace LinuxSampler { namespace gig { 35 SynthesizeFragment_mode00(SynthesisParam * pFinalParam,Loop * pLoop)36 void SynthesizeFragment_mode00(SynthesisParam* pFinalParam, Loop* pLoop) { 37 SYNTHESIZE(MONO,0,0,0,0); 38 } 39 SynthesizeFragment_mode01(SynthesisParam * pFinalParam,Loop * pLoop)40 void SynthesizeFragment_mode01(SynthesisParam* pFinalParam, Loop* pLoop) { 41 SYNTHESIZE(MONO,0,0,1,0); 42 } 43 SynthesizeFragment_mode02(SynthesisParam * pFinalParam,Loop * pLoop)44 void SynthesizeFragment_mode02(SynthesisParam* pFinalParam, Loop* pLoop) { 45 SYNTHESIZE(MONO,0,1,0,0); 46 } 47 SynthesizeFragment_mode03(SynthesisParam * pFinalParam,Loop * pLoop)48 void SynthesizeFragment_mode03(SynthesisParam* pFinalParam, Loop* pLoop) { 49 SYNTHESIZE(MONO,0,1,1,0); 50 } 51 SynthesizeFragment_mode04(SynthesisParam * pFinalParam,Loop * pLoop)52 void SynthesizeFragment_mode04(SynthesisParam* pFinalParam, Loop* pLoop) { 53 SYNTHESIZE(MONO,1,0,0,0); 54 } 55 SynthesizeFragment_mode05(SynthesisParam * pFinalParam,Loop * pLoop)56 void SynthesizeFragment_mode05(SynthesisParam* pFinalParam, Loop* pLoop) { 57 SYNTHESIZE(MONO,1,0,1,0); 58 } 59 SynthesizeFragment_mode06(SynthesisParam * pFinalParam,Loop * pLoop)60 void SynthesizeFragment_mode06(SynthesisParam* pFinalParam, Loop* pLoop) { 61 SYNTHESIZE(MONO,1,1,0,0); 62 } 63 SynthesizeFragment_mode07(SynthesisParam * pFinalParam,Loop * pLoop)64 void SynthesizeFragment_mode07(SynthesisParam* pFinalParam, Loop* pLoop) { 65 SYNTHESIZE(MONO,1,1,1,0); 66 } 67 SynthesizeFragment_mode08(SynthesisParam * pFinalParam,Loop * pLoop)68 void SynthesizeFragment_mode08(SynthesisParam* pFinalParam, Loop* pLoop) { 69 SYNTHESIZE(STEREO,0,0,0,0); 70 } 71 SynthesizeFragment_mode09(SynthesisParam * pFinalParam,Loop * pLoop)72 void SynthesizeFragment_mode09(SynthesisParam* pFinalParam, Loop* pLoop) { 73 SYNTHESIZE(STEREO,0,0,1,0); 74 } 75 SynthesizeFragment_mode0a(SynthesisParam * pFinalParam,Loop * pLoop)76 void SynthesizeFragment_mode0a(SynthesisParam* pFinalParam, Loop* pLoop) { 77 SYNTHESIZE(STEREO,0,1,0,0); 78 } 79 SynthesizeFragment_mode0b(SynthesisParam * pFinalParam,Loop * pLoop)80 void SynthesizeFragment_mode0b(SynthesisParam* pFinalParam, Loop* pLoop) { 81 SYNTHESIZE(STEREO,0,1,1,0); 82 } 83 SynthesizeFragment_mode0c(SynthesisParam * pFinalParam,Loop * pLoop)84 void SynthesizeFragment_mode0c(SynthesisParam* pFinalParam, Loop* pLoop) { 85 SYNTHESIZE(STEREO,1,0,0,0); 86 } 87 SynthesizeFragment_mode0d(SynthesisParam * pFinalParam,Loop * pLoop)88 void SynthesizeFragment_mode0d(SynthesisParam* pFinalParam, Loop* pLoop) { 89 SYNTHESIZE(STEREO,1,0,1,0); 90 } 91 SynthesizeFragment_mode0e(SynthesisParam * pFinalParam,Loop * pLoop)92 void SynthesizeFragment_mode0e(SynthesisParam* pFinalParam, Loop* pLoop) { 93 SYNTHESIZE(STEREO,1,1,0,0); 94 } 95 SynthesizeFragment_mode0f(SynthesisParam * pFinalParam,Loop * pLoop)96 void SynthesizeFragment_mode0f(SynthesisParam* pFinalParam, Loop* pLoop) { 97 SYNTHESIZE(STEREO,1,1,1,0); 98 } 99 SynthesizeFragment_mode10(SynthesisParam * pFinalParam,Loop * pLoop)100 void SynthesizeFragment_mode10(SynthesisParam* pFinalParam, Loop* pLoop) { 101 SYNTHESIZE(MONO,0,0,0,1); 102 } 103 SynthesizeFragment_mode11(SynthesisParam * pFinalParam,Loop * pLoop)104 void SynthesizeFragment_mode11(SynthesisParam* pFinalParam, Loop* pLoop) { 105 SYNTHESIZE(MONO,0,0,1,1); 106 } 107 SynthesizeFragment_mode12(SynthesisParam * pFinalParam,Loop * pLoop)108 void SynthesizeFragment_mode12(SynthesisParam* pFinalParam, Loop* pLoop) { 109 SYNTHESIZE(MONO,0,1,0,1); 110 } 111 SynthesizeFragment_mode13(SynthesisParam * pFinalParam,Loop * pLoop)112 void SynthesizeFragment_mode13(SynthesisParam* pFinalParam, Loop* pLoop) { 113 SYNTHESIZE(MONO,0,1,1,1); 114 } 115 SynthesizeFragment_mode14(SynthesisParam * pFinalParam,Loop * pLoop)116 void SynthesizeFragment_mode14(SynthesisParam* pFinalParam, Loop* pLoop) { 117 SYNTHESIZE(MONO,1,0,0,1); 118 } 119 SynthesizeFragment_mode15(SynthesisParam * pFinalParam,Loop * pLoop)120 void SynthesizeFragment_mode15(SynthesisParam* pFinalParam, Loop* pLoop) { 121 SYNTHESIZE(MONO,1,0,1,1); 122 } 123 SynthesizeFragment_mode16(SynthesisParam * pFinalParam,Loop * pLoop)124 void SynthesizeFragment_mode16(SynthesisParam* pFinalParam, Loop* pLoop) { 125 SYNTHESIZE(MONO,1,1,0,1); 126 } 127 SynthesizeFragment_mode17(SynthesisParam * pFinalParam,Loop * pLoop)128 void SynthesizeFragment_mode17(SynthesisParam* pFinalParam, Loop* pLoop) { 129 SYNTHESIZE(MONO,1,1,1,1); 130 } 131 SynthesizeFragment_mode18(SynthesisParam * pFinalParam,Loop * pLoop)132 void SynthesizeFragment_mode18(SynthesisParam* pFinalParam, Loop* pLoop) { 133 SYNTHESIZE(STEREO,0,0,0,1); 134 } 135 SynthesizeFragment_mode19(SynthesisParam * pFinalParam,Loop * pLoop)136 void SynthesizeFragment_mode19(SynthesisParam* pFinalParam, Loop* pLoop) { 137 SYNTHESIZE(STEREO,0,0,1,1); 138 } 139 SynthesizeFragment_mode1a(SynthesisParam * pFinalParam,Loop * pLoop)140 void SynthesizeFragment_mode1a(SynthesisParam* pFinalParam, Loop* pLoop) { 141 SYNTHESIZE(STEREO,0,1,0,1); 142 } 143 SynthesizeFragment_mode1b(SynthesisParam * pFinalParam,Loop * pLoop)144 void SynthesizeFragment_mode1b(SynthesisParam* pFinalParam, Loop* pLoop) { 145 SYNTHESIZE(STEREO,0,1,1,1); 146 } 147 SynthesizeFragment_mode1c(SynthesisParam * pFinalParam,Loop * pLoop)148 void SynthesizeFragment_mode1c(SynthesisParam* pFinalParam, Loop* pLoop) { 149 SYNTHESIZE(STEREO,1,0,0,1); 150 } 151 SynthesizeFragment_mode1d(SynthesisParam * pFinalParam,Loop * pLoop)152 void SynthesizeFragment_mode1d(SynthesisParam* pFinalParam, Loop* pLoop) { 153 SYNTHESIZE(STEREO,1,0,1,1); 154 } 155 SynthesizeFragment_mode1e(SynthesisParam * pFinalParam,Loop * pLoop)156 void SynthesizeFragment_mode1e(SynthesisParam* pFinalParam, Loop* pLoop) { 157 SYNTHESIZE(STEREO,1,1,0,1); 158 } 159 SynthesizeFragment_mode1f(SynthesisParam * pFinalParam,Loop * pLoop)160 void SynthesizeFragment_mode1f(SynthesisParam* pFinalParam, Loop* pLoop) { 161 SYNTHESIZE(STEREO,1,1,1,1); 162 } 163 GetSynthesisFunction(int SynthesisMode)164 void* GetSynthesisFunction(int SynthesisMode) { 165 // Mode Bits: (PROF),(IMPL),24BIT,CHAN,LOOP,FILT,INTERP 166 switch (SynthesisMode) { 167 case 0x00: return (void*) SynthesizeFragment_mode00; 168 case 0x01: return (void*) SynthesizeFragment_mode01; 169 case 0x02: return (void*) SynthesizeFragment_mode02; 170 case 0x03: return (void*) SynthesizeFragment_mode03; 171 case 0x04: return (void*) SynthesizeFragment_mode04; 172 case 0x05: return (void*) SynthesizeFragment_mode05; 173 case 0x06: return (void*) SynthesizeFragment_mode06; 174 case 0x07: return (void*) SynthesizeFragment_mode07; 175 case 0x08: return (void*) SynthesizeFragment_mode08; 176 case 0x09: return (void*) SynthesizeFragment_mode09; 177 case 0x0a: return (void*) SynthesizeFragment_mode0a; 178 case 0x0b: return (void*) SynthesizeFragment_mode0b; 179 case 0x0c: return (void*) SynthesizeFragment_mode0c; 180 case 0x0d: return (void*) SynthesizeFragment_mode0d; 181 case 0x0e: return (void*) SynthesizeFragment_mode0e; 182 case 0x0f: return (void*) SynthesizeFragment_mode0f; 183 case 0x10: return (void*) SynthesizeFragment_mode10; 184 case 0x11: return (void*) SynthesizeFragment_mode11; 185 case 0x12: return (void*) SynthesizeFragment_mode12; 186 case 0x13: return (void*) SynthesizeFragment_mode13; 187 case 0x14: return (void*) SynthesizeFragment_mode14; 188 case 0x15: return (void*) SynthesizeFragment_mode15; 189 case 0x16: return (void*) SynthesizeFragment_mode16; 190 case 0x17: return (void*) SynthesizeFragment_mode17; 191 case 0x18: return (void*) SynthesizeFragment_mode18; 192 case 0x19: return (void*) SynthesizeFragment_mode19; 193 case 0x1a: return (void*) SynthesizeFragment_mode1a; 194 case 0x1b: return (void*) SynthesizeFragment_mode1b; 195 case 0x1c: return (void*) SynthesizeFragment_mode1c; 196 case 0x1d: return (void*) SynthesizeFragment_mode1d; 197 case 0x1e: return (void*) SynthesizeFragment_mode1e; 198 case 0x1f: return (void*) SynthesizeFragment_mode1f; 199 default: { 200 std::cerr << "gig::Synthesizer: Invalid Synthesis Mode: " << SynthesisMode << std::endl << std::flush; 201 exit(-1); 202 } 203 } 204 } 205 RunSynthesisFunction(const int SynthesisMode,SynthesisParam * pFinalParam,Loop * pLoop)206 void RunSynthesisFunction(const int SynthesisMode, SynthesisParam* pFinalParam, Loop* pLoop) { 207 SynthesizeFragment_Fn* f = (SynthesizeFragment_Fn*) GetSynthesisFunction(SynthesisMode); 208 f(pFinalParam, pLoop); 209 } 210 211 }} // namespace LinuxSampler::gig 212