Added cwWEBSOCK build option.
Added tests for 'dataset','afop','select_to_file','cut_and_mix','parallel_mix'.
This commit is contained in:
parent
048ae59c28
commit
9bdc08591e
12
Makefile.am
12
Makefile.am
@ -17,7 +17,7 @@ include_HEADERS =
|
||||
WS_DIR = $(HOME)/sdk/libwebsockets/build/out
|
||||
|
||||
|
||||
AM_CPPFLAGS = -D _GNU_SOURCE -I.. -I$(srcdir)/src/libcw -I$(WS_DIR)/include
|
||||
AM_CPPFLAGS = -D _GNU_SOURCE -I.. -I$(srcdir)/src/libcw
|
||||
AM_CFLAGS = -Wno-multichar
|
||||
AM_CXXFLAGS = --std=c++17 -Wno-multichar
|
||||
AM_LDFLAGS =
|
||||
@ -39,7 +39,7 @@ if OS_64
|
||||
AM_CFLAGS += -m64
|
||||
endif
|
||||
|
||||
AM_LDFLAGS += -L$(WS_DIR)/lib -Wl,-Bstatic -lasound -Wl,-Bdynamic
|
||||
AM_LDFLAGS += -Wl,-Bstatic -lasound -Wl,-Bdynamic
|
||||
|
||||
endif
|
||||
|
||||
@ -53,7 +53,13 @@ include_HEADERS += $(libcwHDR)
|
||||
src_cwtest_cwtest_SOURCES = src/cwtest/main.cpp
|
||||
|
||||
# autoconfig manual recommends setting direct referenes to non-3rd party libraries rather than using -L and -l
|
||||
src_cwtest_cwtest_LDADD = libcw.la -lpthread -lwebsockets
|
||||
src_cwtest_cwtest_LDADD = libcw.la -lpthread
|
||||
|
||||
if cwWEBSOCK
|
||||
AM_CPPFLAGS += -I$(WS_DIR)/include
|
||||
AM_LDFLAGS += -L$(WS_DIR)/lib
|
||||
src_cwtest_cwtest_LDADD += -lwebsockets
|
||||
endif
|
||||
|
||||
# src_cwtest_cwtest_CPPFLAGS = -I$(srcdir)/src/libcw $(AM_CPPFLAGS)
|
||||
bin_PROGRAMS += src/cwtest/cwtest
|
||||
|
@ -12,6 +12,8 @@ cd ${curdir}
|
||||
# 2) Run the program. ./foo
|
||||
# 3) Run gprof /libtool --mode=execute gprof ./foo
|
||||
|
||||
# To enable websock: --enable-websock \
|
||||
|
||||
../../../configure --prefix=${curdir} \
|
||||
--enable-debug \
|
||||
CFLAGS="-g -Wall" \
|
||||
|
17
configure.ac
17
configure.ac
@ -79,6 +79,23 @@ AC_DEFINE([NDEBUG], 1,[Debugging off.])
|
||||
fi
|
||||
|
||||
|
||||
AC_ARG_ENABLE([websock],
|
||||
[ --enable-websock Include websock dependencies],
|
||||
[case "${enableval}" in
|
||||
yes) websock=true ;;
|
||||
no) websock=false ;;
|
||||
*) AC_MSG_ERROR([bad value ${enableval} for --enable-websock]) ;;
|
||||
esac],[websock=false])
|
||||
|
||||
echo "websock=${websock}"
|
||||
|
||||
AM_CONDITIONAL([cwWEBSOCK], [test x$websock = xtrue])
|
||||
|
||||
if test x"$websock" = xtrue; then
|
||||
AC_DEFINE([cwWEBSOCK], 1,[Use libwebsock.])
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# AC_ARG_ENABLE([add_lib],
|
||||
# [ --enable-add_lib Append some additional libs to the end of the library link list.],
|
||||
|
@ -24,21 +24,38 @@
|
||||
m2: [ [[0,1],[2,3]], [[4,5],[6,7]], [[8,9],[10,11]] ],
|
||||
m3: [ 0,1,2 ],
|
||||
|
||||
m4: [ [10,13], [11,14], [12,15] ],
|
||||
|
||||
y0: [ [5,14],[14,50] ],
|
||||
y1: [ [9,12,15],[12,17,22],[15,22,29] ],
|
||||
},
|
||||
|
||||
audiofile:
|
||||
{
|
||||
sine: { fn:"~/temp/temp_sine.wav", srate: 48000, bits: 16, hz: 100, gain: 0.5, secs: 10.0 },
|
||||
rpt: { fn:"~/temp/temp_sine.wav", begIdx: 0, frmCnt: 10 }
|
||||
},
|
||||
|
||||
afop:
|
||||
{
|
||||
sine: { fn:"~/temp/temp_sine_1000_hz.wav", srate: 48000, bits: 16, hz: 1000, gain: 0.5, secs: 10.0 },
|
||||
},
|
||||
|
||||
mnist: {
|
||||
desc: "Print the MNIST images to an SVG/HTML file.",
|
||||
inDir: "~/src/datasets/mnist",
|
||||
outHtmlFn: "~/temp/image_svg.html"
|
||||
},
|
||||
|
||||
dataset: {
|
||||
dsLabel: mnist,
|
||||
batchN: 32,
|
||||
validPct: 10,
|
||||
testPct: 10,
|
||||
dataL:[
|
||||
{ name: mnist, inDir: "~/src/datasets/mnist" }
|
||||
],
|
||||
|
||||
}
|
||||
|
||||
svg: {
|
||||
desc:"Create an SVG/HTML test file.",
|
||||
@ -172,6 +189,58 @@
|
||||
{ gain: 0.3, src:"~/temp/kc_record/xform_only/wet/preset_g_wet.aiff" } ]
|
||||
},
|
||||
|
||||
select_to_file:
|
||||
{
|
||||
outDir: "~/temp/select_to_file",
|
||||
outBits: 24,
|
||||
selectL: [
|
||||
{ begSec: 100.25, endSec: 120.25, dst: "preset_a.wav", src: "~/temp/kc_record/xform_only/mix_7_3/preset_a_mix.wav" },
|
||||
{ begSec: 200.25, endSec: 220.25, dst: "preset_b.wav", src: "~/temp/kc_record/xform_only/mix_7_3/preset_b_mix.wav" },
|
||||
{ begSec: 300.25, endSec: 320.25, dst: "preset_c.wav", src: "~/temp/kc_record/xform_only/mix_7_3/preset_c_mix.wav" },
|
||||
|
||||
{ begSec: 400.25, endSec: 420.25, dst: "preset_d.wav", src: "~/temp/kc_record/xform_only/mix_7_3/preset_d_mix.wav" },
|
||||
{ begSec: 500.25, endSec: 520.25, dst: "preset_f1.wav", src: "~/temp/kc_record/xform_only/mix_7_3/preset_f1_mix.wav" },
|
||||
{ begSec: 600.25, endSec: 620.25, dst: "preset_f2.wav", src: "~/temp/kc_record/xform_only/mix_7_3/preset_f2_mix.wav" },
|
||||
|
||||
{ begSec: 700.25, endSec: 720.25, dst: "preset_f3.wav", src: "~/temp/kc_record/xform_only/mix_7_3/preset_f3_mix.wav" },
|
||||
{ begSec: 800.25, endSec: 820.25, dst: "preset_f4.wav", src: "~/temp/kc_record/xform_only/mix_7_3/preset_f4_mix.wav" },
|
||||
{ begSec: 900.25, endSec: 920.25, dst: "preset_g.wav", src: "~/temp/kc_record/xform_only/mix_7_3/preset_g_mix.wav" },
|
||||
|
||||
{ begSec:1000.25, endSec: 1020.25, dst: "preset_ga.wav", src: "~/temp/kc_record/xform_only/mix_7_3/preset_ga_mix.wav" },
|
||||
{ begSec:1100.25, endSec: 1120.25, dst: "preset_g1a.wav", src: "~/temp/kc_record/xform_only/mix_7_3/preset_g1a_mix.wav" },
|
||||
{ begSec:1200.25, endSec: 1220.25, dst: "preset_g1d.wav", src: "~/temp/kc_record/xform_only/mix_7_3/preset_g1d_mix.wav" },
|
||||
|
||||
]
|
||||
|
||||
},
|
||||
|
||||
cut_and_mix:
|
||||
{
|
||||
dstFn: "~/temp/test_xfade.wav",
|
||||
dstBits: 24,
|
||||
|
||||
srcDir: "~/temp",
|
||||
crossFadeSec: 0.5,
|
||||
|
||||
argL: [
|
||||
{ srcBegSec: 1.0, srcEndSec: 2.0, srcFn: "temp_sine_100_hz.wav", dstBegSec:0.0 },
|
||||
{ srcBegSec: 3.0, srcEndSec: 4.0, srcFn: "temp_sine_1000_hz.wav", dstBegSec:0.5 }
|
||||
]
|
||||
}
|
||||
|
||||
parallel_mix:
|
||||
{
|
||||
dstFn: "~/temp/test_pmix.wav",
|
||||
dstBits: 24,
|
||||
|
||||
srcDir: "~/temp",
|
||||
|
||||
argL: [
|
||||
{ srcBegSec: 1.0, srcEndSec: 2.0, srcFn: "temp_sine_100_hz.wav", fadeOutSec:0.5 },
|
||||
{ srcBegSec: 3.0, srcEndSec: 4.0, srcFn: "temp_sine_1000_hz.wav", fadeOutSec:0 }
|
||||
]
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -8,18 +8,23 @@
|
||||
#include "cwText.h"
|
||||
#include "cwNumericConvert.h"
|
||||
#include "cwObject.h"
|
||||
#include "cwVectOps.h"
|
||||
#include "cwMtx.h"
|
||||
#include "cwThread.h"
|
||||
#include "cwSpScBuf.h"
|
||||
#include "cwSpScQueueTmpl.h"
|
||||
#include "cwThreadMach.h"
|
||||
#include "cwWebSock.h"
|
||||
#include "cwWebSockSvr.h"
|
||||
#include "cwSerialPort.h"
|
||||
#include "cwSerialPortSrv.h"
|
||||
#include "cwSocket.h"
|
||||
|
||||
#if defined(cwWEBSOCK)
|
||||
#include "cwWebSock.h"
|
||||
#include "cwWebSockSvr.h"
|
||||
#include "cwUi.h"
|
||||
#include "cwUiTest.h"
|
||||
#endif
|
||||
|
||||
#include "cwTime.h"
|
||||
#include "cwMidi.h"
|
||||
#include "cwMidiPort.h"
|
||||
@ -30,14 +35,20 @@
|
||||
#include "cwTcpSocket.h"
|
||||
#include "cwTcpSocketSrv.h"
|
||||
#include "cwTcpSocketTest.h"
|
||||
|
||||
|
||||
#include "cwMdns.h"
|
||||
#include "cwDnsSd.h"
|
||||
#include "cwEuCon.h"
|
||||
#if defined(cwWEBSOCK)
|
||||
#include "cwIo.h"
|
||||
#include "cwIoTest.h"
|
||||
#endif
|
||||
|
||||
#include "cwDataSets.h"
|
||||
#include "cwSvg.h"
|
||||
#include "cwAudioFile.h"
|
||||
#include "cwAudioFileOps.h"
|
||||
|
||||
//#include "cwNbMem.h"
|
||||
|
||||
@ -310,22 +321,40 @@ void objectTest( const cw::object_t* cfg, const cw::object_t* args, int argc, co
|
||||
o->free();
|
||||
}
|
||||
|
||||
void timeTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::time::test(); }
|
||||
void threadTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::threadTest(); }
|
||||
void spscBuf( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::spsc_buf::test(); }
|
||||
void spscQueueTmpl( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::testSpScQueueTmpl(); }
|
||||
void timeTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::time::test(); }
|
||||
void threadTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::threadTest(); }
|
||||
void spscBuf( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::spsc_buf::test(); }
|
||||
void spscQueueTmpl( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::testSpScQueueTmpl(); }
|
||||
void serialPortSrvTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::serialPortSrvTest(); }
|
||||
void midiDeviceTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::midi::device::test();}
|
||||
void textBufTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::textBuf::test(); }
|
||||
void audioBufTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::audio::buf::test(); }
|
||||
void audioDevTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::audio::device::test( argc, argv ); }
|
||||
void audioDevAlsaTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::audio::device::alsa::report(); }
|
||||
void audioDevRpt( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::audio::device::report(); }
|
||||
void mtxTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::mtx::test(args); }
|
||||
void audioFileTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::audiofile::test(args); }
|
||||
void audioFileOp( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::afop::test(args); }
|
||||
void audioFileMix( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::afop::mix(args); }
|
||||
void audioFileSelToFile( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::afop::selectToFile(args); }
|
||||
void audioFileCutAndMix( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::afop::cutAndMix(args); }
|
||||
void audioFileParallelMix( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::afop::parallelMix(args); }
|
||||
void socketMdnsTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::net::mdns::test(); }
|
||||
void dnsSdTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::net::dnssd::test(); }
|
||||
void euConTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::eucon::test(); }
|
||||
|
||||
#if defined(cwWEBSOCK)
|
||||
void websockSrvTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::websockSrvTest(); }
|
||||
void serialPortSrvTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::serialPortSrvTest(); }
|
||||
void midiDeviceTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::midi::device::test();}
|
||||
void textBufTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::textBuf::test(); }
|
||||
void audioBufTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::audio::buf::test(); }
|
||||
void audioDevTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::audio::device::test( argc, argv ); }
|
||||
void audioDevAlsaTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::audio::device::alsa::report(); }
|
||||
void audioDevRpt( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::audio::device::report(); }
|
||||
void ioTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::io::test(); }
|
||||
void mtxTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::mtx::test(args); }
|
||||
void audioFileTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::audiofile::test(args); }
|
||||
void audioFileMix( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::audiofile::mix(args); }
|
||||
void uiTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::ui::test(); }
|
||||
#else
|
||||
void _no_websock() { cwLogError(cw::kResourceNotAvailableRC,"Websocket functionality not included in this build."); }
|
||||
void websockSrvTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { _no_websock(); }
|
||||
void ioTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { _no_websock(); }
|
||||
void uiTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { _no_websock(); }
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
void socketTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] )
|
||||
{
|
||||
@ -467,10 +496,6 @@ void sockMgrTest( const cw::object_t* cfg, const cw::object_t* args, int argc, c
|
||||
return;
|
||||
}
|
||||
|
||||
void uiTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::ui::test(); }
|
||||
void socketMdnsTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::net::mdns::test(); }
|
||||
void dnsSdTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::net::dnssd::test(); }
|
||||
void euConTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] ) { cw::eucon::test(); }
|
||||
void mnistTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] )
|
||||
{
|
||||
char* inDir = requiredExistingDir( args, "inDir");
|
||||
@ -479,6 +504,9 @@ void mnistTest( const cw::object_t* cfg, const cw::object_t* args, int argc, con
|
||||
cw::dataset::mnist::test(inDir,htmlFn);
|
||||
}
|
||||
|
||||
void datasetTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] )
|
||||
{ cw::dataset::test(args); }
|
||||
|
||||
void svgTest( const cw::object_t* cfg, const cw::object_t* args, int argc, const char* argv[] )
|
||||
{
|
||||
char* htmlFn = requiredNewFile( args, "outHtmlFn");
|
||||
@ -580,10 +608,15 @@ int main( int argc, const char* argv[] )
|
||||
{ "dirEntry", dirEntryTest },
|
||||
{ "io", ioTest },
|
||||
{ "mnist", mnistTest },
|
||||
{ "dataset", datasetTest },
|
||||
{ "svg", svgTest },
|
||||
{ "mtx", mtxTest },
|
||||
{ "afop", audioFileOp },
|
||||
{ "audiofile", audioFileTest },
|
||||
{ "audio_mix", audioFileMix },
|
||||
{ "select_to_file", audioFileSelToFile },
|
||||
{ "cut_and_mix", audioFileCutAndMix },
|
||||
{ "parallel_mix",audioFileParallelMix },
|
||||
{ "stub", stubTest },
|
||||
{ nullptr, nullptr }
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user