Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
sample_key_map.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstddef>
4#include <cstdint>
5#include <optional>
6
8
9namespace pulp::audio {
10
12 int root_note = 60;
13 int lowest_note = 0;
14 int highest_note = 127;
15 double keytrack_cents_per_key = 100.0;
17};
18
20 bool valid = false;
21 std::uint32_t slice_index = 0;
23};
24
26public:
27 static bool config_valid(const SampleKeyMapConfig& config) noexcept;
28
29 bool configure(const SampleKeyMapConfig& config) noexcept;
30 const SampleKeyMapConfig& config() const noexcept { return config_; }
31
32 bool accepts_note(int note) const noexcept;
33 double semitone_offset_for_note(int note,
34 double tune_semitones = 0.0) const noexcept;
35 double pitch_ratio_for_note(int note,
36 double tune_semitones = 0.0) const noexcept;
37 double playback_rate_for_note(int note,
38 double source_sample_rate,
39 double host_sample_rate,
40 double tune_semitones = 0.0) const noexcept;
41 std::optional<std::uint32_t> slice_index_for_note(
42 int note,
43 std::size_t slice_count) const noexcept;
45 int note,
46 const SliceMap& map) const noexcept;
47
48private:
49 SampleKeyMapConfig config_;
50};
51
52} // namespace pulp::audio
Definition sample_key_map.hpp:25
const SampleKeyMapConfig & config() const noexcept
Definition sample_key_map.hpp:30
static bool config_valid(const SampleKeyMapConfig &config) noexcept
SampleKeySliceResolution resolve_slice_for_note(int note, const SliceMap &map) const noexcept
double playback_rate_for_note(int note, double source_sample_rate, double host_sample_rate, double tune_semitones=0.0) const noexcept
double pitch_ratio_for_note(int note, double tune_semitones=0.0) const noexcept
std::optional< std::uint32_t > slice_index_for_note(int note, std::size_t slice_count) const noexcept
double semitone_offset_for_note(int note, double tune_semitones=0.0) const noexcept
bool configure(const SampleKeyMapConfig &config) noexcept
bool accepts_note(int note) const noexcept
Definition analyzer_provider.hpp:12
STL namespace.
Definition sample_key_map.hpp:11
int first_slice_note
Definition sample_key_map.hpp:16
double keytrack_cents_per_key
Definition sample_key_map.hpp:15
int root_note
Definition sample_key_map.hpp:12
int highest_note
Definition sample_key_map.hpp:14
int lowest_note
Definition sample_key_map.hpp:13
Definition sample_key_map.hpp:19
SliceRegion region
Definition sample_key_map.hpp:22
std::uint32_t slice_index
Definition sample_key_map.hpp:21
bool valid
Definition sample_key_map.hpp:20
Definition slice_map.hpp:30
Definition slice_map.hpp:24