#pragma once
#include "BuildSettings.h"
OPENMPT_NAMESPACE_BEGIN
class CSoundFile;
struct ModSample;
struct ModChannel;
OPENMPT_NAMESPACE_END
#include "Snd_defs.h"
OPENMPT_NAMESPACE_BEGIN
namespace ctrlSmp
{
enum ResetFlag
{
SmpResetCompo = 1,
SmpResetInit,
SmpResetVibrato,
};
SmpLength InsertSilence(ModSample &smp, const SmpLength silenceLength, const SmpLength startFrom, CSoundFile &sndFile);
SmpLength RemoveRange(ModSample &smp, SmpLength selStart, SmpLength selEnd, CSoundFile &sndFile);
SmpLength ResizeSample(ModSample &smp, const SmpLength newLength, CSoundFile &sndFile);
void ReplaceSample(ModSample &smp, void *pNewSample, const SmpLength newLength, CSoundFile &sndFile);
bool PrecomputeLoops(ModSample &smp, CSoundFile &sndFile, bool updateChannels = true);
bool UpdateLoopPoints(const ModSample &smp, CSoundFile &sndFile);
void ResetSamples(CSoundFile &sndFile, ResetFlag resetflag, SAMPLEINDEX minSample = SAMPLEINDEX_INVALID, SAMPLEINDEX maxSample = SAMPLEINDEX_INVALID);
double RemoveDCOffset(ModSample &smp, SmpLength start, SmpLength end, CSoundFile &sndFile);
bool AmplifySample(ModSample &smp, SmpLength start, SmpLength end, CSoundFile &sndFile, double amplifyStart, double amplifyEnd);
bool ReverseSample(ModSample &smp, SmpLength start, SmpLength end, CSoundFile &sndFile);
bool UnsignSample(ModSample &smp, SmpLength start, SmpLength end, CSoundFile &sndFile);
bool InvertSample(ModSample &smp, SmpLength start, SmpLength end, CSoundFile &sndFile);
bool XFadeSample(ModSample &smp, SmpLength fadeLength, int fadeLaw, bool afterloopFade, bool useSustainLoop, CSoundFile &sndFile);
bool SilenceSample(ModSample &smp, SmpLength start, SmpLength end, CSoundFile &sndFile);
bool StereoSepSample(ModSample &smp, SmpLength start, SmpLength end, double separation, CSoundFile &sndFile);
enum StereoToMonoMode
{
mixChannels,
onlyLeft,
onlyRight,
splitSample,
};
bool ConvertToMono(ModSample &smp, CSoundFile &sndFile, StereoToMonoMode conversionMode);
bool ConvertToStereo(ModSample &smp, CSoundFile &sndFile);
bool ConvertTo8Bit(ModSample &smp, CSoundFile &sndFile);
bool ConvertTo16Bit(ModSample &smp, CSoundFile &sndFile);
}
namespace ctrlChn
{
void ReplaceSample( CSoundFile &sndFile,
const ModSample &sample,
const void * const pNewSample,
const SmpLength newLength,
FlagSet<ChannelFlags> setFlags,
FlagSet<ChannelFlags> resetFlags);
}
OPENMPT_NAMESPACE_END