48 for (
int i = 0; i < 16; i++) {
50 Panner * pan =
new Panner(*vox, ((
float) i / 8.0f) - 1.0f);
53 logMsg(
"playing mix of 16 sines...");
73 audioDeviceSelector (0), changed(false), playing(false),
92 addAndMakeVisible (quitButton =
new TextButton (T(
"new button")));
93 quitButton->setButtonText (T(
"Quit"));
94 quitButton->addButtonListener (
this);
96 addAndMakeVisible (selButton =
new TextButton (T(
"new button")));
97 selButton->setButtonText (T(
"Select"));
98 selButton->addButtonListener (
this);
100 addAndMakeVisible (clearButton =
new TextButton (T(
"new button")));
101 clearButton->setButtonText (T(
"Clear"));
102 clearButton->addButtonListener (
this);
107 addAndMakeVisible (slider =
new Slider (T(
"new slider")));
108 slider->setRange (0, 127, 0);
109 slider->setSliderStyle (Slider::LinearVertical);
110 slider->setTextBoxStyle (Slider::NoTextBox,
true, 0, 20);
111 slider->addListener (
this);
113 addAndMakeVisible (slider2 =
new Slider (T(
"new slider")));
114 slider2->setRange (0, 127, 0);
115 slider2->setSliderStyle (Slider::LinearVertical);
116 slider2->setTextBoxStyle (Slider::NoTextBox,
true, 0, 20);
117 slider2->addListener (
this);
119 addAndMakeVisible (slider3 =
new Slider (T(
"new slider")));
120 slider3->setRange (0, 127, 0);
121 slider3->setSliderStyle (Slider::LinearVertical);
122 slider3->setTextBoxStyle (Slider::NoTextBox,
true, 0, 20);
123 slider3->addListener (
this);
125 addAndMakeVisible (slider4 =
new Slider (T(
"new slider")));
126 slider4->setRange (0, 127, 0);
127 slider4->setSliderStyle (Slider::LinearVertical);
128 slider4->setTextBoxStyle (Slider::NoTextBox,
true, 0, 20);
129 slider4->addListener (
this);
131 addAndMakeVisible (slider5 =
new Slider (T(
"new slider")));
132 slider5->setRange (0, 127, 0);
133 slider5->setSliderStyle (Slider::LinearVertical);
134 slider5->setTextBoxStyle (Slider::NoTextBox,
true, 0, 20);
135 slider5->addListener (
this);
137 addAndMakeVisible (slider6 =
new Slider (T(
"new slider")));
138 slider6->setRange (0, 127, 0);
139 slider6->setSliderStyle (Slider::LinearVertical);
140 slider6->setTextBoxStyle (Slider::NoTextBox,
true, 0, 20);
141 slider6->addListener (
this);
143 addAndMakeVisible (slider7 =
new Slider (T(
"new slider")));
144 slider7->setRange (0, 127, 0);
145 slider7->setSliderStyle (Slider::LinearVertical);
146 slider7->setTextBoxStyle (Slider::NoTextBox,
true, 0, 20);
147 slider7->addListener (
this);
149 addAndMakeVisible (slider8 =
new Slider (T(
"new slider")));
150 slider8->setRange (0, 127, 0);
151 slider8->setSliderStyle (Slider::LinearVertical);
152 slider8->setTextBoxStyle (Slider::NoTextBox,
true, 0, 20);
153 slider8->addListener (
this);
155 addAndMakeVisible (slider9 =
new Slider (T(
"new slider")));
156 slider9->setRange (0, 127, 0);
157 slider9->setSliderStyle (Slider::LinearVertical);
158 slider9->setTextBoxStyle (Slider::NoTextBox,
true, 0, 20);
159 slider9->addListener (
this);
161 addAndMakeVisible (slider10 =
new Slider (T(
"new slider")));
162 slider10->setRange (0, 127, 0);
163 slider10->setSliderStyle (Slider::LinearVertical);
164 slider10->setTextBoxStyle (Slider::NoTextBox,
true, 0, 20);
165 slider10->addListener (
this);
167 addAndMakeVisible (slider11 =
new Slider (T(
"new slider")));
168 slider11->setRange (0, 127, 0);
169 slider11->setSliderStyle (Slider::LinearVertical);
170 slider11->setTextBoxStyle (Slider::NoTextBox,
true, 0, 20);
171 slider11->addListener (
this);
173 addAndMakeVisible (slider12 =
new Slider (T(
"new slider")));
174 slider12->setRange (0, 127, 0);
175 slider12->setSliderStyle (Slider::LinearVertical);
176 slider12->setTextBoxStyle (Slider::NoTextBox,
true, 0, 20);
177 slider12->addListener (
this);
179 addAndMakeVisible (slider13 =
new Slider (T(
"new slider")));
180 slider13->setRange (0, 127, 0);
181 slider13->setSliderStyle (Slider::LinearVertical);
182 slider13->setTextBoxStyle (Slider::NoTextBox,
true, 0, 20);
183 slider13->addListener (
this);
185 addAndMakeVisible (slider14 =
new Slider (T(
"new slider")));
186 slider14->setRange (0, 127, 0);
187 slider14->setSliderStyle (Slider::LinearVertical);
188 slider14->setTextBoxStyle (Slider::NoTextBox,
true, 0, 20);
189 slider14->addListener (
this);
191 addAndMakeVisible (slider15 =
new Slider (T(
"new slider")));
192 slider15->setRange (0, 127, 0);
193 slider15->setSliderStyle (Slider::LinearVertical);
194 slider15->setTextBoxStyle (Slider::NoTextBox,
true, 0, 20);
195 slider15->addListener (
this);
197 addAndMakeVisible (slider16 =
new Slider (T(
"new slider")));
198 slider16->setRange (0, 127, 0);
199 slider16->setSliderStyle (Slider::LinearVertical);
200 slider16->setTextBoxStyle (Slider::NoTextBox,
true, 0, 20);
201 slider16->addListener (
this);
203 addAndMakeVisible (label2 =
new Label (T(
"new label"),
204 T(
"CSL 5.0 MIDI Faders")));
205 label2->setFont (Font (24.0000f, Font::plain));
206 label2->setJustificationType (Justification::centredLeft);
207 label2->setEditable (
false,
false,
false);
208 label2->setColour (TextEditor::textColourId, Colours::black);
209 label2->setColour (TextEditor::backgroundColourId, Colour (0x0));
219 sliders.push_back(slider); values.push_back(0); nextVals.push_back(0);
220 sliders.push_back(slider2); values.push_back(0); nextVals.push_back(0);
221 sliders.push_back(slider3); values.push_back(0); nextVals.push_back(0);
222 sliders.push_back(slider4); values.push_back(0); nextVals.push_back(0);
223 sliders.push_back(slider5); values.push_back(0); nextVals.push_back(0);
224 sliders.push_back(slider6); values.push_back(0); nextVals.push_back(0);
225 sliders.push_back(slider7); values.push_back(0); nextVals.push_back(0);
226 sliders.push_back(slider8); values.push_back(0); nextVals.push_back(0);
227 sliders.push_back(slider9); values.push_back(0); nextVals.push_back(0);
228 sliders.push_back(slider10); values.push_back(0); nextVals.push_back(0);
229 sliders.push_back(slider11); values.push_back(0); nextVals.push_back(0);
230 sliders.push_back(slider12); values.push_back(0); nextVals.push_back(0);
231 sliders.push_back(slider13); values.push_back(0); nextVals.push_back(0);
232 sliders.push_back(slider14); values.push_back(0); nextVals.push_back(0);
233 sliders.push_back(slider15); values.push_back(0); nextVals.push_back(0);
234 sliders.push_back(slider16); values.push_back(0); nextVals.push_back(0);
240 mIn->attachObserver(
this);
241 logMsg(
"Start MIDI listener");
244 this->startTimer(100);
286 g.fillAll (Colour (0xff829bb1));
298 slider->setBounds (16, 72, 15, 200);
299 slider2->setBounds (32, 72, 15, 200);
300 slider3->setBounds (48, 72, 15, 200);
301 slider4->setBounds (64, 72, 15, 200);
302 slider5->setBounds (120, 72, 15, 200);
303 slider6->setBounds (88, 72, 15, 200);
304 slider7->setBounds (104, 72, 15, 200);
305 slider8->setBounds (136, 72, 15, 200);
306 slider9->setBounds (192, 72, 15, 200);
307 slider10->setBounds (160, 72, 15, 200);
308 slider11->setBounds (176, 72, 15, 200);
309 slider12->setBounds (208, 72, 15, 200);
310 slider13->setBounds (264, 72, 15, 200);
311 slider14->setBounds (232, 72, 15, 200);
312 slider15->setBounds (248, 72, 15, 200);
313 slider16->setBounds (280, 72, 15, 200);
314 label2->setBounds (24, 24, 208, 24);
329 else if (buttonThatWasClicked ==
selButton)
349 if (sliderThatWasMoved ==
slider)
354 else if (sliderThatWasMoved ==
slider2)
359 else if (sliderThatWasMoved ==
slider3)
364 else if (sliderThatWasMoved ==
slider4)
369 else if (sliderThatWasMoved ==
slider5)
374 else if (sliderThatWasMoved ==
slider6)
379 else if (sliderThatWasMoved ==
slider7)
384 else if (sliderThatWasMoved ==
slider8)
389 else if (sliderThatWasMoved ==
slider9)
394 else if (sliderThatWasMoved ==
slider10)
399 else if (sliderThatWasMoved ==
slider11)
404 else if (sliderThatWasMoved ==
slider12)
409 else if (sliderThatWasMoved ==
slider13)
414 else if (sliderThatWasMoved ==
slider14)
419 else if (sliderThatWasMoved ==
slider15)
424 else if (sliderThatWasMoved ==
slider16)
456 for (
unsigned i = 0; i <
sliders.size(); i++) {
469 int totalNumInputChannels,
470 float** outputChannelData,
471 int totalNumOutputChannels,
474 for (
unsigned i = 0; i < totalNumOutputChannels; i++)
475 memset(outputChannelData[i], 0, numSamples *
sizeof(
float));
479 if (CGestalt::stopNow())
485 for (
unsigned i = 0; i < totalNumOutputChannels; i++)
513 CGestalt::clearStopNow();
524 CGestalt::setStopNow();
531 CGestalt::clearStopNow();
void logMsg(const char *format,...)
These are the public logging messages.
AudioDeviceManager * gAudioDeviceManager
void *(* ThreadFunc)(void *)
This is the CSL_AbstComponent JUCE wrapper for the CSL demos.
bool sleepMsec(float dur)
virtual void clear()
stop MIDI stream
AdditiveInstrument.h – Sum-of-sines synthesis instrument class.
virtual void audioDeviceStopped()
void pullInput(Buffer &outBuffer, SampleBuffer out=0)
get a buffer from the CSL graph
std::vector< Slider * > sliders
list of my 16 sliders
MIDIIn class is-a MidiInputCallback too, and an "input-ready" flag.
void update(void *arg)
MIDI observer update method.
void playSineMixer()
Test mixer – really slow additive synthesis.
GThread takes a CSL test function and runs it.
void buttonClicked(Button *buttonThatWasClicked)
void setSize(unsigned numChannels, unsigned numFrames)
SampleBufferVector mBuffers
the storage vector – pointers to (SampleBuffer) buffers
UnitGenerator * mGraph
the root of my client DSP graph, often a mixer or panner
virtual void audioDeviceAboutToStart(AudioIODevice *device)
void VoidFcnPtrN(void)
the truly void fcn pointer
float fRandM(float minV, float maxV)
min - max (min/max)
IO – the abstract I/O scheduling class; subclasses interface to specific I/O APIs.
std::vector< unsigned > nextVals
list of my 16 update values
Component * createCSLComponent()
virtual void audioDeviceIOCallback(const float **inputChannelData, int totalNumInputChannels, float **outputChannelData, int totalNumOutputChannels, int numSamples)
unsigned offset
what # is fader 0?
virtual void close()
open/close start/stop methods
std::vector< unsigned > values
list of my 16 current values
void setRoot(UnitGenerator &root)
set/clear my graph root generator
Mixer – The n-input m-channel mixer class.
CMIDIMessage class (mapped to juce::MidiMessage)
virtual void open(int deviceID)
open a device
The CSL mono-to-stereo L/R panner class.
void addInput(UnitGenerator &inp)
juce_UseDebuggingNewOperator csl::MIDIIn * mIn
MIDI input.
void sliderValueChanged(Slider *sliderThatWasMoved)
Base class of CSL exceptions (written upper-case). Has a string message.