summaryrefslogtreecommitdiff
path: root/apps/plugins/midi/synth.h
diff options
context:
space:
mode:
authorNils Wallménius <nils@rockbox.org>2007-10-08 19:28:41 +0000
committerNils Wallménius <nils@rockbox.org>2007-10-08 19:28:41 +0000
commitf619f8167646632d6eab10f529638eebbdda6af6 (patch)
tree119a1f4051d59808a25612421f613cb09ee1e9d5 /apps/plugins/midi/synth.h
parentd712e252fecf814a48814034a55ba60a1b194598 (diff)
downloadrockbox-f619f8167646632d6eab10f529638eebbdda6af6.zip
rockbox-f619f8167646632d6eab10f529638eebbdda6af6.tar.gz
rockbox-f619f8167646632d6eab10f529638eebbdda6af6.tar.bz2
rockbox-f619f8167646632d6eab10f529638eebbdda6af6.tar.xz
Change loop structure for sample synthesizing. Gives a nice speedup on both coldfire and arm targets.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15036 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/midi/synth.h')
-rw-r--r--apps/plugins/midi/synth.h55
1 files changed, 1 insertions, 54 deletions
diff --git a/apps/plugins/midi/synth.h b/apps/plugins/midi/synth.h
index e04f9f4..5f9edf8 100644
--- a/apps/plugins/midi/synth.h
+++ b/apps/plugins/midi/synth.h
@@ -17,61 +17,8 @@
*
****************************************************************************/
int initSynth(struct MIDIfile * mf, char * filename, char * drumConfig);
-int synthVoice(struct SynthObject * so);
void setPoint(struct SynthObject * so, int pt);
-
-static inline void synthSample(int * mixL, int * mixR)
-{
- int i;
- register int dL=0;
- register int dR=0;
- register int sample = 0;
- register struct SynthObject *voicept=voices;
-
- for(i=MAX_VOICES/2; i > 0; i--)
- {
- if(voicept->isUsed==1)
- {
- sample = synthVoice(voicept);
- dL += sample;
- sample *= chPan[voicept->ch];
- dR += sample;
- }
- voicept++;
- if(voicept->isUsed==1)
- {
- sample = synthVoice(voicept);
- dL += sample;
- sample *= chPan[voicept->ch];
- dR += sample;
- }
- voicept++;
- }
-
-/* if MAX_VOICES is not even we do this to get the last voice */
-#if MAX_VOICES%2
- if (MAX_VOICES%2)
- {
- if(voicept->isUsed==1)
- {
- sample = synthVoice(voicept);
- dL += sample;
- sample *= chPan[voicept->ch];
- dR += sample;
- }
- }
-#endif
-
- dL = (dL << 7) - dR;
-
- *mixL=dL >> 7;
- *mixR=dR >> 7;
-
- /* TODO: Automatic Gain Control, anyone? */
- /* Or, should this be implemented on the DSP's output volume instead? */
-
- return; /* No more ghetto lowpass filter. Linear interpolation works well. */
-}
+void synthSamples(int32_t *buf_ptr, unsigned int num_samples);
static inline struct Event * getEvent(struct Track * tr, int evNum)
{