Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pattern_development.hpp File Reference
#include <pulp/timebase/coordinate_random.hpp>
#include <array>
#include <compare>
#include <cstddef>
#include <cstdint>
#include <optional>
#include <span>

Go to the source code of this file.

Classes

struct  pulp::music::PatternEvent
 One uniquely identified onset in a development pattern. More...
class  pulp::music::DevelopmentPattern< MaxEvents >
 Fixed-capacity, onset-ordered collection used by development operations. More...
struct  pulp::music::PatternDevelopmentResult< MaxEvents >
 Pattern-development output paired with an explicit result code. More...
struct  pulp::music::DensitySelection
 Parameters for deterministic density selection. More...
struct  pulp::music::RegionalFillSelection
 Parameters for deterministic replacement within a half-open region. More...
struct  pulp::music::PatternMorphSelection
 Parameters for deterministic interpolation between two patterns. More...

Namespaces

namespace  pulp
namespace  pulp::music
namespace  pulp::music::detail

Typedefs

using pulp::music::PatternEventId = std::uint64_t
 Stable, nonzero identity for an event across pattern transformations.

Enumerations

enum class  pulp::music::PatternEventRole : std::uint8_t { pulp::music::anchor = 0 , pulp::music::primary , pulp::music::ornament , pulp::music::fill }
 Describes how an event participates in density, fill, and morph operations. More...
enum class  pulp::music::PatternDevelopmentError : std::uint8_t {
  pulp::music::none = 0 , pulp::music::capacity_exceeded , pulp::music::zero_event_id , pulp::music::duplicate_event_id ,
  pulp::music::duplicate_onset , pulp::music::invalid_role , pulp::music::accent_out_of_range , pulp::music::invalid_set_operation ,
  pulp::music::conflicting_event , pulp::music::density_out_of_range , pulp::music::density_below_anchor_count , pulp::music::invalid_region ,
  pulp::music::morph_amount_out_of_range
}
 Result codes returned by bounded pattern-development operations. More...
enum class  pulp::music::PatternSetOperation : std::uint8_t { pulp::music::set_union = 0 , pulp::music::intersection , pulp::music::difference , pulp::music::symmetric_difference }
 Supported onset-keyed set operations. More...

Functions

constexpr bool pulp::music::detail::valid_pattern_event_role (PatternEventRole role) noexcept
constexpr bool pulp::music::detail::event_less (const PatternEvent &lhs, const PatternEvent &rhs) noexcept
constexpr std::uint64_t pulp::music::detail::event_priority (std::uint64_t seed, timebase::RandomCoordinate coordinate, const PatternEvent &event) noexcept
constexpr std::uint64_t pulp::music::detail::event_threshold (std::uint64_t seed, timebase::RandomCoordinate coordinate, const PatternEvent &event) noexcept
constexpr std::uint64_t pulp::music::detail::positive_distance (std::int64_t low, std::int64_t high) noexcept
constexpr std::int64_t pulp::music::detail::add_unsigned (std::int64_t value, std::uint64_t amount) noexcept
constexpr std::int64_t pulp::music::detail::subtract_unsigned (std::int64_t value, std::uint64_t amount) noexcept
constexpr std::uint64_t pulp::music::detail::scale_distance (std::uint64_t distance, std::uint16_t amount) noexcept
constexpr std::int64_t pulp::music::detail::interpolate_integer (std::int64_t from, std::int64_t to, std::uint16_t amount) noexcept
constexpr PatternEventId pulp::music::make_pattern_event_id (std::uint64_t seed, timebase::RandomCoordinate coordinate) noexcept
 Produces a stable nonzero ID from a seed and musical coordinate.
template<std::size_t MaxEvents = 64>
constexpr PatternDevelopmentResult< MaxEvents > pulp::music::pattern_set (const DevelopmentPattern< MaxEvents > &lhs, const DevelopmentPattern< MaxEvents > &rhs, PatternSetOperation operation) noexcept
 Applies an onset-keyed set operation to two patterns.
template<std::size_t MaxEvents = 64>
constexpr PatternDevelopmentResult< MaxEvents > pulp::music::select_pattern_density (const DevelopmentPattern< MaxEvents > &source, DensitySelection selection) noexcept
 Selects an exact event count while retaining every anchor.
template<std::size_t MaxEvents = 64>
constexpr PatternDevelopmentResult< MaxEvents > pulp::music::apply_regional_fill (const DevelopmentPattern< MaxEvents > &base, const DevelopmentPattern< MaxEvents > &candidates, RegionalFillSelection selection) noexcept
 Applies candidate events within a selected half-open region.
template<std::size_t MaxEvents = 64>
constexpr PatternDevelopmentResult< MaxEvents > pulp::music::morph_patterns (const DevelopmentPattern< MaxEvents > &a, const DevelopmentPattern< MaxEvents > &b, PatternMorphSelection selection) noexcept
 Morphs two patterns using exact integer interpolation and stable thresholds.