JUCE  v6.1.6 (6.0.8-1114)
JUCE API
Looking for a senior C++ dev?
I'm looking for work. Hire me!
juce::SamplerSound Class Reference

A subclass of SynthesiserSound that represents a sampled audio clip. More...

#include <juce_Sampler.h>

Inheritance diagram for juce::SamplerSound:
Collaboration diagram for juce::SamplerSound:

Public Types

using Ptr = ReferenceCountedObjectPtr< SynthesiserSound >
 The class is reference-counted, so this is a handy pointer class for it. More...
 

Public Member Functions

 SamplerSound (const String &name, AudioFormatReader &source, const BigInteger &midiNotes, int midiNoteForNormalPitch, double attackTimeSecs, double releaseTimeSecs, double maxSampleLengthSeconds)
 Creates a sampled sound from an audio reader. More...
 
 ~SamplerSound () override
 Destructor. More...
 
bool appliesToChannel (int midiChannel) override
 Returns true if the sound should be triggered by midi events on a given channel. More...
 
bool appliesToNote (int midiNoteNumber) override
 Returns true if this sound should be played when a given midi note is pressed. More...
 
void decReferenceCount () noexcept
 Decreases the object's reference count. More...
 
bool decReferenceCountWithoutDeleting () noexcept
 Decreases the object's reference count. More...
 
AudioBuffer< float > * getAudioData () const noexcept
 Returns the audio sample data. More...
 
const StringgetName () const noexcept
 Returns the sample's name. More...
 
int getReferenceCount () const noexcept
 Returns the object's current reference count. More...
 
void incReferenceCount () noexcept
 Increments the object's reference count. More...
 
void setEnvelopeParameters (ADSR::Parameters parametersToUse)
 Changes the parameters of the ADSR envelope which will be applied to the sample. More...
 

Protected Member Functions

void resetReferenceCount () noexcept
 Resets the reference count to zero without deleting the object. More...
 

Private Attributes

std::unique_ptr< AudioBuffer< float > > data
 
int length = 0
 
BigInteger midiNotes
 
int midiRootNote = 0
 
String name
 
ADSR::Parameters params
 
Atomic< intrefCount { 0 }
 
double sourceSampleRate
 

Friends

class SamplerVoice
 

Detailed Description

A subclass of SynthesiserSound that represents a sampled audio clip.

This is a pretty basic sampler, and just attempts to load the whole audio stream into memory.

To use it, create a Synthesiser, add some SamplerVoice objects to it, then give it some SampledSound objects to play.

See also
SamplerVoice, Synthesiser, SynthesiserSound

@tags{Audio}

Member Typedef Documentation

◆ Ptr

The class is reference-counted, so this is a handy pointer class for it.

Constructor & Destructor Documentation

◆ SamplerSound()

juce::SamplerSound::SamplerSound ( const String name,
AudioFormatReader source,
const BigInteger midiNotes,
int  midiNoteForNormalPitch,
double  attackTimeSecs,
double  releaseTimeSecs,
double  maxSampleLengthSeconds 
)

Creates a sampled sound from an audio reader.

This will attempt to load the audio from the source into memory and store it in this object.

Parameters
namea name for the sample
sourcethe audio to load. This object can be safely deleted by the caller after this constructor returns
midiNotesthe set of midi keys that this sound should be played on. This is used by the SynthesiserSound::appliesToNote() method
midiNoteForNormalPitchthe midi note at which the sample should be played with its natural rate. All other notes will be pitched up or down relative to this one
attackTimeSecsthe attack (fade-in) time, in seconds
releaseTimeSecsthe decay (fade-out) time, in seconds
maxSampleLengthSecondsa maximum length of audio to read from the audio source, in seconds

◆ ~SamplerSound()

juce::SamplerSound::~SamplerSound ( )
override

Destructor.

Member Function Documentation

◆ appliesToChannel()

bool juce::SamplerSound::appliesToChannel ( int  midiChannel)
overridevirtual

Returns true if the sound should be triggered by midi events on a given channel.

The Synthesiser will use this information when deciding which sounds to trigger for a given note.

Implements juce::SynthesiserSound.

◆ appliesToNote()

bool juce::SamplerSound::appliesToNote ( int  midiNoteNumber)
overridevirtual

Returns true if this sound should be played when a given midi note is pressed.

The Synthesiser will use this information when deciding which sounds to trigger for a given note.

Implements juce::SynthesiserSound.

◆ decReferenceCount()

void juce::ReferenceCountedObject::decReferenceCount ( )
inlinenoexceptinherited

Decreases the object's reference count.

If the count gets to zero, the object will be deleted.

References jassert.

◆ decReferenceCountWithoutDeleting()

bool juce::ReferenceCountedObject::decReferenceCountWithoutDeleting ( )
inlinenoexceptinherited

Decreases the object's reference count.

If the count gets to zero, the object will not be deleted, but this method will return true, allowing the caller to take care of deletion.

References jassert.

◆ getAudioData()

AudioBuffer<float>* juce::SamplerSound::getAudioData ( ) const
inlinenoexcept

Returns the audio sample data.

This could return nullptr if there was a problem loading the data.

References juce::gl::data.

◆ getName()

const String& juce::SamplerSound::getName ( ) const
inlinenoexcept

Returns the sample's name.

References juce::gl::name.

◆ getReferenceCount()

int juce::ReferenceCountedObject::getReferenceCount ( ) const
inlinenoexceptinherited

Returns the object's current reference count.

◆ incReferenceCount()

void juce::ReferenceCountedObject::incReferenceCount ( )
inlinenoexceptinherited

Increments the object's reference count.

This is done automatically by the smart pointer, but is public just in case it's needed for nefarious purposes.

Referenced by juce::ReferenceCountedObjectPtr< juce::ReferenceCountedObject >::operator=().

◆ resetReferenceCount()

void juce::ReferenceCountedObject::resetReferenceCount ( )
inlineprotectednoexceptinherited

Resets the reference count to zero without deleting the object.

You should probably never need to use this!

◆ setEnvelopeParameters()

void juce::SamplerSound::setEnvelopeParameters ( ADSR::Parameters  parametersToUse)
inline

Changes the parameters of the ADSR envelope which will be applied to the sample.

References juce::gl::params.

Friends And Related Function Documentation

◆ SamplerVoice

friend class SamplerVoice
friend

Member Data Documentation

◆ data

std::unique_ptr<AudioBuffer<float> > juce::SamplerSound::data
private

◆ length

int juce::SamplerSound::length = 0
private

◆ midiNotes

BigInteger juce::SamplerSound::midiNotes
private

◆ midiRootNote

int juce::SamplerSound::midiRootNote = 0
private

◆ name

String juce::SamplerSound::name
private

◆ params

ADSR::Parameters juce::SamplerSound::params
private

◆ refCount

Atomic<int> juce::ReferenceCountedObject::refCount { 0 }
privateinherited

◆ sourceSampleRate

double juce::SamplerSound::sourceSampleRate
private

The documentation for this class was generated from the following file: