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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#![doc = include_str!("../README.md")]
mod context;
pub use context::*;
mod graph;
pub use graph::*;
mod node;
pub use node::{Input, Node};
pub use node::{
oscillator,
filter,
effect,
envelope,
operator,
sequencer,
signal,
delay,
compound,
synth
};
mod buffer;
pub use buffer::Buffer;
#[cfg(feature = "node-sampling")]
pub use node::{sampling};
#[cfg(feature = "node-dynamic")]
pub use node::{dynamic};
#[cfg(feature = "node-boxed")]
pub use node::{BoxedNode, BoxedNodeSend};
#[cfg(feature = "node-sum")]
pub use node::{Sum, Sum2};
#[cfg(feature = "node-pass")]
pub use node::{Pass};
use hashbrown::HashMap;
#[macro_export]
macro_rules! impl_to_boxed_nodedata {
() => {
pub fn to_boxed_nodedata<const N: usize>(self, channels: usize) -> NodeData<BoxedNodeSend<N>, N> {
NodeData::multi_chan_node(channels, BoxedNodeSend::<N>::new( self ) )
}
};
}
#[derive(Debug, Clone)]
pub enum Message {
SetToNumber(u8, f32),
SetToNumberList(u8, Vec<f32>),
SetToSymbol(u8, String),
SetToSamples(u8, (&'static [f32], usize, usize)),
SetSamplePattern(Vec<(String, f32)>, f32, HashMap<String, (&'static [f32], usize, usize)>),
SetPattern(Vec<(f32, f32)>, f32),
SetToSeq(u8, Vec::<(f32, GlicolPara)>),
SetRefOrder(HashMap<String, usize>),
SetBPM(f32),
SetSampleRate(usize),
MainInput(petgraph::graph::NodeIndex),
SidechainInput(petgraph::graph::NodeIndex),
Index(usize),
IndexOrder(usize, usize),
ResetOrder,
SetParam(u8, GlicolPara),
SetToBool(u8, bool)
}
#[derive(Debug, Clone, PartialEq, PartialOrd)]
pub enum GlicolPara {
Number(f32),
Bool(bool),
NumberList(Vec<f32>),
Reference(String),
SampleSymbol(String), Symbol(String),
Sequence(Vec::<(f32, GlicolPara)>),
Pattern(Vec::<(GlicolPara, f32)>, f32),
Event(Vec::<(GlicolPara, f32)>),
Points(Vec::<(GlicolPara, GlicolPara)>),
Time(Vec::<GlicolPara>),
Bar(f32),
Second(f32),
Millisecond(f32),
}