mirror of
https://codeberg.org/armin/ambivalence.git
synced 2026-09-01 04:10:48 +02:00
init
This commit is contained in:
parent
29c860587e
commit
42cf8432bf
57 changed files with 5782 additions and 0 deletions
59
Source/PresetManager.h
Normal file
59
Source/PresetManager.h
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
#pragma once
|
||||
#include <JuceHeader.h>
|
||||
|
||||
class FDNReverbAudioProcessor;
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// PresetManager
|
||||
// -----------------------------------------------------------------------------
|
||||
// preset file manage .
|
||||
//
|
||||
// save location : ~/Documents/Ambivalence/Presets/*.ambpreset
|
||||
// : APVTS getStateInformation/setStateInformation
|
||||
// -> existing save fully reused , minimizes added code
|
||||
//
|
||||
// real-time safety :
|
||||
// - file I/O all message thread (UI) assumed to be called
|
||||
// - processBlock not involved at all
|
||||
// -----------------------------------------------------------------------------
|
||||
class PresetManager
|
||||
{
|
||||
public:
|
||||
explicit PresetManager(FDNReverbAudioProcessor& processor);
|
||||
|
||||
// --- preset operations ---
|
||||
bool savePreset(const juce::String& name);
|
||||
bool loadPreset(const juce::String& name);
|
||||
bool deletePreset(const juce::String& name);
|
||||
|
||||
// --- navigation ---
|
||||
void loadPrevPreset();
|
||||
void loadNextPreset();
|
||||
|
||||
// --- state access ---
|
||||
juce::StringArray getPresetNames() const noexcept { return presetNames; }
|
||||
// --- after changes ---
|
||||
juce::String getCurrentPresetName() const noexcept { return currentPresetName; }
|
||||
void setCurrentPresetName(const juce::String& name) noexcept { currentPresetName = name; } // * added
|
||||
int getCurrentPresetIndex() const noexcept;
|
||||
|
||||
bool hasPresets() const noexcept { return !presetNames.isEmpty(); }
|
||||
|
||||
// --- folder access ---
|
||||
juce::File getPresetsFolder() const;
|
||||
|
||||
// --- UI update callback ---
|
||||
std::function<void()> onPresetListChanged;
|
||||
std::function<void(const juce::String&)> onPresetLoaded;
|
||||
|
||||
private:
|
||||
void refreshPresetList();
|
||||
juce::File getPresetFile(const juce::String& name) const;
|
||||
|
||||
FDNReverbAudioProcessor& processor;
|
||||
juce::StringArray presetNames;
|
||||
juce::String currentPresetName;
|
||||
|
||||
static constexpr const char* kExtension = ".ambpreset";
|
||||
static constexpr const char* kSubFolder = "Ambivalence/Presets";
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue