Ridge-Lab/moonstretch/stretch does not have a README file

    Processor

    pub struct Processor {
    channels : Int
    tempo : Double
    hop : Int
    search : Int
    input : Array[Double]
    base : Int64
    received : Int64
    emitted : Int64
    tail : Array[Double]
    started : Bool
    finished : Bool
    }

    Streaming WSOLA. Channels share one alignment offset. The analysis clock is anchored to output frames rather than previous correlation winners.

    Processor::buffered_frames

    fn Processor::buffered_frames(self : Processor) -> Int

    Retained PCM including the overlap tail, measured in frames.

    Processor::finish

    fn Processor::finish(self : Processor) -> Array[Double]

    Drain with zero extension to exactly round(input/tempo) frames. Repeated finish calls return empty output; reset starts a new stream.

    Processor::input_frames

    fn Processor::input_frames(self : Processor) -> Int64

    Processor::latency_frames

    fn Processor::latency_frames(self : Processor) -> Int

    Startup lookahead in input frames; identity has no latency.

    Processor::output_frames

    fn Processor::output_frames(self : Processor) -> Int64

    Processor::push

    fn Processor::push(self : Processor, samples : Array[Double]) -> Array[Double] raise
    AudioError

    Consume complete frames, returning available PCM. Validation errors leave state unchanged. A large input is internally consumed in short blocks.

    Processor::reset

    fn Processor::reset(self : Processor) -> Unit

    Start another stream with unchanged format and tempo.

    new

    fn new(sample_rate : Int, channels : Int, tempo : Double) -> Processor raise
    AudioError

    A tempo of 2 halves duration without changing the intended pitch.

    Source Files

    Powered by MoonBit

    Site sourceReport issueModulesSkillsBuild queueStatistics

    © 2026 mooncakes.io