32 int midiNoteForNormalPitch,
33 double attackTimeSecs,
34 double releaseTimeSecs,
35 double maxSampleLengthSeconds)
43 length = jmin ((int) source.lengthInSamples,
44 (int) (maxSampleLengthSeconds * sourceSampleRate));
46 data.reset (new AudioBuffer<float> (jmin (2, (int) source.numChannels), length + 4));
48 source.read (data.get(), 0, length + 4, 0, true, true);
50 params.attack = static_cast<float> (attackTimeSecs);
51 params.release = static_cast<float> (releaseTimeSecs);
75 return dynamic_cast<const SamplerSound*
> (sound) !=
nullptr;
82 pitchRatio = std::pow (2.0, (midiNoteNumber - sound->midiRootNote) / 12.0)
89 adsr.setSampleRate (sound->sourceSampleRate);
90 adsr.setParameters (sound->params);
121 auto&
data = *playingSound->data;
122 const float*
const inL =
data.getReadPointer (0);
123 const float*
const inR =
data.getNumChannels() > 1 ?
data.getReadPointer (1) :
nullptr;
128 while (--numSamples >= 0)
132 auto invAlpha = 1.0f - alpha;
135 float l = (inL[pos] * invAlpha + inL[pos + 1] * alpha);
136 float r = (inR !=
nullptr) ? (inR[pos] * invAlpha + inR[pos + 1] * alpha)
139 auto envelopeValue =
adsr.getNextSample();
141 l *=
lgain * envelopeValue;
142 r *=
rgain * envelopeValue;
151 *outL++ += (
l +
r) * 0.5f;
Definition juce_AudioSampleBuffer.h:34
Type * getWritePointer(int channelNumber) noexcept
Definition juce_AudioSampleBuffer.h:291
int getNumChannels() const noexcept
Definition juce_AudioSampleBuffer.h:236
Definition juce_BigInteger.h:39
Definition juce_Sampler.h:44
bool appliesToChannel(int midiChannel) override
Definition juce_Sampler.cpp:64
BigInteger midiNotes
Definition juce_Sampler.h:100
SamplerSound(const String &name, AudioFormatReader &source, const BigInteger &midiNotes, int midiNoteForNormalPitch, double attackTimeSecs, double releaseTimeSecs, double maxSampleLengthSeconds)
Definition juce_Sampler.cpp:29
bool appliesToNote(int midiNoteNumber) override
Definition juce_Sampler.cpp:59
int midiRootNote
Definition juce_Sampler.h:101
String name
Definition juce_Sampler.h:97
double sourceSampleRate
Definition juce_Sampler.h:99
~SamplerSound() override
Definition juce_Sampler.cpp:55
~SamplerVoice() override
Definition juce_Sampler.cpp:71
void startNote(int midiNoteNumber, float velocity, SynthesiserSound *, int pitchWheel) override
Definition juce_Sampler.cpp:78
void controllerMoved(int controllerNumber, int newValue) override
Definition juce_Sampler.cpp:114
bool canPlaySound(SynthesiserSound *) override
Definition juce_Sampler.cpp:73
void renderNextBlock(AudioBuffer< float > &, int startSample, int numSamples) override
Definition juce_Sampler.cpp:117
double pitchRatio
Definition juce_Sampler.h:144
void pitchWheelMoved(int newValue) override
Definition juce_Sampler.cpp:113
SamplerVoice()
Definition juce_Sampler.cpp:70
float rgain
Definition juce_Sampler.h:146
void stopNote(float velocity, bool allowTailOff) override
Definition juce_Sampler.cpp:100
ADSR adsr
Definition juce_Sampler.h:148
float lgain
Definition juce_Sampler.h:146
double sourceSamplePosition
Definition juce_Sampler.h:145
Definition juce_String.h:53
Definition juce_Synthesiser.h:42
void clearCurrentNote()
Definition juce_Synthesiser.cpp:48
SynthesiserSound::Ptr getCurrentlyPlayingSound() const noexcept
Definition juce_Synthesiser.h:106
int * l
Definition inflate.c:1579
unsigned s
Definition inflate.c:1555
virtual ASIOError getSampleRate(ASIOSampleRate *sampleRate)=0
JSAMPIMAGE data
Definition jpeglib.h:945
Definition carla_juce.cpp:31
int r
Definition crypt.c:458
typedef int(UZ_EXP MsgFn)()