Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
wavetable_authoring.hpp
Go to the documentation of this file.
1#pragma once
2
9
10#include <pulp/audio/buffer.hpp>
13
14#include <cstdint>
15#include <optional>
16#include <string>
17#include <vector>
18
19namespace pulp::audio {
20
21inline constexpr std::uint32_t kWavetableAuthoringRecipeSchemaVersion = 1;
22inline constexpr std::uint64_t kWavetableAuthoringMaximumSourceFrames = 1u << 20;
23inline constexpr std::uint64_t kWavetableAuthoringMaximumAnalysisFrames = 1u << 16;
24inline constexpr std::uint64_t kWavetableAuthoringMaximumCycleSearchWork = 1u << 25;
25
38
40 std::uint64_t start_frame = 0;
41 std::uint32_t length_frames = 0;
42};
43
46 std::optional<WavetableCycleSelection> explicit_cycle;
48 std::uint32_t table_length = 2048;
49 std::uint32_t num_bands = 10;
50 double reference_sample_rate = 48000.0;
51 std::uint32_t guard_harmonics = 1;
52 double normalize_target_dbfs = -1.0;
55 double maximum_seam_error = 0.1;
56};
57
63
88
92 const WavetableAuthoringRecipe& recipe = {},
93 const WavetableAuthoringProvenance& provenance = {});
94
95} // namespace pulp::audio
Non-owning view over multi-channel audio sample data.
Definition buffer.hpp:30
Definition analyzer_provider.hpp:12
@ AllocationFailed
Definition finite_time_stretch.hpp:27
WavetableCompileStatus
Definition wavetable_authoring.hpp:26
@ InvalidSource
Definition wavetable_authoring.hpp:28
@ FftUnavailable
Definition wavetable_authoring.hpp:35
@ InvalidRecipe
Definition wavetable_authoring.hpp:29
@ InvalidExplicitCycle
Definition wavetable_authoring.hpp:30
@ NonFiniteResult
Definition wavetable_authoring.hpp:36
@ Ok
Definition wavetable_authoring.hpp:27
constexpr std::uint64_t kWavetableAuthoringMaximumAnalysisFrames
Definition wavetable_authoring.hpp:23
constexpr std::uint64_t kWavetableAuthoringMaximumCycleSearchWork
Definition wavetable_authoring.hpp:24
@ SizeOverflow
Definition sample_heritage_engine.hpp:44
@ Ok
Definition loop_types.hpp:34
constexpr std::uint32_t kWavetableAuthoringRecipeSchemaVersion
Definition wavetable_authoring.hpp:21
constexpr std::uint64_t kWavetableAuthoringMaximumSourceFrames
Definition wavetable_authoring.hpp:22
WavetableCompileResult compile_wavetable(BufferView< const float > source, double source_sample_rate, const WavetableAuthoringRecipe &recipe={}, const WavetableAuthoringProvenance &provenance={})
Compile one mono source buffer into an owned band stack for WavetableT.
@ InvalidSource
Definition finite_time_stretch.hpp:12
@ NoReliableCycle
Definition sample_heritage_record_commit.hpp:35
@ InsufficientSignal
Definition sample_heritage_record_commit.hpp:34
Definition sample_heritage_record_commit.hpp:38
Definition sample_heritage_record_commit.hpp:57
Definition wavetable_authoring.hpp:58
SampleHeritageRecordProvenance source
Definition wavetable_authoring.hpp:59
std::string rights_note
Definition wavetable_authoring.hpp:61
std::string license_id
Definition wavetable_authoring.hpp:60
Definition wavetable_authoring.hpp:44
double maximum_seam_error
Maximum accepted adjacent-period seam error after normalization by the selected cycle's RMS.
Definition wavetable_authoring.hpp:55
std::uint32_t schema_version
Definition wavetable_authoring.hpp:45
std::uint32_t guard_harmonics
Definition wavetable_authoring.hpp:51
std::optional< WavetableCycleSelection > explicit_cycle
Definition wavetable_authoring.hpp:46
double normalize_target_dbfs
Definition wavetable_authoring.hpp:52
std::uint32_t table_length
Definition wavetable_authoring.hpp:48
std::uint32_t num_bands
Definition wavetable_authoring.hpp:49
double reference_sample_rate
Definition wavetable_authoring.hpp:50
SampleHeritageAutoCycleOptions automatic_cycle
Definition wavetable_authoring.hpp:47
Definition wavetable_authoring.hpp:64
WavetableCompileStatus status
Definition wavetable_authoring.hpp:65
WavetableCycleSelection chosen_cycle
Definition wavetable_authoring.hpp:69
std::vector< signal::WavetableEntry > bands
Definition wavetable_authoring.hpp:66
WavetableAuthoringRecipe recipe
Definition wavetable_authoring.hpp:67
double source_seam_level_error
Definition wavetable_authoring.hpp:73
bool valid() const noexcept
Definition wavetable_authoring.hpp:84
WavetableAuthoringProvenance provenance
Definition wavetable_authoring.hpp:68
std::string source_audio_sha256
Canonical source digest: domain tag, little-endian dimensions and sample rate, then channel-major IEE...
Definition wavetable_authoring.hpp:77
std::string materialized_table_sha256
Canonical digest of the returned band snapshot: domain tag, ordered ceilings, dimensions,...
Definition wavetable_authoring.hpp:82
double cycle_correlation
Estimator correlation for automatic selection; 0 for an explicit cycle, where no correlation estimate...
Definition wavetable_authoring.hpp:72
double source_seam_slope_error
Definition wavetable_authoring.hpp:74
Definition wavetable_authoring.hpp:39
std::uint32_t length_frames
Definition wavetable_authoring.hpp:41
std::uint64_t start_frame
Definition wavetable_authoring.hpp:40
Wavetable oscillator with band-switching + bank morphing.