1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
//! Processor combinators for chaining DSP operations.
pub use ;
/// Combines processors into a serial signal chain.
///
/// Preferred macro for building DSP chains in Wavecraft.
/// Use `SignalChain!` for consistency with the `wavecraft_plugin!` DSL.
///
/// # Single Processor
///
/// ```rust,no_run
/// use wavecraft_dsp::{Processor, Transport};
/// use wavecraft_dsp::SignalChain;
///
/// #[derive(Default)]
/// struct Noop;
///
/// impl Processor for Noop {
/// type Params = ();
///
/// fn process(&mut self, _buffer: &mut [&mut [f32]], _transport: &Transport, _params: &Self::Params) {}
/// }
///
/// type Single = SignalChain![Noop];
/// ```
///
/// # Multiple Processors
///
/// ```rust,no_run
/// use wavecraft_dsp::{Processor, SignalChain, Transport};
///
/// #[derive(Default)]
/// struct A;
/// #[derive(Default)]
/// struct B;
///
/// impl Processor for A {
/// type Params = ();
///
/// fn process(&mut self, _buffer: &mut [&mut [f32]], _transport: &Transport, _params: &Self::Params) {}
/// }
///
/// impl Processor for B {
/// type Params = ();
///
/// fn process(&mut self, _buffer: &mut [&mut [f32]], _transport: &Transport, _params: &Self::Params) {}
/// }
///
/// type Multiple = SignalChain![A, B];
/// ```
/// Deprecated compatibility alias for `SignalChain!`.
///
/// Prefer `SignalChain!` for all new code and migrations.
/// This alias remains available for backward compatibility and is
/// scheduled for removal in `0.10.0`.
///
/// # Migration
///
/// ```rust,no_run
/// use wavecraft_dsp::SignalChain;
///
/// #[derive(Default)]
/// struct Noop;
///
/// // Old (deprecated):
/// // type MyChain = Chain![Noop];
///
/// // New (recommended):
/// type MyChain = SignalChain![Noop];
/// ```