diff -Naur soundtouch-1.3.1/include/SoundTouch.h soundtouch-1.3.1.oden/include/SoundTouch.h --- soundtouch-1.3.1/include/SoundTouch.h 2006-03-05 19:01:00.000000000 +0100 +++ soundtouch-1.3.1.oden/include/SoundTouch.h 2006-03-05 18:58:38.000000000 +0100 @@ -72,11 +72,15 @@ #ifndef SoundTouch_H #define SoundTouch_H +#if defined(__cplusplus) || defined(c_plusplus) #include "FIFOSamplePipe.h" +#endif #include "STTypes.h" +#if defined(__cplusplus) || defined(c_plusplus) namespace soundtouch { +#endif /// Soundtouch library version string #define SOUNDTOUCH_VERSION "1.3.1" @@ -116,6 +120,7 @@ #define SETTING_OVERLAP_MS 5 +#if defined(__cplusplus) || defined(c_plusplus) class SoundTouch : public FIFOProcessor { private: @@ -248,5 +253,39 @@ /// - clear() : Clears all samples from ready/processing buffers. }; +extern "C" { +#endif /* #ifdef __cplusplus */ + + /* C Front End Functions for SoundTouch class */ + struct __SoundTouch; + struct __SoundTouch *SoundTouch_construct(); + void SoundTouch_destruct(struct __SoundTouch *st); + void SoundTouch_setRate(struct __SoundTouch *st, float newRate); + void SoundTouch_setTempo(struct __SoundTouch *st, float newTempo); + void SoundTouch_setRateChange(struct __SoundTouch *st, float newRate); + void SoundTouch_setTempoChange(struct __SoundTouch *st, float newTempo); + void SoundTouch_setPitch(struct __SoundTouch *st, float newPitch); + void SoundTouch_setPitchOctaves(struct __SoundTouch *st, float newPitch); + void SoundTouch_setPitchSemiTonesInt(struct __SoundTouch *st, int newPitch); + void SoundTouch_setPitchSemiTonesFloat(struct __SoundTouch *st, float newPitch); + void SoundTouch_setChannels(struct __SoundTouch *st, uint numChannels); + void SoundTouch_setSampleRate(struct __SoundTouch *st, uint srate); + void SoundTouch_flush(struct __SoundTouch *st); + void SoundTouch_putSamples(struct __SoundTouch *st, SAMPLETYPE *samples, uint numSamples); + void SoundTouch_clear(struct __SoundTouch *st); + int SoundTouch_setSetting(struct __SoundTouch *st, uint settingId, uint value); + uint SoundTouch_getSetting(struct __SoundTouch *st, uint settingId); + uint SoundTouch_numUnprocessedSamples(struct __SoundTouch *st); + + uint SoundTouch_receiveSamplesEx(struct __SoundTouch *st, SAMPLETYPE *output, uint maxSamples); + uint SoundTouch_receiveSamples(struct __SoundTouch *st, uint maxSamples); + uint SoundTouch_numSamples(struct __SoundTouch *st); + int SoundTouch_isEmpty(struct __SoundTouch *st); + +#if defined(__cplusplus) || defined(c_plusplus) } + +} +#endif + #endif diff -Naur soundtouch-1.3.1/include/STTypes.h soundtouch-1.3.1.oden/include/STTypes.h --- soundtouch-1.3.1/include/STTypes.h 2006-03-05 19:01:00.000000000 +0100 +++ soundtouch-1.3.1.oden/include/STTypes.h 2006-03-05 19:00:16.000000000 +0100 @@ -57,9 +57,10 @@ #endif // _WINDEF_ - +#if defined(__cplusplus) || defined(c_plusplus) namespace soundtouch { +#endif /// Activate these undef's to overrule the possible sampletype /// setting inherited from some other header file: //#undef INTEGER_SAMPLES @@ -138,6 +139,8 @@ #endif #endif // INTEGER_SAMPLES +#if defined(__cplusplus) || defined(c_plusplus) }; +#endif #endif diff -Naur soundtouch-1.3.1/source/SoundTouch/SoundTouch.cpp soundtouch-1.3.1.oden/source/SoundTouch/SoundTouch.cpp --- soundtouch-1.3.1/source/SoundTouch/SoundTouch.cpp 2006-03-05 19:01:00.000000000 +0100 +++ soundtouch-1.3.1.oden/source/SoundTouch/SoundTouch.cpp 2006-03-05 19:00:43.000000000 +0100 @@ -472,3 +472,117 @@ } return 0; } + + /***************************************/ + /***** CRAZY C FRONT END FUNCTIONS *****/ +/***************************************/ + +extern "C" struct __SoundTouch *SoundTouch_construct() +{ + return (struct __SoundTouch *)(new SoundTouch()); +} + +extern "C" void SoundTouch_destruct(struct __SoundTouch *st) +{ + delete (SoundTouch *)st; +} + +extern "C" void SoundTouch_setRate(struct __SoundTouch *st, float newRate) +{ + ((SoundTouch *)st)->setRate(newRate); +} + +extern "C" void SoundTouch_setTempo(struct __SoundTouch *st, float newTempo) +{ + ((SoundTouch *)st)->setTempo(newTempo); +} + +extern "C" void SoundTouch_setRateChange(struct __SoundTouch *st, float newRate) +{ + ((SoundTouch *)st)->setRateChange(newRate); +} + +extern "C" void SoundTouch_setTempoChange(struct __SoundTouch *st, float newTempo) +{ + ((SoundTouch *)st)->setTempoChange(newTempo); +} + +extern "C" void SoundTouch_setPitch(struct __SoundTouch *st, float newPitch) +{ + ((SoundTouch *)st)->setPitch(newPitch); +} + +extern "C" void SoundTouch_setPitchOctaves(struct __SoundTouch *st, float newPitch) +{ + ((SoundTouch *)st)->setPitchOctaves(newPitch); +} + +extern "C" void SoundTouch_setPitchSemiTonesInt(struct __SoundTouch *st, int newPitch) +{ + ((SoundTouch *)st)->setPitchSemiTones(newPitch); +} + +extern "C" void SoundTouch_setPitchSemiTonesFloat(struct __SoundTouch *st, float newPitch) +{ + ((SoundTouch *)st)->setPitchSemiTones(newPitch); +} + +extern "C" void SoundTouch_setChannels(struct __SoundTouch *st, uint numChannels) +{ + ((SoundTouch *)st)->setChannels(numChannels); +} + +extern "C" void SoundTouch_setSampleRate(struct __SoundTouch *st, uint srate) +{ + ((SoundTouch *)st)->setSampleRate(srate); +} + +extern "C" void SoundTouch_flush(struct __SoundTouch *st) +{ + ((SoundTouch *)st)->flush(); +} + +extern "C" void SoundTouch_putSamples(struct __SoundTouch *st, SAMPLETYPE *samples, uint numSamples) +{ + ((SoundTouch *)st)->putSamples(samples, numSamples); +} + +extern "C" void SoundTouch_clear(struct __SoundTouch *st) +{ + ((SoundTouch *)st)->clear(); +} + +extern "C" int SoundTouch_setSetting(struct __SoundTouch *st, uint settingId, uint value) +{ + return ((SoundTouch *)st)->setSetting(settingId, value); +} + +extern "C" uint SoundTouch_getSetting(struct __SoundTouch *st, uint settingId) +{ + return ((SoundTouch *)st)->getSetting(settingId); +} + +extern "C" uint SoundTouch_numUnprocessedSamples(struct __SoundTouch *st) +{ + return ((SoundTouch *)st)->numUnprocessedSamples(); +} + +extern "C" uint SoundTouch_receiveSamplesEx(struct __SoundTouch *st, SAMPLETYPE *output, uint maxSamples) +{ + return ((SoundTouch *)st)->receiveSamples(output, maxSamples); +} + +extern "C" uint SoundTouch_receiveSamples(struct __SoundTouch *st, uint maxSamples) +{ + return ((SoundTouch *)st)->receiveSamples(maxSamples); +} + +extern "C" uint SoundTouch_numSamples(struct __SoundTouch *st) +{ + return ((SoundTouch *)st)->numSamples(); +} + +extern "C" int SoundTouch_isEmpty(struct __SoundTouch *st) +{ + return ((SoundTouch *)st)->isEmpty(); +}