Experimental real-time audio and signal processing application development framework.
Go to file
2022-10-08 12:50:22 -04:00
dns_sd Changes to support autotools build. 2020-03-24 08:51:51 -04:00
html html/preset_sel : Update UI to remove half-pedal ctl panel and minor CSS fixes 2022-08-27 16:12:35 -04:00
study cwDataSet.h/cpp, cwNN.h/cpp : Updates. 2020-10-30 09:40:39 -04:00
.gitignore .gitignore : updates 2020-03-23 10:51:18 -04:00
cwAudioBuf.cpp cwAudioBuf.h/cpp : Added version of meter() which returns an array of meter values from a device. 2021-01-31 11:04:11 -05:00
cwAudioBuf.h cwAudioBuf.h/cpp : Added version of meter() which returns an array of meter values from a device. 2021-01-31 11:04:11 -05:00
cwAudioBufDecls.h Added 'decls' include files to hold public declarations for audio,midi,serial,socket, and websock modules. 2020-03-23 10:41:28 -04:00
cwAudioDevice.cpp Added 'decls' include files to hold public declarations for audio,midi,serial,socket, and websock modules. 2020-03-23 10:41:28 -04:00
cwAudioDevice.h Added 'decls' include files to hold public declarations for audio,midi,serial,socket, and websock modules. 2020-03-23 10:41:28 -04:00
cwAudioDeviceAlsa.cpp cwAudioDeviceAlsa.cpp : Prevent wrapping on 32 bit audio output. 2022-03-20 10:14:37 -04:00
cwAudioDeviceAlsa.h cwAudioBuf,cwAudioDeviceAlsa : Test functions now return error codes. 2020-09-27 10:27:32 -04:00
cwAudioDeviceDecls.h Added 'decls' include files to hold public declarations for audio,midi,serial,socket, and websock modules. 2020-03-23 10:41:28 -04:00
cwAudioDeviceTest.cpp cwAudioDeviceTest.cpp : Change static_cast<> to reinterpet_cast<> 2021-01-20 13:06:57 -05:00
cwAudioDeviceTest.h cwAudioDeviceTest.h/cpp : test() now takes a cfg object and added test_tone(). 2020-12-15 15:30:45 -05:00
cwAudioFile.cpp README.md: Updated notes. 2021-09-06 09:44:48 -04:00
cwAudioFile.h cwAudioFile.h/cpp : Add floating point file format. 2021-05-08 08:15:06 -04:00
cwAudioFileOps.cpp cwAudioFileProc.h/cpp, cwAudioTransforms.h/cpp, cwPvAudioFileProc.h/cpp: Initial commit. 2021-08-15 16:06:29 -04:00
cwAudioFileOps.h cwFileOps.h/cpp: Added fade in/out fucnctionality to selectToFile(). 2021-02-24 13:21:35 -05:00
cwAudioFileProc.cpp cwAudioFileProc.h/cpp, cwAudioTransforms.h/cpp, cwPvAudioFileProc.h/cpp: Initial commit. 2021-08-15 16:06:29 -04:00
cwAudioFileProc.h cwAudioFileProc.h/cpp, cwAudioTransforms.h/cpp, cwPvAudioFileProc.h/cpp: Initial commit. 2021-08-15 16:06:29 -04:00
cwAudioTransforms.cpp cwAudioFileProc.h/cpp, cwAudioTransforms.h/cpp, cwPvAudioFileProc.h/cpp: Initial commit. 2021-08-15 16:06:29 -04:00
cwAudioTransforms.h cwAudioTransforms.h : Change _cmSpecDist to use doubles for some operations to avoid distortion. 2022-05-06 16:01:40 -04:00
cwAvahiSurface.cpp Updated dns_sd/ to match the Arduino build. 2020-02-13 11:29:52 -05:00
cwCommon.h cwCommon.h,cwCommonImpl.h : small changes. 2021-08-15 15:56:34 -04:00
cwCommonImpl.cpp Initial commit 2019-12-18 22:24:12 -05:00
cwCommonImpl.h cwCommon.h,cwCommonImpl.h : small changes. 2021-08-15 15:56:34 -04:00
cwDataSets.cpp cwDataSets.h/cpp : Add use of cache_t file cache to rdr to improve file read performance and add shuffling option. 2020-12-29 11:22:29 -05:00
cwDataSets.h cwDataSets.h/cpp : Add use of cache_t file cache to rdr to improve file read performance and add shuffling option. 2020-12-29 11:22:29 -05:00
cwDnsSd.cpp cwTime.h/cpp,cwDnsSd.cpp,cwMdns.cpp : Changed cwTime interface to use all references rather than pointers as arguments. 2020-04-17 11:16:21 -04:00
cwDnsSd.h cwUtility, cwDnsSd, cwEuCon : Initial commit. 2020-02-12 13:43:00 -05:00
cwDsp.cpp cwDsp.h/cpp: Many additions and changes. 2021-08-15 16:01:27 -04:00
cwDsp.h cwDsp.h/cpp: Many additions and changes. 2021-08-15 16:01:27 -04:00
cwDspTransforms.cpp cwDspTransforms.h/cpp : Added 'recorder'. 2021-12-19 12:08:10 -05:00
cwDspTransforms.h cwDspTransforms.h/cpp : Added 'recorder'. 2021-12-19 12:08:10 -05:00
cwDspTypes.h Many updates and changes to cwFlow* and added Compressor processor. 2021-08-22 22:41:33 -04:00
cwEuCon.cpp cwEuCon.cpp : Change mute id's to indicate source. 2020-05-19 20:51:20 -04:00
cwEuCon.h cwEuCon.h/cpp : Implemented sendMsg() and use cwEuConDecls.h. 2020-05-14 11:13:07 -04:00
cwEuConDecls.h cwEuConDecls.h : Changed kMuteEuconId to kEucMuteEuconId and added kFdrMuteEuconId. 2020-05-19 20:44:35 -04:00
cwFFT.cpp Makefile.am,cwDsp,cwFFT: Updates to make FFTW optional. 2020-10-11 17:18:58 -04:00
cwFFT.h Makefile.am,cwDsp,cwFFT: Updates to make FFTW optional. 2020-10-11 17:18:58 -04:00
cwFile.cpp cwFile.cpp : open() now calls filesys::expandPath() on all file names. 2021-02-26 13:33:31 -05:00
cwFile.h cwFile.h/cpp : read()/write() now check 'lastRC' as a precondition. 2020-12-29 11:20:24 -05:00
cwFileSys.cpp filesys.cpp: Add nullptr guards to isDir(), isFile(), isLink(). 2022-05-14 10:12:47 -04:00
cwFileSys.h cwFileSys.h/cpp : Added replaceDirectory/Filename/Extension() functions. 2021-05-10 08:30:22 -04:00
cwFlow.cpp cwFlow.cpp : Comments added 2022-01-02 20:20:55 -05:00
cwFlow.h cwFlow,cwFlowCross,cwIoFlow : Added set_variable_value(). 2021-12-25 22:16:00 -05:00
cwFlowCross.cpp cwFlowCross.h/cpp : Added destination id 'kAllDestId'. Fixed bug in _update_audio_input(). 2022-01-22 09:51:54 -05:00
cwFlowCross.h cwFlowCross.h/cpp : Added destination id 'kAllDestId'. Fixed bug in _update_audio_input(). 2022-01-22 09:51:54 -05:00
cwFlowProc.cpp cwFlowProc.cpp : Updates to use var_get() and var_register_get() where possible. 2022-03-20 10:23:51 -04:00
cwFlowProc.h cwFlowProc.h/cpp : Added 'audio_duplicate' and 'balance'. 2021-12-27 20:22:41 -05:00
cwFlowTypes.cpp cwFlowType.h : Calls the generic value setter proc.value() cwFlowType._var_set_template<> 2022-01-22 09:49:45 -05:00
cwFlowTypes.h cwFlowType.h : Calls the generic value setter proc.value() cwFlowType._var_set_template<> 2022-01-22 09:49:45 -05:00
cwIo.cpp cwIo.h/cpp : Added io::threadCreate() 2022-06-12 16:50:01 -04:00
cwIo.h cwIo.h/cpp : Added io::threadCreate() 2022-06-12 16:50:01 -04:00
cwIoAudioMidi.cpp cwIo.h/cpp,cwIoAudioMidi.cpp,cwIOAudioMidiApp.cpp,cwIoAudioPanel.cpp,cwIoPresetSelApp.cpp,wcIoSocketChat.cpp: Changed due to cwUi interface changes and new non-recursive object_t.get() default policy. 2021-11-03 11:09:07 -04:00
cwIoAudioMidi.h audio_midi : Initial implementation of audio_midi io-based app. 2021-04-10 13:38:49 -04:00
cwIoAudioMidiApp.cpp cwIo.h/cpp,cwIoAudioMidi.cpp,cwIOAudioMidiApp.cpp,cwIoAudioPanel.cpp,cwIoPresetSelApp.cpp,wcIoSocketChat.cpp: Changed due to cwUi interface changes and new non-recursive object_t.get() default policy. 2021-11-03 11:09:07 -04:00
cwIoAudioMidiApp.h cwIoAudioMidiApp.h/cpp,cwIoAudioRecordPlay.h/cpp,cwIoMidiRecordPlay.h/cpp: Initial commit. 2021-05-10 08:38:10 -04:00
cwIoAudioPanel.cpp cwIo.h/cpp,cwIoAudioMidi.cpp,cwIOAudioMidiApp.cpp,cwIoAudioPanel.cpp,cwIoPresetSelApp.cpp,wcIoSocketChat.cpp: Changed due to cwUi interface changes and new non-recursive object_t.get() default policy. 2021-11-03 11:09:07 -04:00
cwIoAudioPanel.h cwIoAudioPanel.h/cpp,cwIoSocketChat.h/cpp, Makefile.am, cwIoTest.cpp : Initial commit of cwIoAudioPanel and cwIoSocketChat. 2021-01-31 11:16:08 -05:00
cwIoAudioRecordPlay.cpp cwIoAudioRecordPlay.cpp : Removed unnecessary includes. 2021-12-11 15:21:46 -05:00
cwIoAudioRecordPlay.h cwIoAudioMidiApp.h/cpp,cwIoAudioRecordPlay.h/cpp,cwIoMidiRecordPlay.h/cpp: Initial commit. 2021-05-10 08:38:10 -04:00
cwIoFlow.cpp cwIoFlow.h/cpp : Added print() and printNetwork(). 2022-01-02 20:22:47 -05:00
cwIoFlow.h cwIoFlow.h/cpp : Added print() and printNetwork(). 2022-01-02 20:22:47 -05:00
cwIoMidiRecordPlay.cpp Merge branch 'master' of gitea.larke.org:kevin/libcw 2022-10-01 19:05:22 -04:00
cwIoMidiRecordPlay.h cwIoMidiRecordPlay.h/cpp: Added 'actionId' to callback function. 2022-05-21 09:26:23 -04:00
cwIoMinTest.cpp cwKeyboard.h/cpp, cwIoMinTest.h/cpp, Makefile.am : Initial commit. 2022-06-12 16:50:44 -04:00
cwIoMinTest.h cwKeyboard.h/cpp, cwIoMinTest.h/cpp, Makefile.am : Initial commit. 2022-06-12 16:50:44 -04:00
cwIoPresetSelApp.cpp cwIoPresetSelApp.cpp : Added use of preset_sel::track_loc(). Prevent disply of loc value 0. 2022-10-01 18:54:06 -04:00
cwIoPresetSelApp.h cwIoPresetSelApp : Initial addition of ioFlow. 2021-12-11 15:21:03 -05:00
cwIoSocketChat.cpp cwIo.h/cpp,cwIoAudioMidi.cpp,cwIOAudioMidiApp.cpp,cwIoAudioPanel.cpp,cwIoPresetSelApp.cpp,wcIoSocketChat.cpp: Changed due to cwUi interface changes and new non-recursive object_t.get() default policy. 2021-11-03 11:09:07 -04:00
cwIoSocketChat.h cwIoAudioPanel.h/cpp,cwIoSocketChat.h/cpp, Makefile.am, cwIoTest.cpp : Initial commit of cwIoAudioPanel and cwIoSocketChat. 2021-01-31 11:16:08 -05:00
cwIoTest.cpp cwIo.h/cpp,cwIoTest.cpp : Fixed serial port monitor example in cwIoTest.cpp 2021-10-11 11:53:36 -04:00
cwIoTest.h cwIo.h/cpp, cwIoTest.h/cpp, html/ioTest.* : Many changes and additions to support first working Ui and audio subsystem. 2021-01-20 13:13:11 -05:00
cwKeyboard.cpp cwKeyboard.h/cpp, cwIoMinTest.h/cpp, Makefile.am : Initial commit. 2022-06-12 16:50:44 -04:00
cwKeyboard.h cwKeyboard.h/cpp, cwIoMinTest.h/cpp, Makefile.am : Initial commit. 2022-06-12 16:50:44 -04:00
cwLex.cpp Standardized filesys and mem namespaces. 2019-12-27 21:51:28 -05:00
cwLex.h Initial implementation cwTcpSocket* 2019-12-27 16:52:45 -05:00
cwLib.cpp Changes to support autotools build. 2020-03-24 08:51:51 -04:00
cwLib.h cwLib.h/cpp, cwMutex.h/cpp : Initial commit. 2020-03-04 14:05:54 -05:00
cwLog.cpp cwLog.h/cpp : Added setOutputCb() and setFormatCb(). cwLogMod() now call log::msg() directly. 2021-12-29 21:35:10 -05:00
cwLog.h cwLog.h/cpp : Added setOutputCb() and setFormatCb(). cwLogMod() now call log::msg() directly. 2021-12-29 21:35:10 -05:00
cwMath.cpp cwMath.h/cpp : Populate cwMath from libcm and move some functions from cwUtility to cwMath. 2021-08-15 15:51:09 -04:00
cwMath.h cwMath.h/cpp : Populate cwMath from libcm and move some functions from cwUtility to cwMath. 2021-08-15 15:51:09 -04:00
cwMdns.cpp cwTime.h/cpp,cwDnsSd.cpp,cwMdns.cpp : Changed cwTime interface to use all references rather than pointers as arguments. 2020-04-17 11:16:21 -04:00
cwMdns.h cwMdns.h/cpp : Initial commit. 2020-01-27 17:51:38 -05:00
cwMem.cpp Pine64 Updates. 2020-10-31 14:17:43 -04:00
cwMem.h cwMem.h : Expanded allocDupl() interfaces. Added printp(),appendStr() 2020-08-19 20:08:14 -04:00
cwMidi.cpp cwMidi.h/cpp : Added kMidiPortMdId MIDI File meta status id. 2021-02-21 08:47:29 -05:00
cwMidi.h cwMidi.h : Corrected comment. 2022-03-20 10:15:28 -04:00
cwMidiAlsa.cpp cwMidiAlsa.cpp : Put quotes around some reports to give clear indication of begin/end of labels. 2022-05-06 16:04:42 -04:00
cwMidiDecls.h cwMidiDecls.h : Removed deltaUs from midi::msg_t. 2021-05-10 08:35:10 -04:00
cwMidiFile.cpp cwMidiFile.h/cpp : Added _testBatchConvert() and 'printWarningFl' in genCsvFile(). 2022-10-01 19:03:23 -04:00
cwMidiFile.h cwMidiFile.h/cpp : Added _testBatchConvert() and 'printWarningFl' in genCsvFile(). 2022-10-01 19:03:23 -04:00
cwMidiPort.cpp cwMidiPort.cpp: Print out message in testCallback(). 2021-08-15 16:03:56 -04:00
cwMidiPort.h Added 'decls' include files to hold public declarations for audio,midi,serial,socket, and websock modules. 2020-03-23 10:41:28 -04:00
cwMpScNbQueue.h cwMpScNbQueue.h : Initial commit. 2021-01-12 15:49:19 -05:00
cwMpScQueue.h cwMpScQueue.h : replace use of atomic exchange 2021-01-12 15:57:57 -05:00
cwMtx.cpp cwMtx.h,cpp : Added slice() and derivatives. 2020-09-22 13:33:32 -04:00
cwMtx.h cwMtx.h: Fixed calc. of ele_count(). 2021-08-15 15:58:38 -04:00
cwMutex.cpp cwmutex.h : Added signalCondVar(). 2021-01-20 13:07:36 -05:00
cwMutex.h cwMutex.h : Added 'spurious wakeup' comments. 2021-01-22 09:33:23 -05:00
cwNbMem.cpp cwNbMem.h/cpp : Initial commit. 2020-01-27 17:51:56 -05:00
cwNbMem.h cwNbMem.h/cpp : Initial commit. 2020-01-27 17:51:56 -05:00
cwNN.cpp cwDataSet.h/cpp, cwNN.h/cpp : Updates. 2020-10-30 09:40:39 -04:00
cwNN.h cwDataSet.h/cpp, cwNN.h/cpp : Updates. 2020-10-30 09:40:39 -04:00
cwNumericConvert.h cwNumericConvert.h : Remove verification of double value vs d_min in numeric_convert(). 2021-08-15 15:57:54 -04:00
cwObject.cpp cwObject.cpp : Added use of _udiff() to avoid unsigned subtractions from wrapping around 0. 2021-12-27 20:28:09 -05:00
cwObject.h cwObject.h/cpp : Added next_child_ele(). Renamed _objAppendLeftMostNode() to _objAppendRightMostNode(). 2021-12-25 22:11:14 -05:00
cwObjectTemplate.h cwObject.h/cpp : Added next_child_ele(). Renamed _objAppendLeftMostNode() to _objAppendRightMostNode(). 2021-12-25 22:11:14 -05:00
cwPianoScore.cpp cwPianoScore.h/cpp : Add uid_to_event(). 2022-05-06 16:05:49 -04:00
cwPianoScore.h cwPianoScore.h/cpp : Add uid_to_event(). 2022-05-06 16:05:49 -04:00
cwPresetSel.cpp cwPresetSel.h/cpp : Added track_loc() and track_loc_reset(). 2022-10-01 18:52:12 -04:00
cwPresetSel.h cwPresetSel.h/cpp : Added track_loc() and track_loc_reset(). 2022-10-01 18:52:12 -04:00
cwPvAudioFileProc.cpp cwAudioFileProc.h/cpp, cwAudioTransforms.h/cpp, cwPvAudioFileProc.h/cpp: Initial commit. 2021-08-15 16:06:29 -04:00
cwPvAudioFileProc.h cwAudioFileProc.h/cpp, cwAudioTransforms.h/cpp, cwPvAudioFileProc.h/cpp: Initial commit. 2021-08-15 16:06:29 -04:00
cwSerialPort.cpp cwSerialPort.cpp : fix bug where the incorrect byte count could be sent on a receive callback. 2020-03-16 22:54:14 -04:00
cwSerialPort.h Added 'decls' include files to hold public declarations for audio,midi,serial,socket, and websock modules. 2020-03-23 10:41:28 -04:00
cwSerialPortDecls.h Added 'decls' include files to hold public declarations for audio,midi,serial,socket, and websock modules. 2020-03-23 10:41:28 -04:00
cwSerialPortSrv.cpp cwSerialPort.h/cpp,cwSerialPortSrv.h/cpp : serialPort now manages multiple ports. 2020-03-05 22:04:53 -05:00
cwSerialPortSrv.h cwSerialPort.h/cpp,cwSerialPortSrv.h/cpp : serialPort now manages multiple ports. 2020-03-05 22:04:53 -05:00
cwSocket.cpp cwSocket.cpp : Log a warning if the socket to destroy() is not found. 2020-04-17 14:05:14 -04:00
cwSocket.h cwSocket.h : Updated comments. 2021-01-31 11:08:09 -05:00
cwSocketDecls.h cwSocket.h/cpp : Changed name of cbId_t to cbOpId_t 2020-04-01 10:46:31 -04:00
cwSpScBuf.cpp Pine64 Updates. 2020-10-31 14:17:43 -04:00
cwSpScBuf.h cwSpScBuf.h/cpp, cwThreadMach.h/cpp : initial commit. 2020-04-09 21:06:44 -04:00
cwSpScQueueTmpl.cpp Pine64 Updates. 2020-10-31 14:17:43 -04:00
cwSpScQueueTmpl.h cwSpScQueueTmpl.h : Change operation such that get() ony returns empty records. 2020-04-19 15:17:11 -04:00
cwString.cpp cwString, cwDsp : Initial commit. 2020-10-04 10:48:27 -04:00
cwString.h cwString, cwDsp : Initial commit. 2020-10-04 10:48:27 -04:00
cwSvg.cpp cwSvg.h/cpp : Removed unused flags from svg::write(). 2020-12-29 11:21:00 -05:00
cwSvg.h cwSvg.h/cpp : Removed unused flags from svg::write(). 2020-12-29 11:21:00 -05:00
cwTcpSocket.cpp cwTcpSocket.cpp : Fixed signed/unsigned compare. 2020-04-16 11:11:09 -04:00
cwTcpSocket.h cwTcpSocket.h/cpp : Remove the handle_t argument in initAddr() 2020-03-16 22:52:21 -04:00
cwTcpSocketSrv.cpp Many changes and additions to cwTcpSocket* to support MDNS and DNS-SD operations. 2020-02-12 13:25:13 -05:00
cwTcpSocketSrv.h Many changes and additions to cwTcpSocket* to support MDNS and DNS-SD operations. 2020-02-12 13:25:13 -05:00
cwTcpSocketTest.cpp Many changes and additions to cwTcpSocket* to support MDNS and DNS-SD operations. 2020-02-12 13:25:13 -05:00
cwTcpSocketTest.h Many changes and additions to cwTcpSocket* to support MDNS and DNS-SD operations. 2020-02-12 13:25:13 -05:00
cwText.cpp cwText.cpp : Assert that v is non-null on call to toText(). 2021-12-27 20:30:08 -05:00
cwText.h cwText.h/cpp : Added textIsEqual(), textIsNotEqual(). 2021-11-05 22:22:30 -04:00
cwTextBuf.cpp Standardized filesys and mem namespaces. 2019-12-27 21:51:28 -05:00
cwTextBuf.h Many changes and additions. 2019-12-24 10:05:24 -05:00
cwThread.cpp cwThread.cpp : Fix bug where waitTimeMicrosSecs was not properly updates. 2020-12-11 15:57:35 -05:00
cwThread.h cwThread.h/cpp : thread_id_t is changed form unsigned to unsigned long long. 2020-01-27 17:50:57 -05:00
cwThreadMach.cpp cwThreadMach.h/cpp : Many changes to support use in cwIo. 2021-01-20 13:11:44 -05:00
cwThreadMach.h cwThreadMach.h : Add comments. 2022-06-12 12:15:32 -04:00
cwTime.cpp cwTime.h/cpp : Added elapsedSecs(). 2022-03-20 10:18:54 -04:00
cwTime.h cwTime.h/cpp : Added elapsedSecs(). 2022-03-20 10:18:54 -04:00
cwUi.cpp cwUi.cpp : Fix problem in _get_msg_from_recv_buffer() where shift amount could exceed the elements in the buffer. 2022-10-08 12:50:22 -04:00
cwUi.h cwUi.h/cpp : Handle partial messages arriving from the websocket by buffering and reconstructing the message. 2022-05-14 10:16:09 -04:00
cwUiDecls.h uiDecls.h : Added explicit numbers to enum's comments. 2022-05-21 09:28:17 -04:00
cwUiTest.cpp cwUi,cwIo,cwUiTest.cpp,html/uiTest/js/ui.js,html/uiTest/ui.cfg : Added 'string_disp' type. 2021-12-27 16:48:58 -05:00
cwUiTest.h cwUi.h/cpp,cwUiTest.h/cpp, cwUiDecls.h : Moved public variables to cwUiDecls.h. Added a version of create() which uses an arg_t record. Added parseArgs() and releaseArgs(). 2021-01-20 13:10:56 -05:00
cwUtility.cpp cwMath.h/cpp : Populate cwMath from libcm and move some functions from cwUtility to cwMath. 2021-08-15 15:51:09 -04:00
cwUtility.h cwUtility : Added powerOfTwo() functions. 2020-10-04 10:47:03 -04:00
cwVariant.cpp cwVariant.h/cpp, Makefile.am : Initial commit. 2020-12-11 15:58:06 -05:00
cwVariant.h cwVariant.h/cpp, Makefile.am : Initial commit. 2020-12-11 15:58:06 -05:00
cwVectOps.h cwVectOps.h : Minor changes to mul<> and ampl_to_db() to clarify types. 2022-05-06 16:08:10 -04:00
cwWebSock.cpp cwWebSock.cpp: replace use of MpScNbQueue until MpScQueue can be debugged. 2021-01-12 17:05:34 -05:00
cwWebSock.h cwWebSock.h/cpp : Added 'sessionId' to send() (and msg_t) to allow a message to be sent to a specific endpoint. 2020-03-31 12:53:14 -04:00
cwWebSockDecls.h Added 'decls' include files to hold public declarations for audio,midi,serial,socket, and websock modules. 2020-03-23 10:41:28 -04:00
cwWebSockSvr.cpp Pine64 Updates. 2020-10-31 14:17:43 -04:00
cwWebSockSvr.h Pine64 Updates. 2020-10-31 14:17:43 -04:00
dsp_recorder_plot.py dsp_recorder_plot.py : Initial commit of plotter for cwDspTransforms:recorder. 2021-12-19 12:21:02 -05:00
Makefile.am cwKeyboard.h/cpp, cwIoMinTest.h/cpp, Makefile.am : Initial commit. 2022-06-12 16:50:44 -04:00
README.md README.md : Added ToDo's. 2022-05-21 09:29:26 -04:00

To Do

  • Remove applications from the libcw folder and put them in their own folders.

  • The UI needs to be better documented. Start by giving clear names to the various parts: Browser, UI Manager, UI Server, Application. Maybe describe in Model,View,Controller terms?

  • Document the meaning and way that id's and names/labels are used, and intended to be used, and found by UI. As it is they are confusing.

  • The UI app id map should be validated after the UI is created. In otherwords the parent/child pairs shoud actually exists.

  • Arrange the project layout so that all the UI based apps use the same ui.js. Currently changes and improvements to one version of ui.js cannot be automatically shared.

  • The ui manageer should buffer the current valid value of a given control so that the value can be accessed synchronously. This would prevent the application from having to explicitely store all UI values and handle all the 'value' and 'echo' request. It would support a model where the UI values get changed and then read by the app (e.g. getUiValue( appId, valueRef)) just prior to being used. As it is the UI values that are on the interface cannot be accessed synchronously instead the app is forced to notice all 'value' changes and store the last legal value.

  • Add an ui::appIdToUuId() that returns the first matching appId, and then optionally looks for duplicates as an error checking scheme.

  • The ui eleA[] data structure should be changed to a tree because the current expandable array allows empty slots which need to be checked for whenever the list is iterated. It is also very inefficient to delete from the eleA[] because an exhaustive search is required to find all the children of the element to be deleted.

  • Should a warning be issued by audioBuf functions which return a set of values: muteFlags(),toneFlags(), gain( ... gainA) but where the size of the dest array does not match the actual number of channesl?

  • Any socket function which takes a IP/port address should have a version which also takes a sockaddr_in*.

  • Fix the time functions to make them more convenient and C++ish.

  • implement floating point UI numbers

  • UI needs a special UUID (not kInvalidId) to specify the 'root' UI element. See note in cwUi._createFromObj()

  • Look at 'BUG' warnings in cwNumericConvert.h.

  • cwObject must be able to parse without dynamic memory allocation into a fixed buffer

  • cwObject must be able to be composed without dynamic memory allocation or from a fixed buffer.

  • cwWebsock is allocating memory on send().

  • cwWebsock: if the size of the recv and xmt buffer, as passed form the protocolArray[], is too small send() will fail without an error message. This is easy to reproduce by simply decreasing the size of the buffers in the protocol array.

  • Clean up the cwObject namespace - add an 'object' namespace inside 'cw'

  • Add underscore to the member variables of object_t.

  • logDefaultFormatter() in cwLog.cpp uses stack allocated memory in a way that could easily be exploited.

  • lexIntMatcher() in cwLex.cpp doesn't handle 'e' notation correctly. See note in code.

  • numeric_convert() in cwNumericConvert.h could be made more efficient using type_traits.

  • numeric_convert() d_min is NOT zero, it's smallest positive number, this fails when src == 0. min value is now set to zero.

  • thread needs setters and getters for internal variables

  • change cwMpScNbQueue so that it does not require 'new'.

  • cwAudioBuf.cpp - the ch->fn in update() does not have the correct memory fence.

  • Change file names to match object names

  • Replace 24 bit read/write in cwAudioFile.cpp

  • Remove Audio file operations that have been superceded by 'flow' framework.

  • (DONE) change all NULL's to nullptr

  • (DONE) implement kTcpFl in cwTcpSocket.cpp

UI Control Creation Protocol

The UI elements have four identifiers:

uuId - An integer which is unique among all identifiers for a given cwUi object. appId - A constant (enumerated) id assigned by the application. Unique among siblings. jsId - A string id used by Javascript to identify a control. Unique among siblings. jsUuId - An integer which is unique among all identifers for the browser representation of a given cwUi object.

The 'jsId' is selected by the application when the object is created. The 'jsUuId' is generated by the JS client when the UI element is created. The 'uuId' is generated by the UI server when the JS client registers the control. The 'appId' is assigned by the UI server when the JS client regsiters the control.

Client sends 'init' message. Server sends 'create' messages. Client sends 'register' messages. Server send' 'id_assign' messages.

sockaddr_in reference

#include <netinet/in.h>

struct sockaddr_in {
    short            sin_family;   // e.g. AF_INET
    unsigned short   sin_port;     // e.g. htons(3490)
    struct in_addr   sin_addr;     // see struct in_addr, below
    char             sin_zero[8];  // zero this if you want to
};

struct in_addr { unsigned long s_addr; // load with inet_aton() };

Development Setup

  sudo dnf install g++ fftw-devel alsa-lib-devel libubsan
  1. Install libwebsockets.
    sudo dnf install openssl-devel cmake
    cd sdk
    git clone https://libwebsockets.org/repo/libwebsockets
    cd libwebsockets
    mkdir build
    cd build
    cmake -DCMAKE_INSTALL_PREFIX:PATH=/home/kevin/sdk/libwebsockets/build/out ..
  1. Environment setup:

    export LD_LIBRARY_PATH=~/sdk/libwebsockets/build/out/lib

Raspberry Pi Build Notes:

cd sdk
mkdir libwebsockets
cmake -DCMAKE_INSTALL_PREFIX:PATH=/home/pi/sdk/libwebsockets/build/out -DLWS_WITH_SSL=OFF ..
make
sudo make install

apt install libasound2-dev

Flow Notes:

  • When a variable has a variant with a numberic channel should the 'all' channel variant be removed?

  • Check for duplicate 'vid'-'chIdx' pairs in var_regster(). (The concatenation of 'vid' and 'chIdx' should be unique

  • When a proc. goes into exec state there should be a guarantee that all registered variables can be successfully read. No error checking should be required.

(How about source variables? these can never be written.)

  • Make an example of a repeating input port. For example a mixer than takes audio input from multiple processors.

  • Make an example of a proc that has a generic port which allows any type, or a collection of specific types, to pass through. For example a 'selector' (n inputs, 1 output) or a router (1 signal to n outputs)

  • Create a master cross-fader.

DONE: Add a version of var_register() that both registers and returns the value of the variable.

Flow Instance Creation:

  1. Create all vars from the class description and initially set their value to the default value given in the class. chIdx=kAnyChIdx.

Note that all vars must be included in the class description.

  1. Apply the preset record from the class description according to the label given in the instance definition.

If the variable values are given as a scalar then the existing variable is simply given a new value.

If the variable values are given as a list then new variables records will be created with explicit channels based on the index of the value in the list. This is referred to as 'channelizing' the variable because the variable will then be represented by multiple physical variable records - one for each channel. This means that all variables will have their initial record, with the chIdx set to 'any', and then they may also have further variable records will for each explicit channel number. The complete list of channelized variable record is kept, in channel order, using the 'ch_link' links with the base of the list on the 'any' record.

  1. Apply the variable values defined in the instance 'args' record. This application is treated similarly to the 'class' preset. If the variable value is presented in a list then the value is assigned to a specific channel if the channel already exists then the value is simply replaced, if the channel does not exist then the variable is 'channelized'.

  2. The varaibles listed in the 'in' list of the instance cfg. are connected to their source variables.

  3. The custom class constructor is run for the instance.

Within the custom class constructor the variables to be used by the instance are 'registered' via var_register(). Registering a variable allows the variable to be assigned a constant id with which the instance can access the variable very efficiently.

If the channel associated with the registered variable does not yet exist for the variable then a channelized variable is first created before registering the variable.

  1. The internal variable id map is created to implement fast access to registered variables.