Updated docs and comments

This commit is contained in:
Paul Ferrand 2019-12-08 20:25:22 +01:00
parent f80da93cfc
commit 0710f90881
3 changed files with 71 additions and 14 deletions

View file

@ -134,14 +134,57 @@ public:
*
*/
void clear();
/**
* @brief Moves the filled promises to a linear storage, and checks
* said linear storage for promises that are not used anymore.
*
* This function has to be called on the audio thread.
*/
void cleanupPromises() noexcept;
/**
* @brief Get a file promise
*
* @param filename the file to preload
* @return FilePromisePtr a file promise
*/
FilePromisePtr getFilePromise(const std::string& filename) noexcept;
/**
* @brief Change the preloading size. This will trigger a full
* reload of all samples, so don't call it on the audio thread.
*
* @param preloadSize
*/
void setPreloadSize(uint32_t preloadSize) noexcept;
/**
* @brief Get the current preload size.
*
* @return uint32_t
*/
uint32_t getPreloadSize() const noexcept;
/**
* @brief Set the oversampling factor. This will trigger a full
* reload of all samples so don't call it on the audio thread.
*
* @param factor
*/
void setOversamplingFactor(Oversampling factor) noexcept;
/**
* @brief Get the current oversampling factor
*
* @return Oversampling
*/
Oversampling getOversamplingFactor() const noexcept;
/**
* @brief Empty the file loading queues without actually loading
* the files. All promises will be unfulfilled. Don't call this
* method on the audio thread as it will spinlock.
*
*/
void emptyFileLoadingQueues() noexcept;
/**
* @brief Wait for the background loading to finish for all promises
* in the queue.
*/
void waitForBackgroundLoading() noexcept;
private:
fs::path rootDirectory;

View file

@ -576,8 +576,8 @@ uint32_t sfz::Synth::getPreloadSize() const noexcept
void sfz::Synth::enableFreeWheeling() noexcept
{
if (!freeWheeling) {
freeWheeling = true;
DBG("Enabling freewheeling");
freeWheeling = true;
DBG("Enabling freewheeling");
}
}
void sfz::Synth::disableFreeWheeling() noexcept

View file

@ -189,8 +189,8 @@ public:
/**
* @brief Send a note on event to the synth
*
* @param delay the delay at which the event occurs; this should be lower than the size of
* the block in the next call to renderBlock().
* @param delay the delay at which the event occurs; this should be lower
* than the size of the block in the next call to renderBlock().
* @param channel the midi channel for the event
* @param noteNumber the midi note number
* @param velocity the midi note velocity
@ -199,8 +199,8 @@ public:
/**
* @brief Send a note off event to the synth
*
* @param delay the delay at which the event occurs; this should be lower than the size of
* the block in the next call to renderBlock().
* @param delay the delay at which the event occurs; this should be lower
* than the size of the block in the next call to renderBlock().
* @param channel the midi channel for the event
* @param noteNumber the midi note number
* @param velocity the midi note velocity
@ -219,8 +219,9 @@ public:
/**
* @brief Send a pitch bend event to the synth
*
* @param delay the delay at which the event occurs; this should be lower than the size of
* the block in the next call to renderBlock().
* @param delay the delay at which the event occurs; this should be lower
* than the size of the block in the next call to
* renderBlock().
* @param channel the midi channel for the event
* @param pitch the pitch value
*/
@ -244,12 +245,14 @@ public:
*/
void tempo(int delay, float secondsPerQuarter) noexcept;
/**
* @brief Render an block of audio data in the buffer. This call will reset the synth
* in its waiting state for the next batch of events. The size of the block is integrated
* in the AudioSpan object. You can build an AudioSpan implicitely from a large number
* of source objects; check the AudioSpan reference for more precision.
* @brief Render an block of audio data in the buffer. This call will reset
* the synth in its waiting state for the next batch of events. The size of
* the block is integrated in the AudioSpan object. You can build an
* AudioSpan implicitely from a large number of source objects; check the
* AudioSpan reference for more precision.
*
* @param buffer the buffer to write the next block into; this should be a stereo buffer.
* @param buffer the buffer to write the next block into; this should be a
* stereo buffer.
*/
void renderBlock(AudioSpan<float> buffer) noexcept;
@ -325,7 +328,18 @@ public:
*/
int getAllocatedBytes() const noexcept { return Buffer<float>::counter().getTotalBytes(); }
/**
* @brief Enable freewheeling on the synth. This will wait for background
* loaded files to finish loading before each render callback to ensure that
* there will be no dropouts.
*
*/
void enableFreeWheeling() noexcept;
/**
* @brief Disable freewheeling on the synth. You should disable freewheeling
* before live use of the plugin otherwise the audio thread will lock.
*
*/
void disableFreeWheeling() noexcept;
protected:
/**