-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathsynth-framework-obj-example.txt
More file actions
124 lines (109 loc) · 2.88 KB
/
Copy pathsynth-framework-obj-example.txt
File metadata and controls
124 lines (109 loc) · 2.88 KB
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
119
120
121
122
123
124
desc:Synth framework example (object version)
in_pin:none
out_pin:Left
out_pin:Right
import synth-framework-obj.jsfx-inc
@init
freemem = 0;
freemem = synth_setup(freemem);
synth_setup_each(synth1);
synth_setup_each(synth2);
synth_setup_each(synth3);
synth_setup_each(synth4);
synth_setup_each(synth5);
synth_setup_each(synth6);
synth_setup_each(synth7);
synth_setup_each(synth8);
synth_setup_each(synth9);
synth_setup_each(synth10);
synth_setup_each(synth11);
synth_setup_each(synth12);
synth_setup_each(synth13);
synth_setup_each(synth14);
synth_setup_each(synth15);
synth_setup_each(synth16);
attack_samples = 0.01*srate;
release_samples = 0.01*srate;
@block
// synth framework boilerplate
// Copies from pseudo-objects back to memory buffer
synth_preblock_each(synth1)
&& synth_preblock_each(synth2)
&& synth_preblock_each(synth3)
&& synth_preblock_each(synth4)
&& synth_preblock_each(synth5)
&& synth_preblock_each(synth6)
&& synth_preblock_each(synth7)
&& synth_preblock_each(synth8)
&& synth_preblock_each(synth9)
&& synth_preblock_each(synth10)
&& synth_preblock_each(synth11)
&& synth_preblock_each(synth12)
&& synth_preblock_each(synth13)
&& synth_preblock_each(synth14)
&& synth_preblock_each(synth15)
&& synth_preblock_each(synth16);
// Processes events
synth_block();
// Copies from memory buffer to pseudo-objects
synth_block_each(synth1)
&& synth_block_each(synth2)
&& synth_block_each(synth3)
&& synth_block_each(synth4)
&& synth_block_each(synth5)
&& synth_block_each(synth6)
&& synth_block_each(synth7)
&& synth_block_each(synth8)
&& synth_block_each(synth9)
&& synth_block_each(synth10)
&& synth_block_each(synth11)
&& synth_block_each(synth12)
&& synth_block_each(synth13)
&& synth_block_each(synth14)
&& synth_block_each(synth15)
&& synth_block_each(synth16);
@sample
synth_sample();
function process_note(note*) (
synth_sample_each(note) ? (
synth_needs_init(note) ? (
// Custom note initialisation
note.phase = 0;
);
// Custom note processing
note.phase += synth_freq(note)/srate;
amp = 0.25;
amp *= synth_velocity(note)/127;
amp *= synth_controller(11)/127;
attack_samples && synth_attack(note) < attack_samples ? (
amp *= synth_attack(note)/attack_samples;
);
release_samples && synth_release(note) > 0 ? (
amp *= 1 - synth_release(note)/release_samples;
);
value = sin(note.phase*2*$pi);
spl0 += value*amp;
spl1 += value*amp;
// Make sure to terminate the notes if needed
synth_release(note) >= release_samples ? (
synth_stop(note);
);
);
synth_continue(note);
);
process_note(synth1)
&& process_note(synth2)
&& process_note(synth3)
&& process_note(synth4)
&& process_note(synth5)
&& process_note(synth6)
&& process_note(synth7)
&& process_note(synth8)
&& process_note(synth9)
&& process_note(synth10)
&& process_note(synth11)
&& process_note(synth12)
&& process_note(synth13)
&& process_note(synth14)
&& process_note(synth15)
&& process_note(synth16);