CSL
6.0
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
Test_Support.cpp
Go to the documentation of this file.
1
//
2
// Test_Support.cpp -- some support functions for the CSL testing main()s
3
// See the copyright notice and acknowledgment of authors in the file COPYRIGHT
4
//
5
// Note that this file is not normally put into project or makefiles,
6
// since it is #included in the test's main program explicitly (once).
7
//
8
// Global IO and argument-processing support; usage() and run_tests() functions
9
//
10
// Default CSL main() options:
11
//
12
// -r srate -b blksiz -o noch -i nich -v verbosity -l logperiod -p outport -u
13
//
14
// -r srate set frame rate to srate Hz
15
// -b blksiz set buffer block size to blksiz
16
// -o nch set # of output channels to nch
17
// -i nch set # of input channels to nch
18
// -v verbos set verbosity level to verbos: 0/1/2
19
// -l logpd set logging period to logpd seconds
20
// -p port set the RemoteIO output port to port
21
// -u print usage message and exit
22
//
23
24
#include "
Test_Support.h
"
// include my stuff
25
#include <stdlib.h>
26
27
using namespace
csl
;
28
29
IO_CLASS
*
theIO
= 0;
// Here's the global IO instance
30
31
#ifdef USE_TEST_MAIN // use the generic main() function here
32
33
extern
void
runTests
();
// this is the list of tests to run (see the test files)
34
35
////// MAIN //////
36
37
int
main
(
int
argc,
const
char
* argv[]) {
38
printf(
"\n"
);
39
logMsg
(
"Running CSL6 tests\n"
);
// print a log message
40
theIO
=
new
IO_CLASS
;
// create the IO object
41
42
theIO
->open();
// open & start it
43
theIO
->start();
44
runTests
();
// call the function with the list of unit tests
45
theIO
->stop();
// stop & close PortAudio
46
theIO
->close();
47
exit(0);
48
}
49
50
#endif // USE_TEST_MAIN
51
52
// Test the given DSP graph for the given amount of time
53
54
void
runTest
(
UnitGenerator
& vox,
double
dur) {
55
// theIO = new IO_CLASS; // create the IO object
56
theIO
->setRoot(vox);
// make some sound
57
sleepSec
(dur);
// sleep for the desired duration
58
theIO
->clearRoot();
// make some silence
59
sleepSec
(0.1);
// wait for it to stop
60
}
61
62
// The default is to play for 3 seconds
63
64
void
runTest
(
UnitGenerator
& vox) {
65
runTest
(vox, (
double
) 3.0);
66
}
67
68
// dump-test -- good for debugging
69
70
void
dumpTest
(
UnitGenerator
& vox) {
71
theIO
->stop();
// stop it
72
theIO
->setRoot(vox);
// set the root of the graph
73
vox.
dump
();
// dump the root
74
theIO
->test();
// and test the callback
75
theIO
->clearRoot();
// make some silence
76
theIO
->start();
// stop it
77
}
78
79
//
80
// Command-line option parsing
81
//
82
// find_option() -- locate an option in the argv[] list
83
// find_option(argc, argv, 't' str)
84
// returns -1 if -t not found;
85
// returns 0 of "-t" opt found without arg,
86
// returns 1 and sets ptr "str" to first opt after "-t" if opt and arg found
87
//
88
// Usage example:
89
// if (find_option(argc, argv, 't' str) > 0)
90
// float value = atof(str)'
91
//
92
93
int
find_option
(
int
argc,
const
char
** argv,
char
flag,
unsigned
* datum) {
94
for
(
int
i = 1; i < argc; i++ ) {
95
if
((argv[i]) && (argv[i][0] ==
'-'
)) {
// linear search, slow, but simple
96
if
(argv[i][1] == flag) {
// if flag found
97
if
((i + 1) == argc) {
// if it's the last cmd-line option
98
datum = NULL;
99
return
0;
100
}
else
{
// else of there's a possible follow-on arg
101
*datum = i+1;
102
return
1;
103
}
104
}
105
}
106
}
107
return
-1;
// if not found
108
}
109
110
//
111
// READ_CSL_OPTS macro -- Parse the standard CSL cmd-line options and set globals based on their values
112
//
113
114
#define READ_CSL_OPTS \
115
unsigned val; \
116
if (find_option(argc, argv, 'r', &val) > 0) { \
117
CGestalt::setFrameRate(atoi(argv[val])); \
118
printf("Setting frame rate to: %d\n", \
119
CGestalt::frameRate()); } \
120
if (find_option(argc, argv, 'b', &val) > 0) { \
121
CGestalt::setBlockSize(atoi(argv[val])); \
122
printf("Setting block size to: %d\n", \
123
CGestalt::blockSize()); } \
124
if (find_option(argc, argv, 'o', &val) > 0) { \
125
CGestalt::setNumOutChannels(atoi(argv[val])); \
126
printf("Setting numOutChannels to: %d\n", \
127
CGestalt::numOutChannels()); } \
128
if (find_option(argc, argv, 'i', &val) > 0) { \
129
CGestalt::setNumInChannels(atoi(argv[val])); \
130
printf("Setting numInChannels to: %d\n", \
131
CGestalt::numInChannels()); } \
132
if (find_option(argc, argv, 'l', &val) > 0) { \
133
CGestalt::setLoggingPeriod(atoi(argv[val])); \
134
printf("Setting loggingPeriod to: %d\n", \
135
CGestalt::loggingPeriod()); } \
136
if (find_option(argc, argv, 'p', &val) > 0) { \
137
CGestalt::setOutPort(atoi(argv[val])); \
138
printf("Setting outPort to: %d\n", \
139
CGestalt::outPort()); } \
140
if ((find_option(argc, argv, 'u', &val) >= 0) || \
141
(find_option(argc, argv, 'h', &val) >= 0)) { \
142
usage(argv[0]); \
143
exit(0); } \
144
if (find_option(argc, argv, 'v', &val) > 0) \
145
if (argv[val][0] == '-') \
146
CGestalt::setVerbosity(2); \
147
else \
148
CGestalt::setVerbosity(atoi(argv[val]))
149
150
// Usage function
151
152
void
usage
(
const
char
* name) {
153
printf(
"\n%s: %s\n\t%s\n\t%s\n\t%s\n\t%s\n\t%s\n\t%s\n\t%s\n\n"
, name,
154
"-r srate -b blksiz -o noch -i nich -v verbosity -l logperiod -p outport"
,
155
"-r srate set frame rate to srate Hz"
,
156
"-b blksiz set buffer block size to blksiz"
,
157
"-o nch set # of output channels to nch"
,
158
"-i nch set # of input channels to nch"
,
159
"-v verbos set verbosity level to 0-3"
,
160
"-l logpd set logging period to logpd seconds"
,
161
"-p pt set the output port to pt"
);
162
exit(0);
163
}
csl::logMsg
void logMsg(const char *format,...)
These are the public logging messages.
Definition:
CGestalt.cpp:292
Test_Support.h
theIO
IO_CLASS * theIO
Definition:
Test_Support.cpp:29
usage
void usage(const char *name)
Definition:
Test_Support.cpp:152
csl
AdditiveInstrument.h – Sum-of-sines synthesis instrument class.
Definition:
Accessor.h:17
dumpTest
void dumpTest(UnitGenerator &vox)
Definition:
Test_Support.cpp:70
csl::UnitGenerator::dump
virtual void dump()
pretty-print the receiver
Definition:
CSL_Core.cpp:693
main
int main(int argc, char *argv[])
Definition:
MainMIDI.cpp:70
IO_CLASS
#define IO_CLASS
Definition:
Test_Support.h:27
csl::sleepSec
bool sleepSec(float dur)
Definition:
CGestalt.cpp:379
runTest
void runTest(UnitGenerator &vox, double dur)
Definition:
Test_Support.cpp:54
find_option
int find_option(int argc, const char **argv, char flag, unsigned *datum)
Definition:
Test_Support.cpp:93
runTests
void runTests()
Definition:
Test_Effects.cpp:609
csl::UnitGenerator
forward declaration
Definition:
CSL_Core.h:241
Src
Tests
Test_Support.cpp
Generated on Fri Apr 17 2020 13:29:55 for CSL by
1.8.8