/[svn]/linuxsampler/trunk/src/engines/gig/Synthesizer.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/engines/gig/Synthesizer.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 738 by schoenebeck, Tue Aug 16 17:14:25 2005 UTC revision 770 by schoenebeck, Sun Sep 11 15:56:29 2005 UTC
# Line 26  Line 26 
26  #include <stdio.h>  #include <stdio.h>
27    
28  #include "Synthesizer.h"  #include "Synthesizer.h"
 #include "Profiler.h"  
29    
30  #define SYNTHESIZE(IMPL,CHAN,LOOP,FILTER,INTERPOLATE) \  #define SYNTHESIZE(CHAN,LOOP,FILTER,INTERPOLATE) \
31          Synthesizer<IMPL,CHAN,LOOP,FILTER,INTERPOLATE>::SynthesizeSubFragment( \          Synthesizer<CHAN,LOOP,FILTER,INTERPOLATE>::SynthesizeSubFragment( \
32          voice, samples, pSrc, skip)          pFinalParam, pLoop)
 #define SYNTHESIZEP(IMPL,CHAN,FILTER,INTERPOLATE,LOOP,CONSTPITCH) \  
         RTMath::time_stamp_t start = Profiler::Stamp(); \  
         Synthesizer<IMPL,CHAN,FILTER,INTERPOLATE,LOOP,CONSTPITCH>::SynthesizeFragment( \  
         voice, samples, pSrc, skip); \  
         Profiler::Record(start, samples, skip)  
33    
34  namespace LinuxSampler { namespace gig {  namespace LinuxSampler { namespace gig {
35    
36      void SynthesizeFragment_mode00(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {      void SynthesizeFragment_mode00(SynthesisParam* pFinalParam, Loop* pLoop) {
37          SYNTHESIZE(CPP,MONO,0,0,0);          SYNTHESIZE(MONO,0,0,0);
38      }      }
39    
40      void SynthesizeFragment_mode01(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {      void SynthesizeFragment_mode01(SynthesisParam* pFinalParam, Loop* pLoop) {
41          SYNTHESIZE(CPP,MONO,0,0,1);          SYNTHESIZE(MONO,0,0,1);
42      }      }
43    
44      void SynthesizeFragment_mode02(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {      void SynthesizeFragment_mode02(SynthesisParam* pFinalParam, Loop* pLoop) {
45          SYNTHESIZE(CPP,MONO,0,1,0);          SYNTHESIZE(MONO,0,1,0);
46      }      }
47    
48      void SynthesizeFragment_mode03(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {      void SynthesizeFragment_mode03(SynthesisParam* pFinalParam, Loop* pLoop) {
49          SYNTHESIZE(CPP,MONO,0,1,1);          SYNTHESIZE(MONO,0,1,1);
50      }      }
51    
52      void SynthesizeFragment_mode04(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {      void SynthesizeFragment_mode04(SynthesisParam* pFinalParam, Loop* pLoop) {
53          SYNTHESIZE(CPP,MONO,1,0,0);          SYNTHESIZE(MONO,1,0,0);
54      }      }
55    
56      void SynthesizeFragment_mode05(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {      void SynthesizeFragment_mode05(SynthesisParam* pFinalParam, Loop* pLoop) {
57          SYNTHESIZE(CPP,MONO,1,0,1);          SYNTHESIZE(MONO,1,0,1);
58      }      }
59    
60      void SynthesizeFragment_mode06(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {      void SynthesizeFragment_mode06(SynthesisParam* pFinalParam, Loop* pLoop) {
61          SYNTHESIZE(CPP,MONO,1,1,0);          SYNTHESIZE(MONO,1,1,0);
62      }      }
63    
64      void SynthesizeFragment_mode07(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {      void SynthesizeFragment_mode07(SynthesisParam* pFinalParam, Loop* pLoop) {
65          SYNTHESIZE(CPP,MONO,1,1,1);          SYNTHESIZE(MONO,1,1,1);
66      }      }
67    
68      void SynthesizeFragment_mode08(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {      void SynthesizeFragment_mode08(SynthesisParam* pFinalParam, Loop* pLoop) {
69          SYNTHESIZE(CPP,STEREO,0,0,0);          SYNTHESIZE(STEREO,0,0,0);
70      }      }
71    
72      void SynthesizeFragment_mode09(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {      void SynthesizeFragment_mode09(SynthesisParam* pFinalParam, Loop* pLoop) {
73          SYNTHESIZE(CPP,STEREO,0,0,1);          SYNTHESIZE(STEREO,0,0,1);
74      }      }
75    
76      void SynthesizeFragment_mode0a(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {      void SynthesizeFragment_mode0a(SynthesisParam* pFinalParam, Loop* pLoop) {
77          SYNTHESIZE(CPP,STEREO,0,1,0);          SYNTHESIZE(STEREO,0,1,0);
78      }      }
79    
80      void SynthesizeFragment_mode0b(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {      void SynthesizeFragment_mode0b(SynthesisParam* pFinalParam, Loop* pLoop) {
81          SYNTHESIZE(CPP,STEREO,0,1,1);          SYNTHESIZE(STEREO,0,1,1);
82      }      }
83    
84      void SynthesizeFragment_mode0c(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {      void SynthesizeFragment_mode0c(SynthesisParam* pFinalParam, Loop* pLoop) {
85          SYNTHESIZE(CPP,STEREO,1,0,0);          SYNTHESIZE(STEREO,1,0,0);
86      }      }
87    
88      void SynthesizeFragment_mode0d(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {      void SynthesizeFragment_mode0d(SynthesisParam* pFinalParam, Loop* pLoop) {
89          SYNTHESIZE(CPP,STEREO,1,0,1);          SYNTHESIZE(STEREO,1,0,1);
90      }      }
91    
92      void SynthesizeFragment_mode0e(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {      void SynthesizeFragment_mode0e(SynthesisParam* pFinalParam, Loop* pLoop) {
93          SYNTHESIZE(CPP,STEREO,1,1,0);          SYNTHESIZE(STEREO,1,1,0);
94      }      }
95    
96      void SynthesizeFragment_mode0f(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {      void SynthesizeFragment_mode0f(SynthesisParam* pFinalParam, Loop* pLoop) {
97          SYNTHESIZE(CPP,STEREO,1,1,1);          SYNTHESIZE(STEREO,1,1,1);
98      }      }
99    
 #if CONFIG_ASM && ARCH_X86  
   
     void SynthesizeFragment_mode10(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {  
         SYNTHESIZE(ASM_X86_MMX_SSE,MONO,0,0,0);  
     }  
   
     void SynthesizeFragment_mode11(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {  
         SYNTHESIZE(ASM_X86_MMX_SSE,MONO,0,0,1);  
     }  
   
     void SynthesizeFragment_mode12(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {  
         SYNTHESIZE(ASM_X86_MMX_SSE,MONO,0,1,0);  
     }  
   
     void SynthesizeFragment_mode13(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {  
         SYNTHESIZE(ASM_X86_MMX_SSE,MONO,0,1,1);  
     }  
   
     void SynthesizeFragment_mode14(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {  
         SYNTHESIZE(ASM_X86_MMX_SSE,MONO,1,0,0);  
     }  
   
     void SynthesizeFragment_mode15(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {  
         SYNTHESIZE(ASM_X86_MMX_SSE,MONO,1,0,1);  
     }  
   
     void SynthesizeFragment_mode16(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {  
         SYNTHESIZE(ASM_X86_MMX_SSE,MONO,1,1,0);  
     }  
   
     void SynthesizeFragment_mode17(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {  
         SYNTHESIZE(ASM_X86_MMX_SSE,MONO,1,1,1);  
     }  
   
     void SynthesizeFragment_mode18(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {  
         SYNTHESIZE(ASM_X86_MMX_SSE,STEREO,0,0,0);  
     }  
   
     void SynthesizeFragment_mode19(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {  
         SYNTHESIZE(ASM_X86_MMX_SSE,STEREO,0,0,1);  
     }  
   
     void SynthesizeFragment_mode1a(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {  
         SYNTHESIZE(ASM_X86_MMX_SSE,STEREO,0,1,0);  
     }  
   
     void SynthesizeFragment_mode1b(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {  
         SYNTHESIZE(ASM_X86_MMX_SSE,STEREO,0,1,1);  
     }  
   
     void SynthesizeFragment_mode1c(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {  
         SYNTHESIZE(ASM_X86_MMX_SSE,STEREO,1,0,0);  
     }  
   
     void SynthesizeFragment_mode1d(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {  
         SYNTHESIZE(ASM_X86_MMX_SSE,STEREO,1,0,1);  
     }  
   
     void SynthesizeFragment_mode1e(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {  
         SYNTHESIZE(ASM_X86_MMX_SSE,STEREO,1,1,0);  
     }  
   
     void SynthesizeFragment_mode1f(VOICE &voice, uint samples, sample_t* pSrc, uint skip) {  
         SYNTHESIZE(ASM_X86_MMX_SSE,STEREO,1,1,1);  
     }  
   
 #endif // CONFIG_ASM && ARCH_X86  
   
100      void* GetSynthesisFunction(int SynthesisMode) {      void* GetSynthesisFunction(int SynthesisMode) {
101          // Mode Bits: IMPL,CHAN,LOOP,FILT,INTERP          // Mode Bits: CHAN,LOOP,FILT,INTERP
         SynthesisMode &= 0x1f;  
102          switch (SynthesisMode) {          switch (SynthesisMode) {
103              case 0x00: return (void*) SynthesizeFragment_mode00;              case 0x00: return (void*) SynthesizeFragment_mode00;
104              case 0x01: return (void*) SynthesizeFragment_mode01;              case 0x01: return (void*) SynthesizeFragment_mode01;
# Line 191  namespace LinuxSampler { namespace gig { Line 116  namespace LinuxSampler { namespace gig {
116              case 0x0d: return (void*) SynthesizeFragment_mode0d;              case 0x0d: return (void*) SynthesizeFragment_mode0d;
117              case 0x0e: return (void*) SynthesizeFragment_mode0e;              case 0x0e: return (void*) SynthesizeFragment_mode0e;
118              case 0x0f: return (void*) SynthesizeFragment_mode0f;              case 0x0f: return (void*) SynthesizeFragment_mode0f;
 #if CONFIG_ASM && ARCH_X86  
             case 0x10: return (void*) SynthesizeFragment_mode10;  
             case 0x11: return (void*) SynthesizeFragment_mode11;  
             case 0x12: return (void*) SynthesizeFragment_mode12;  
             case 0x13: return (void*) SynthesizeFragment_mode13;  
             case 0x14: return (void*) SynthesizeFragment_mode14;  
             case 0x15: return (void*) SynthesizeFragment_mode15;  
             case 0x16: return (void*) SynthesizeFragment_mode16;  
             case 0x17: return (void*) SynthesizeFragment_mode17;  
             case 0x18: return (void*) SynthesizeFragment_mode18;  
             case 0x19: return (void*) SynthesizeFragment_mode19;  
             case 0x1a: return (void*) SynthesizeFragment_mode1a;  
             case 0x1b: return (void*) SynthesizeFragment_mode1b;  
             case 0x1c: return (void*) SynthesizeFragment_mode1c;  
             case 0x1d: return (void*) SynthesizeFragment_mode1d;  
             case 0x1e: return (void*) SynthesizeFragment_mode1e;  
             case 0x1f: return (void*) SynthesizeFragment_mode1f;  
 #endif // CONFIG_ASM && ARCH_X86  
119              default: {              default: {
120                  printf("gig::Synthesizer: Invalid Synthesis Mode: %d\n", SynthesisMode);                  printf("gig::Synthesizer: Invalid Synthesis Mode: %d\n", SynthesisMode);
121                  exit(-1);                  exit(-1);
# Line 216  namespace LinuxSampler { namespace gig { Line 123  namespace LinuxSampler { namespace gig {
123          }          }
124      }      }
125    
126      void RunSynthesisFunction(const int SynthesisMode, VOICE& voice, uint Samples, sample_t* pSrc, uint Skip)      void RunSynthesisFunction(const int SynthesisMode, SynthesisParam* pFinalParam, Loop* pLoop) {
127      {          SynthesizeFragment_Fn* f = (SynthesizeFragment_Fn*) GetSynthesisFunction(SynthesisMode);
128              SynthesizeFragment_Fn* f = (SynthesizeFragment_Fn*) GetSynthesisFunction(SynthesisMode);          f(pFinalParam, pLoop);
             f(voice, Samples, pSrc, Skip);  
129      }      }
130    
131  }} // namespace LinuxSampler::gig  }} // namespace LinuxSampler::gig

Legend:
Removed from v.738  
changed lines
  Added in v.770

  ViewVC Help
Powered by ViewVC