SignalIn

The in-order crossing: a `[C, T]` signal frame with `sfreq` enters as `C` audio channels, resampled to the rate. A frame with no `sfreq` enters one sample per sample, so a control value is held until the next.

SignalIn rs
input
out
Type name
audio:SignalIn
Plane
audio
Tags
control
Language
rust
Tier
native
Bundle
audio
Source
node-bundles/audio/SignalIn.rs
Availability
available

Slots

SlotDirectionType
inputinputARRAY
outoutputAUDIO

Parameters

This node declares no parameters of its own.

Source

The current source of this node, as it stands in the goofi repository at node-bundles/audio/SignalIn.rs.

node-bundles/audio/SignalIn.rs
use goofi_audio_sdk::goofi_core::SlotType;
use goofi_audio_sdk::{AudioNode, Block, Manifest, OutputDecl, SlotDecl, Tag};

static INS: &[SlotDecl] =
    &[SlotDecl { name: "input", kind: SlotType::Array, trigger_process: false, multi: false, required: false }];
static OUTS: &[OutputDecl] = &[OutputDecl { name: "out", kind: SlotType::Audio }];

static MANIFEST: Manifest = Manifest {
    tags: &[Tag::Control],
    doc: "The in-order crossing: a `[C, T]` signal frame with `sfreq` enters as `C` audio channels, \
          resampled to the rate. A frame with no `sfreq` enters one sample per sample, so a control \
          value is held until the next.",
    inputs: INS,
    outputs: OUTS,
    params: &[],
};

#[derive(Default)]
struct SignalIn;

impl AudioNode for SignalIn {
    fn prepare(&mut self, _rate: f64) {}

    fn process(&mut self, b: &mut Block<'_>) {
        let input = &b.ins[0];
        let out = &mut b.outs[0];
        for c in 0..out.channels() as usize {
            out.chan_mut(c).copy_from_slice(input.chan(c));
        }
    }
}

goofi_audio_sdk::export!(SignalIn, MANIFEST);

← All nodes

This reference describes goofi 3.1.0(537cd394), generated from a running instance on 2026-09-06.