Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
transport.hpp File Reference
#include <pulp/audio/rt_safety_contract.hpp>
#include <pulp/playback/tempo_sync.hpp>
#include <pulp/runtime/seqlock.hpp>
#include <pulp/timebase/compiled_meter_map.hpp>
#include <pulp/timebase/compiled_tempo_map.hpp>
#include <pulp/timebase/loop_region.hpp>
#include <array>
#include <cstdint>
#include <type_traits>

Go to the source code of this file.

Classes

struct  pulp::playback::TransportRange
struct  pulp::playback::TransportSnapshot
struct  pulp::playback::TransportPlayhead
 Where the transport is, published for a reader that is not the audio thread. More...
struct  pulp::playback::TransportLoopState
 The transport's accepted loop control state. More...
struct  pulp::playback::MasterTransportConfig
class  pulp::playback::MasterTransport
 Master musical transport with one control-thread writer and one audio-thread consumer. More...

Namespaces

namespace  pulp
namespace  pulp::playback
namespace  pulp::playback::detail

Typedefs

using pulp::playback::MeterSignature = timebase::MeterSignature
using pulp::playback::LoopRegion = timebase::LoopRegion
 The loop is a pair of document positions, so the timebase owns it and every rung that describes a loop names the same type.

Enumerations

enum class  pulp::playback::TransportError {
  pulp::playback::None , pulp::playback::NotPrepared , pulp::playback::InvalidMeter , pulp::playback::InvalidLoop ,
  pulp::playback::LoopTooShortForMaximumBlock , pulp::playback::InvalidFrameCount , pulp::playback::InvalidScrubWindow , pulp::playback::ScrubWindowTooShortForMaximumBlock ,
  pulp::playback::NotScrubbing , pulp::playback::InvalidTempo , pulp::playback::InvalidTempoSyncConfig , pulp::playback::TempoSyncHostTimeRequired ,
  pulp::playback::TempoSyncUnavailable , pulp::playback::InvalidTempoSyncState , pulp::playback::PlaybackEpochExhausted
}

Functions

TransportError pulp::playback::detail::advance_playback_epoch (std::uint64_t &epoch) noexcept
 Advances an epoch without ever wrapping to an aliased identity.
bool pulp::playback::valid_transport_ranges (const TransportSnapshot &transport) noexcept
 Validates the shared structural contract consumed by every block renderer.
long double pulp::playback::host_mapped_document_sample_at_output_offset (const TransportRange &range, const timebase::CompiledTempoMap &tempo_map, std::uint32_t output_offset) noexcept
 Maps an output-frame boundary in a host-beat-mapped range back into the program's document-sample domain.
bool pulp::playback::host_mapped_output_offset_for_tick (const TransportRange &range, timebase::TickPosition document_tick, std::uint32_t &output_offset) noexcept
 Maps an exact program event tick into a half-open host-beat-mapped transport range.