Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
rhythm_relationship.hpp File Reference
#include <pulp/music/pattern.hpp>
#include <compare>
#include <cstddef>
#include <cstdint>
#include <limits>

Go to the source code of this file.

Classes

struct  pulp::music::RhythmDrawCoordinate
struct  pulp::music::RhythmRelationshipConfig
struct  pulp::music::RhythmRelationshipResult< MaxSteps >

Namespaces

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

Enumerations

enum class  pulp::music::RhythmRelationship : std::uint8_t { pulp::music::coincident = 0 , pulp::music::complementary , pulp::music::independent }
enum class  pulp::music::RhythmLengthMapping : std::uint8_t { pulp::music::wrap = 0 , pulp::music::proportional }
enum class  pulp::music::RhythmCollisionPolicy : std::uint8_t { pulp::music::allow_source_overlap = 0 , pulp::music::avoid_source_overlap }
enum class  pulp::music::RhythmDensityPolicy : std::uint8_t { pulp::music::preserve_candidates = 0 , pulp::music::exact_onsets }
enum class  pulp::music::RhythmRelationshipError : std::uint8_t {
  pulp::music::none = 0 , pulp::music::empty_source , pulp::music::empty_target , pulp::music::capacity_exceeded ,
  pulp::music::invalid_relationship , pulp::music::invalid_length_mapping , pulp::music::invalid_collision_policy , pulp::music::invalid_density_policy ,
  pulp::music::insufficient_candidates
}

Functions

constexpr std::uint64_t pulp::music::detail::rhythm_mix (std::uint64_t value) noexcept
constexpr std::uint64_t pulp::music::detail::rhythm_draw (RhythmDrawCoordinate coordinate, std::size_t target_step) noexcept
constexpr bool pulp::music::detail::valid_relationship (RhythmRelationship value) noexcept
constexpr bool pulp::music::detail::valid_length_mapping (RhythmLengthMapping value) noexcept
constexpr bool pulp::music::detail::valid_collision_policy (RhythmCollisionPolicy value) noexcept
constexpr bool pulp::music::detail::valid_density_policy (RhythmDensityPolicy value) noexcept
constexpr std::size_t pulp::music::detail::delayed_step (std::size_t step, std::size_t length, std::int64_t phase_steps) noexcept
constexpr std::size_t pulp::music::detail::multiply_divide_floor (std::size_t multiplicand, std::size_t multiplier, std::size_t divisor) noexcept
template<std::size_t MaxSteps>
constexpr std::size_t pulp::music::detail::mapped_source_step (const BinaryPattern< MaxSteps > &source, const RhythmRelationshipConfig &config, std::size_t target_step) noexcept
template<std::size_t MaxSteps>
constexpr bool pulp::music::detail::relationship_candidate (const BinaryPattern< MaxSteps > &source, const RhythmRelationshipConfig &config, std::size_t target_step) noexcept
template<std::size_t MaxSteps = 64>
constexpr RhythmRelationshipResult< MaxSteps > pulp::music::derive_rhythm_relationship (const BinaryPattern< MaxSteps > &source, const RhythmRelationshipConfig &config) noexcept