Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
voicing.hpp File Reference
#include <pulp/music/chord.hpp>
#include <algorithm>
#include <array>
#include <bit>
#include <compare>
#include <cstddef>
#include <cstdint>
#include <cstdlib>
#include <limits>
#include <optional>
#include <span>

Go to the source code of this file.

Classes

struct  pulp::music::MidiRange
struct  pulp::music::VoicingConstraints
class  pulp::music::Voicing
struct  pulp::music::detail::VoicingAccess

Namespaces

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

Enumerations

enum class  pulp::music::VoicingMode : std::uint8_t {
  pulp::music::closed = 0 , pulp::music::open = 1 , pulp::music::drop2 = 2 , pulp::music::drop3 = 3 ,
  pulp::music::spread = 4
}

Functions

std::optional< Voicing > pulp::music::detail::solve_ordered_voicing (std::span< const PitchClass > pitch_classes, std::span< const int > targets, MidiRange range, int minimum_spacing, int maximum_spacing) noexcept
std::optional< Voicing > pulp::music::detail::solve_unordered_voice_leading (std::span< const PitchClass > pitch_classes, std::span< const int > previous, MidiRange range) noexcept
void pulp::music::detail::sort_parallel (std::array< int, ChordFormula::kMaxNotes > &pitches, std::array< PitchClass, ChordFormula::kMaxNotes > &pitch_classes, std::size_t count) noexcept
std::optional< Voicing > pulp::music::voice_chord (int root_midi, const ChordFormula &formula, VoicingConstraints constraints={})
std::optional< Voicing > pulp::music::minimum_motion_voice_leading (std::span< const int > previous, PitchClass target_root, const ChordFormula &formula, MidiRange range={})