Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
forge_sequencing_catalog.hpp File Reference
#include <pulp/host/forge_param_descriptor.hpp>
#include <pulp/host/custom_node_type.hpp>
#include <pulp/signal/modular_sequencing.hpp>
#include <algorithm>
#include <array>
#include <cmath>
#include <cstddef>
#include <cstdint>

Go to the source code of this file.

Classes

struct  pulp::host::sequencing::stage_seq::Stage
 One stage of the composed pattern — the realization payload. More...
struct  pulp::host::sequencing::stage_seq::Instance
struct  pulp::host::sequencing::cartesian::Instance
struct  pulp::host::sequencing::rungler::Instance
struct  pulp::host::sequencing::quantize::Instance
struct  pulp::host::sequencing::gate_logic::Instance
struct  pulp::host::sequencing::prob_gate::Instance

Namespaces

namespace  pulp
namespace  pulp::host
 Bounded event contracts shared by host ingress and graph-authored nodes.
namespace  pulp::host::sequencing
namespace  pulp::host::sequencing::stage_seq
namespace  pulp::host::sequencing::cartesian
namespace  pulp::host::sequencing::rungler
namespace  pulp::host::sequencing::quantize
namespace  pulp::host::sequencing::gate_logic
namespace  pulp::host::sequencing::prob_gate

Typedefs

using pulp::host::sequencing::stage_seq::Seq = signal::StageSeq
using pulp::host::sequencing::stage_seq::Pattern = std::array<Stage, static_cast<std::size_t>(Seq::kMaxStages)>
using pulp::host::sequencing::cartesian::Walk = signal::CartesianWalk
using pulp::host::sequencing::cartesian::Grid = std::array<float, static_cast<std::size_t>(Walk::kMaxDim * Walk::kMaxDim)>
using pulp::host::sequencing::rungler::Rung = signal::Rungler
using pulp::host::sequencing::quantize::Quant = signal::QuantizeScale
using pulp::host::sequencing::gate_logic::Logic = signal::GateLogic
using pulp::host::sequencing::prob_gate::Prob = signal::ProbGate

Functions

bool pulp::host::sequencing::param_high (float v)
 Reads a 0/1 param as a boolean, at the kit's rising threshold so the convention is the same one the ports use.
Pattern pulp::host::sequencing::stage_seq::default_pattern ()
 The default composed pattern: a rising major scale, one clock per stage, one re-articulated gate per clock.
float pulp::host::sequencing::stage_seq::stage_seq_worst_case_gain ()
 Worst-case linear gain for the Forge registry (series law 8).
float pulp::host::sequencing::stage_seq::stage_seq_pitch_bound_v (const Pattern &pattern)
 Largest absolute pitch, in volts, the node can emit for a given pattern.
CustomNodeType pulp::host::sequencing::stage_seq::make_stage_seq_node (Pattern pattern=default_pattern(), std::uint32_t seed=Seq::kRandomSeed)
 pattern and seed are registration-time: the composed notes and which random performance this artifact plays.
ForgeNodeDescriptor pulp::host::sequencing::stage_seq::descriptor ()
Grid pulp::host::sequencing::cartesian::default_grid ()
 The default grid: a rising chromatic ramp in volts, so an unconfigured node walks an audible, obviously-ordered sequence rather than silence — which makes "is this thing clocked at all" answerable by ear.
float pulp::host::sequencing::cartesian::cartesian_walk_worst_case_gain ()
 Worst-case linear gain for the Forge registry (series law 8).
float pulp::host::sequencing::cartesian::cartesian_walk_cv_bound_v (const Grid &grid)
 Largest absolute CV, in volts, the node can emit for a given grid.
CustomNodeType pulp::host::sequencing::cartesian::make_cartesian_walk_node (Grid grid=default_grid(), bool row_major=false)
 grid is the composed pattern and row_major is the access topology — the latter picks the registered type id, because it changes whether input port 1 is read at all.
ForgeNodeDescriptor pulp::host::sequencing::cartesian::descriptor ()
float pulp::host::sequencing::rungler::rungler_worst_case_gain ()
 Worst-case linear gain for the Forge registry (series law 8).
float pulp::host::sequencing::rungler::rungler_output_bound_v ()
 The largest absolute output the node can emit, in volts: the ceiling of the range_v param, because a baked param can be automated anywhere in range.
CustomNodeType pulp::host::sequencing::rungler::make_rungler_node (int reg_bits=Rung::kDefaultBits, std::uint32_t seed_pattern=Rung::kSeedPattern)
 reg_bits and seed_pattern are registration-time.
ForgeNodeDescriptor pulp::host::sequencing::rungler::descriptor ()
float pulp::host::sequencing::quantize::quantize_scale_worst_case_gain ()
 Worst-case linear gain for the Forge registry (series law 8).
float pulp::host::sequencing::quantize::quantize_scale_mask_offset_bound_v ()
 The additive ceiling of scale-mask mode, in volts: the rounding boundary plus the widest hysteresis window plus the furthest a snap can travel (six semitones, from a mask with a single bit set).
CustomNodeType pulp::host::sequencing::quantize::make_quantize_scale_node ()
ForgeNodeDescriptor pulp::host::sequencing::quantize::descriptor ()
float pulp::host::sequencing::gate_logic::gate_logic_worst_case_gain ()
 Worst-case linear gain for the Forge registry (series law 8).
CustomNodeType pulp::host::sequencing::gate_logic::make_gate_logic_node ()
 Two outputs, because these operations come in complementary pairs and the complement is free: with op set to AND, output 1 IS the NAND of the same inputs.
ForgeNodeDescriptor pulp::host::sequencing::gate_logic::descriptor ()
float pulp::host::sequencing::prob_gate::prob_gate_worst_case_gain ()
 Worst-case linear gain for the Forge registry (series law 8).
CustomNodeType pulp::host::sequencing::prob_gate::make_prob_gate_node (std::uint32_t seed=Prob::kProbSeed)
 seed is registration-time (law 2): changing the seed is how you roll again, and that is a composition decision rather than an automation lane.
ForgeNodeDescriptor pulp::host::sequencing::prob_gate::descriptor ()

Variables

constexpr float pulp::host::sequencing::kGateHigh = 1.0f
 Level a gate/clock output is driven to.
constexpr float pulp::host::sequencing::kGateLow = 0.0f
constexpr const char * pulp::host::sequencing::stage_seq::kTypeId = "sequencing.stage_seq"
constexpr state::ParamID pulp::host::sequencing::stage_seq::kRun = 1
constexpr state::ParamID pulp::host::sequencing::stage_seq::kNumStages = 2
constexpr state::ParamID pulp::host::sequencing::stage_seq::kDirection = 3
constexpr state::ParamID pulp::host::sequencing::stage_seq::kSlideMs = 4
constexpr state::ParamID pulp::host::sequencing::stage_seq::kRepeatDutyPct = 5
constexpr const char * pulp::host::sequencing::cartesian::kTypeId = "sequencing.cartesian_walk"
 Independent X and Y — the documented René behaviour, and the default.
constexpr const char * pulp::host::sequencing::cartesian::kRowMajorTypeId = "sequencing.cartesian_walk_row_major"
 Row-major — an X wrap carries into Y, and the Y clock port is not read.
constexpr state::ParamID pulp::host::sequencing::cartesian::kRun = 1
constexpr state::ParamID pulp::host::sequencing::cartesian::kGridW = 2
constexpr state::ParamID pulp::host::sequencing::cartesian::kGridH = 3
constexpr state::ParamID pulp::host::sequencing::cartesian::kXOffset = 4
constexpr state::ParamID pulp::host::sequencing::cartesian::kYOffset = 5
constexpr const char * pulp::host::sequencing::rungler::kTypeId = "sequencing.rungler"
constexpr state::ParamID pulp::host::sequencing::rungler::kRun = 1
constexpr state::ParamID pulp::host::sequencing::rungler::kDacBits = 2
constexpr state::ParamID pulp::host::sequencing::rungler::kFeedbackTap = 3
constexpr state::ParamID pulp::host::sequencing::rungler::kRangeV = 4
constexpr state::ParamID pulp::host::sequencing::rungler::kExternalData = 5
constexpr state::ParamID pulp::host::sequencing::rungler::kDataIn = 6
constexpr const char * pulp::host::sequencing::quantize::kTypeId = "sequencing.quantize_scale"
constexpr state::ParamID pulp::host::sequencing::quantize::kMode = 1
constexpr state::ParamID pulp::host::sequencing::quantize::kEdoN = 2
constexpr state::ParamID pulp::host::sequencing::quantize::kScaleMask = 3
constexpr state::ParamID pulp::host::sequencing::quantize::kRootPc = 4
constexpr state::ParamID pulp::host::sequencing::quantize::kHystCents = 5
constexpr state::ParamID pulp::host::sequencing::quantize::kReset = 6
constexpr const char * pulp::host::sequencing::gate_logic::kTypeId = "sequencing.gate_logic"
constexpr state::ParamID pulp::host::sequencing::gate_logic::kOp = 1
constexpr const char * pulp::host::sequencing::prob_gate::kTypeId = "sequencing.prob_gate"
constexpr state::ParamID pulp::host::sequencing::prob_gate::kProbabilityPct = 1
constexpr state::ParamID pulp::host::sequencing::prob_gate::kReset = 2