From 5259f1668f1648d29b7ac4d1fb6e1f71898ce695 Mon Sep 17 00:00:00 2001 From: Serge Poltavski Date: Sun, 26 May 2024 19:24:26 +0300 Subject: [PATCH] Squashed commit of the following: commit 913291ad693cdea55cc1db3ac3148bb2ea99982f Merge: 685a46ef7 34b2c378c Author: Serge Poltavski Date: Sun May 26 19:23:34 2024 +0300 Merge branch 'devel' into ceammc commit 685a46ef791dd5b043a90031da7a2cf328d706cb Author: Serge Poltavski Date: Sat Nov 11 02:21:40 2023 +0300 linux fix commit 7efedac21dff60c72bb4452f487b3a790d5578e2 Author: Serge Poltavski Date: Sun Oct 22 15:17:49 2023 +0300 release 2023.10 (#198) * Update install_deps.sh * Update install_mingw64_deps.sh * win32 faust * Update CMakeLists.txt * Update CMakeLists.txt * Update FindRAGEL.cmake * Update install_mingw64_deps.sh * Update CMakeLists.txt * WITH_VEROVIO=OFF update * verovio link fix * Update FindLibSamplerate.cmake * default server * Update make_bundle.sh * Update s_midi_coremidi.c * update midi chan maxvalue * Update ceammc.synth-help.pd * Update build_options.cmake * test fix * editor updates * Update ceammc_editor_object.cpp * linux updates * Update FindLibMagic.cmake * cppcheck rewrite * remove dead code * Update test_platform.cpp * Update tcl_autogen.cmake * Update CMakeLists.txt * faust updates * Update hoa_process.cpp * Update CMakeLists.txt * Update CMakeLists.txt * Update config_single.sh * recho max time update * active property fix * Update ceammc_dnd-plugin.tcl * Update ceammc_dnd-plugin.tcl * tl.timeline output format added * doc updates * timeline updates * new timeline parser * updates * updates * syntax update * ragel updates * ragel updates * ragel updates * tl updates * tempo updates * duration division * unused include * Update ui_preset.cpp * Update ui_gain.cpp * level meter update * ui.incdec min/max properties added * display_only property added * env.asr2~ stereo env added * Update eclass.cpp * ui bind parser added * ui cleanup * class renaming * syntax update * Update ui_single_value.cpp * Update test_parser_ui_bind.cpp * Update tl_baseobject.cpp * Update ceammc_proxy.h * Update parser_ui_bind.h * ui incdec bind updates * Update ui_incdec.cpp * using templates * ui_bang bind added * category update * ui bind updates * bind param operators added * bind updates * symbols update * move file * key bindings added * key updates * tcl: tablelist added * tablelist * Update argcheck2.h * tableeditor added * adding const * tableeditor updates * preset editor for float * preset symbol editor * preset list prepare * tableeditor size * Update ceammc_tableeditor.tcl * timeline updates * artnet.send cleanup * doc updates * doc update * doc updates * doc updates * 3d.decoder help added * hoa.3d.exchanger~ doc added * Update ceammc_lib_dumpjson.cpp * doc: hoa.2d.exchanger~ added * doc: hoa.3d.scope~ added * doc: format * doc: hoa.map.ui added * doc updates * Update hoa.map-help.pd * preset interpolation added * Update CMakeLists.txt * hoa: 2d.scope~ doc * Create hoa.2d.rotate~-help.pd * recomposer updates * hoa help updates * Create hoa.2d.projector~-help.pd * hoa: 2d meter example added * Update hoa.2d.meter~-help.pd * Create hoa.2d.map~-help.pd * hoa updates * more hoa updates * Update hoa.2d.space-help.pd * Update hoa.3d.exchanger~-help.pd * basic hoa.3d.meter * meter updates * Update hoa.3d.decoder~-help.pd * new hoa files added * hoa: 3d.scope updates * Update hoa.3d.scope~-help.pd * Update hoa_3d_meter.cpp * Update hoa.3d.wider~-help.pd * Update hoa.3d.map~-help.pd * hoa map updates * Update hoa_3d_meter.cpp * hoa doc updates * Update hoa.3d.meter~-help.pd * hoa doc update * Update hoa_3d_meter.cpp * hoa doc updates * preset fixes * hoa doc * more hoa doc updates * tutorial hoa * process 3d support * hoa tutorial updates * hoa: tutorial updates * Update hoa_process_props.cpp * hoa.process bang method * hoa: tuto 9 added * Update Tutorial_8.pd * hoa doc tuto 10 * hoa: fx updates * Update hoa.fx.freeverb~-help.pd * Update hoa.fx.gain~-help.pd * Update hoa.fx.ringmod~-help.pd * Update hoa.fx.mirror~-help.pd * hoa fx updates * Update hoa.syn.grain~-help.pd * Update hoa.syn.grain~-help.pd * Update hoa.fx.freeverb~-help.pd * Update hoa.syn.ringmod~-help.pd * Update hoa.fx.convolve~-help.pd * basic convolution added * Update base_convolve_tilde.cpp * update for 64 bits * Update base_convolve_tilde.cpp * ui updates * hoa doc updates * convolve~ added * ui updates * env.asr2~ doc added * hoa doc updates * hoa.3d.meter~ added * hoa doc update * hoa convolve updates * ui.cmeter~ added * doc update * doc cleanup * hoa.map.ui updates * Update hoa-help.pd * Update hoa.fx.wider~.pd * hoa update * casio midi proto added * obsolete object removed * tl updates * doc format and updates * pddoc updates * bimap updates * doc update * doc update * doc updates * Update CHANGELOG.md * include fix * internal property fix * Update live_capture.h * doc updates * Update live.capture~.pddoc * doc updates * l10n updates * github address update * Update ceammc_tableeditor.tcl * Update CMakeLists.txt * doc update * cmake updates * ir added * Update base_convolve_tilde.cpp * Update ui_bind_object.h * Update parser_ui_bind.h * Update ui_bind_object.h * Update ui_circular_meter.cpp * Create patch_faust.sh * doc update * Update preset_base.cpp * double: fix * double: fix * cmake: win def fix * Update CMakeLists.txt * Update test_coreaudio.cpp * 64: fix * linux: opus check * linux fix * linux: snap fix * Update CMakeLists.txt * doc update * rhvoice done messages * doc update * Update array_ltcplay_tilde.cpp * libltc 1.3.1 fix * linux: verovio fix * snap updates * Update proto_ltc_in_tilde.cpp * Update version.cmake * release texts update * update * win fixes * Update FindLTC.cmake * Update fix_dll_deps.py * win: ltc configs * win: faust updates * release texts update * Update make_lib_win.sh --- ceammc/ext/doc/an.onset~-help.pd | 4 +- ceammc/ext/doc/canvas.dir.abs0.pd | 9 ++++ ceammc/ext/doc/canvas.dir.abs1.pd | 9 ++++ ceammc/ext/doc/canvas.dir.sp0.pd | 8 ++++ ceammc/ext/doc/canvas.dir.sp1.pd | 8 ++++ ceammc/ext/doc/canvas.top.abs.pd | 11 +++++ ceammc/ext/doc/canvas.top.abs0.pd | 6 +++ ceammc/ext/doc/canvas.top.abs1.pd | 6 +++ ceammc/ext/doc/ceammc_lib.xml | 12 ++++++ ceammc/ext/doc/dyn.comp_peak~.plot.pd | 22 ++++++++++ ceammc/ext/doc/fluid~-tune-12.pd | 5 ++- ceammc/ext/doc/global.bimap.sp.pd | 15 +++++++ ceammc/ext/doc/patch.args-ex1.pd | 2 + ceammc/ext/doc/proto.midi.casio.chorus.pd | 16 ++++++++ ceammc/ext/doc/proto.midi.casio.rev.pd | 12 ++++++ ceammc/ext/doc/rhythm.hexbeat.list.pd | 8 ++++ ceammc/ext/doc/seq.nbangs.accel.pd | 21 ++++++++++ ceammc/ext/doc/snd.play~.resamp.pd | 22 ++++++++++ ceammc/ext/doc/snd.play~.seek.pd | 27 ++++++++++++ ceammc/ext/doc/speech.rhvoice~.extra.pd | 23 +++++++++++ ceammc/ext/doc/ui.canvas.arrows.pd | 14 +++++++ ceammc/ext/doc/ui.canvas.color.pd | 26 ++++++++++++ ceammc/ext/doc/ui.canvas.image.pd | 14 +++++++ ceammc/ext/doc/ui.canvas.line.pd | 14 +++++++ ceammc/ext/doc/ui.canvas.matrix.pd | 15 +++++++ ceammc/ext/doc/ui.canvas.music.pd | 11 +++++ ceammc/ext/doc/ui.canvas.text.pd | 12 ++++++ ceammc/ext/src/conv/mod_conv.cpp | 2 + ceammc/ext/src/fx/fx_looper.cpp | 3 ++ ceammc/ext/src/lib/CMakeLists.txt | 9 ++++ ceammc/ext/src/lib/ceammc_atomlist.cpp | 35 ++++++++++++++++ ceammc/ext/src/misc/fluid.cpp | 9 ++++ ceammc/ext/src/proto/proto_midi.cpp | 50 +++++++++++++++++++++++ ceammc/ext/src/proto/proto_midi_parser.h | 1 + ceammc/ext/src/ui/ui_incdec.cpp | 10 +++++ ceammc/ext/src/ui/ui_label.cpp | 1 + ceammc/ext/src/ui/ui_touchosc.cpp | 2 + ceammc/extra/verovio/verovio | 2 +- snap/snapcraft.yaml | 2 - 39 files changed, 472 insertions(+), 6 deletions(-) create mode 100644 ceammc/ext/doc/canvas.dir.abs0.pd create mode 100644 ceammc/ext/doc/canvas.dir.abs1.pd create mode 100644 ceammc/ext/doc/canvas.dir.sp0.pd create mode 100644 ceammc/ext/doc/canvas.dir.sp1.pd create mode 100644 ceammc/ext/doc/canvas.top.abs.pd create mode 100644 ceammc/ext/doc/canvas.top.abs0.pd create mode 100644 ceammc/ext/doc/canvas.top.abs1.pd create mode 100644 ceammc/ext/doc/dyn.comp_peak~.plot.pd create mode 100644 ceammc/ext/doc/global.bimap.sp.pd create mode 100644 ceammc/ext/doc/proto.midi.casio.chorus.pd create mode 100644 ceammc/ext/doc/proto.midi.casio.rev.pd create mode 100644 ceammc/ext/doc/rhythm.hexbeat.list.pd create mode 100644 ceammc/ext/doc/seq.nbangs.accel.pd create mode 100644 ceammc/ext/doc/snd.play~.resamp.pd create mode 100644 ceammc/ext/doc/snd.play~.seek.pd create mode 100644 ceammc/ext/doc/speech.rhvoice~.extra.pd create mode 100644 ceammc/ext/doc/ui.canvas.arrows.pd create mode 100644 ceammc/ext/doc/ui.canvas.color.pd create mode 100644 ceammc/ext/doc/ui.canvas.image.pd create mode 100644 ceammc/ext/doc/ui.canvas.line.pd create mode 100644 ceammc/ext/doc/ui.canvas.matrix.pd create mode 100644 ceammc/ext/doc/ui.canvas.music.pd create mode 100644 ceammc/ext/doc/ui.canvas.text.pd diff --git a/ceammc/ext/doc/an.onset~-help.pd b/ceammc/ext/doc/an.onset~-help.pd index 785c0a074e..55b69ca63f 100644 --- a/ceammc/ext/doc/an.onset~-help.pd +++ b/ceammc/ext/doc/an.onset~-help.pd @@ -59,8 +59,8 @@ value: 1\.; #X msg 110 696 @complex; #X text 245 696 Alias to @method complex. Complex Domain Method onset detection function.; -#X msg 110 738 @compression; -#X text 245 738 Get/Set lambda logarithmic compression factor \, 0 +#X msg 110 753 @compression; +#X text 245 753 Get/Set lambda logarithmic compression factor \, 0 to disable. Type: float. Default value: 1\. Min value: 0\.; #X msg 110 780 @delay; #X text 245 780 Get/Set constant system delay to take back from detection diff --git a/ceammc/ext/doc/canvas.dir.abs0.pd b/ceammc/ext/doc/canvas.dir.abs0.pd new file mode 100644 index 0000000000..6816d1460c --- /dev/null +++ b/ceammc/ext/doc/canvas.dir.abs0.pd @@ -0,0 +1,9 @@ +#N canvas 0 0 365 241 12; +#X obj 20 48 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 20 77 canvas.dir.sp0; +#X obj 20 106 ui.dt @auto_size 0 @size 400 45; +#X floatatom 96 164 5 0 0 0 - - -; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 1 1 3 0; diff --git a/ceammc/ext/doc/canvas.dir.abs1.pd b/ceammc/ext/doc/canvas.dir.abs1.pd new file mode 100644 index 0000000000..28a26d2133 --- /dev/null +++ b/ceammc/ext/doc/canvas.dir.abs1.pd @@ -0,0 +1,9 @@ +#N canvas 0 0 365 241 12; +#X obj 20 48 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 20 77 canvas.dir @abs 0; +#X obj 20 106 ui.dt @auto_size 0 @size 400 45; +#X floatatom 96 164 5 0 0 0 - - -; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 1 1 3 0; diff --git a/ceammc/ext/doc/canvas.dir.sp0.pd b/ceammc/ext/doc/canvas.dir.sp0.pd new file mode 100644 index 0000000000..fce332952f --- /dev/null +++ b/ceammc/ext/doc/canvas.dir.sp0.pd @@ -0,0 +1,8 @@ +#N canvas 0 0 365 241 12; +#X obj 20 48 inlet; +#X obj 20 77 canvas.dir @abs 0; +#X obj 20 106 outlet; +#X obj 116 106 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 1 1 3 0; diff --git a/ceammc/ext/doc/canvas.dir.sp1.pd b/ceammc/ext/doc/canvas.dir.sp1.pd new file mode 100644 index 0000000000..3e08288cfe --- /dev/null +++ b/ceammc/ext/doc/canvas.dir.sp1.pd @@ -0,0 +1,8 @@ +#N canvas 0 0 365 241 12; +#X obj 20 48 inlet; +#X obj 20 77 canvas.dir @abs 1; +#X obj 20 106 outlet; +#X obj 116 106 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 1 1 3 0; diff --git a/ceammc/ext/doc/canvas.top.abs.pd b/ceammc/ext/doc/canvas.top.abs.pd new file mode 100644 index 0000000000..5175583edf --- /dev/null +++ b/ceammc/ext/doc/canvas.top.abs.pd @@ -0,0 +1,11 @@ +#N canvas 0 0 471 241 12; +#X msg 20 48 bang; +#X msg 298 48 bang; +#X obj 20 77 canvas.top.abs0; +#X obj 298 77 canvas.top.abs1; +#X obj 20 106 ui.dt; +#X obj 298 106 ui.dt; +#X connect 0 0 2 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 5 0; diff --git a/ceammc/ext/doc/canvas.top.abs0.pd b/ceammc/ext/doc/canvas.top.abs0.pd new file mode 100644 index 0000000000..0c93187217 --- /dev/null +++ b/ceammc/ext/doc/canvas.top.abs0.pd @@ -0,0 +1,6 @@ +#N canvas 0 0 471 241 12; +#X obj 20 48 inlet; +#X obj 20 77 canvas.top @abs 0; +#X obj 20 106 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; diff --git a/ceammc/ext/doc/canvas.top.abs1.pd b/ceammc/ext/doc/canvas.top.abs1.pd new file mode 100644 index 0000000000..271fb1ac37 --- /dev/null +++ b/ceammc/ext/doc/canvas.top.abs1.pd @@ -0,0 +1,6 @@ +#N canvas 0 0 471 241 12; +#X obj 20 48 inlet; +#X obj 20 77 canvas.top @abs 1; +#X obj 20 106 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; diff --git a/ceammc/ext/doc/ceammc_lib.xml b/ceammc/ext/doc/ceammc_lib.xml index 2f98ffab3d..8acb2c4808 100644 --- a/ceammc/ext/doc/ceammc_lib.xml +++ b/ceammc/ext/doc/ceammc_lib.xml @@ -1746,6 +1746,17 @@ + + + + + + + + + + + @@ -2621,6 +2632,7 @@ Pierre Guillot Richard Dudas Romain Michon + Serge Poltavski Serge Poltavsky Thomas Le Meur Till Bovermann diff --git a/ceammc/ext/doc/dyn.comp_peak~.plot.pd b/ceammc/ext/doc/dyn.comp_peak~.plot.pd new file mode 100644 index 0000000000..9900f4790c --- /dev/null +++ b/ceammc/ext/doc/dyn.comp_peak~.plot.pd @@ -0,0 +1,22 @@ +#N canvas 0 0 829 614 12; +#X obj 20 48 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 20 77 plot.linspace~ -60 6 1024; +#X obj 327 77 ui.k @show_value 1 @label STRENGTH; +#X obj 432 77 ui.hsl 0 24 @show_value 1; +#X obj 20 106 dbfs->amp~; +#X msg 432 106 @knee \$1; +#X obj 20 135 dyn.comp_peak~ 1 -20 0.1 1; +#X obj 20 164 amp->dbfs~; +#X obj 20 192 ui.plot~ @ymin -60 @ymax 6 @size 400 350 @xlabels 1 +@ylabels 1 @xmin_grid 0 @ymin_ticks 0 @xmin_ticks 0; +#X text 20 567 ...; +#X connect 0 0 1 0; +#X connect 1 0 4 0; +#X connect 3 0 5 0; +#X connect 4 0 6 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 1 1 8 1; +#X connect 2 0 6 1; +#X connect 5 0 6 0; diff --git a/ceammc/ext/doc/fluid~-tune-12.pd b/ceammc/ext/doc/fluid~-tune-12.pd index a2218018a4..cd21c12601 100644 --- a/ceammc/ext/doc/fluid~-tune-12.pd +++ b/ceammc/ext/doc/fluid~-tune-12.pd @@ -20,6 +20,9 @@ #X connect 7 0 9 0; #X connect 8 0 9 0; #X connect 9 0 11 0; -#X connect 9 1 11 1; +#X connect 10 0 11 0; #X connect 11 0 13 0; #X connect 11 1 13 1; +#X connect 13 0 15 0; +#X connect 13 1 15 1; +#X connect 2 0 11 0; diff --git a/ceammc/ext/doc/global.bimap.sp.pd b/ceammc/ext/doc/global.bimap.sp.pd new file mode 100644 index 0000000000..a03eeb0666 --- /dev/null +++ b/ceammc/ext/doc/global.bimap.sp.pd @@ -0,0 +1,15 @@ +#N canvas 0 0 407 241 12; +#X msg 20 48 1; +#X msg 58 48 1 3 5; +#X msg 135 48 2; +#X msg 173 48 2 4 6; +#X obj 20 77 global.bimap GBM; +#X text 212 77 click to view/edit; +#X obj 20 106 ui.dt; +#X obj 144 106 ui.dt; +#X connect 0 0 4 0; +#X connect 1 0 4 0; +#X connect 2 0 4 1; +#X connect 3 0 4 1; +#X connect 4 0 6 0; +#X connect 4 1 7 0; diff --git a/ceammc/ext/doc/patch.args-ex1.pd b/ceammc/ext/doc/patch.args-ex1.pd index df3e664c9b..e721c79fc4 100644 --- a/ceammc/ext/doc/patch.args-ex1.pd +++ b/ceammc/ext/doc/patch.args-ex1.pd @@ -2,5 +2,7 @@ #X obj 20 48 inlet; #X obj 20 77 patch.args; #X obj 20 106 outlet; +#X obj 116 106 outlet; #X connect 0 0 1 0; #X connect 1 0 2 0; +#X connect 1 1 3 0; diff --git a/ceammc/ext/doc/proto.midi.casio.chorus.pd b/ceammc/ext/doc/proto.midi.casio.chorus.pd new file mode 100644 index 0000000000..0b3ec31eb4 --- /dev/null +++ b/ceammc/ext/doc/proto.midi.casio.chorus.pd @@ -0,0 +1,16 @@ +#N canvas 0 0 533 328 12; +#X obj 20 48 ui.hrd 5; +#X obj 192 48 ui.knob; +#X msg 20 92 chorus_type \$1; +#X msg 192 92 chorus_depth \$1; +#X obj 39 120 ui.hsl @show_value 1; +#X msg 39 149 chorus \$1; +#X obj 20 178 proto.midi.casio; +#X obj 20 207 midiout; +#X connect 0 0 2 0; +#X connect 1 0 3 0; +#X connect 4 0 5 0; +#X connect 2 0 6 0; +#X connect 5 0 6 0; +#X connect 6 0 7 0; +#X connect 3 0 6 0; diff --git a/ceammc/ext/doc/proto.midi.casio.rev.pd b/ceammc/ext/doc/proto.midi.casio.rev.pd new file mode 100644 index 0000000000..db87bf4905 --- /dev/null +++ b/ceammc/ext/doc/proto.midi.casio.rev.pd @@ -0,0 +1,12 @@ +#N canvas 0 0 533 328 12; +#X obj 20 48 ui.hrd 5; +#X obj 164 48 ui.knob; +#X msg 20 92 rev_type \$1; +#X msg 164 92 rev_time \$1; +#X obj 20 149 proto.midi.casio; +#X obj 20 178 midiout; +#X connect 0 0 2 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; diff --git a/ceammc/ext/doc/rhythm.hexbeat.list.pd b/ceammc/ext/doc/rhythm.hexbeat.list.pd new file mode 100644 index 0000000000..9208335b40 --- /dev/null +++ b/ceammc/ext/doc/rhythm.hexbeat.list.pd @@ -0,0 +1,8 @@ +#N canvas 0 0 640 328 12; +#X msg 20 48 list #1 #2 #4 #8; +#X obj 20 77 rhythm.hexbeat; +#X obj 20 106 msg set row; +#X obj 20 135 ui.matrix 4 4; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; diff --git a/ceammc/ext/doc/seq.nbangs.accel.pd b/ceammc/ext/doc/seq.nbangs.accel.pd new file mode 100644 index 0000000000..79641de8ab --- /dev/null +++ b/ceammc/ext/doc/seq.nbangs.accel.pd @@ -0,0 +1,21 @@ +#N canvas 0 0 414 328 12; +#X msg 20 48 17; +#X obj 68 48 ui.k 0.25 4 @show_value 1; +#X obj 183 48 ui.k -8 8 @show_value 1; +#X msg 68 106 @accel \$1; +#X msg 183 106 @curve \$1; +#X obj 20 135 seq.nbangs @t 200; +#X obj 20 164 click~; +#X obj 20 192 flt.resonbp~ 1000 40; +#X obj 20 221 ui.hgain~; +#X obj 20 250 dac~; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 0 0 5 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 6 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 8 0 9 0; +#X connect 8 0 9 1; diff --git a/ceammc/ext/doc/snd.play~.resamp.pd b/ceammc/ext/doc/snd.play~.resamp.pd new file mode 100644 index 0000000000..dba4e07707 --- /dev/null +++ b/ceammc/ext/doc/snd.play~.resamp.pd @@ -0,0 +1,22 @@ +#N canvas 0 0 616 472 12; +#X text 20 48 change in Audio Preferences samplerate \, then play both +variants; +#X msg 20 92 symbol %CEAMMC%/guitar1.wav \, 1; +#X msg 231 120 open %CEAMMC%/guitar1.wav \, 1; +#X obj 20 178 expand_env; +#X obj 231 178 expand_env; +#X obj 20 207 snd.play~ 1; +#X obj 231 207 readsf~; +#X obj 20 235 ui.hgain2~; +#X obj 240 235 ui.dsp~; +#X obj 20 264 dac~; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 5 0; +#X connect 4 0 6 0; +#X connect 5 0 7 0; +#X connect 5 0 7 1; +#X connect 6 0 7 0; +#X connect 6 0 7 1; +#X connect 7 0 9 0; +#X connect 7 1 9 1; diff --git a/ceammc/ext/doc/snd.play~.seek.pd b/ceammc/ext/doc/snd.play~.seek.pd new file mode 100644 index 0000000000..f15e61a92a --- /dev/null +++ b/ceammc/ext/doc/snd.play~.seek.pd @@ -0,0 +1,27 @@ +#N canvas 0 0 616 472 12; +#X msg 20 48 symbol %CEAMMC%/guitar1.wav \, 1; +#X obj 279 48 msg.onclose bang; +#X obj 20 77 expand_env; +#X msg 144 77 seek 500; +#X msg 279 77 stop; +#X msg 39 106 seek; +#X msg 144 106 seek 500ms; +#X msg 279 106 seek 1.5sec; +#X msg 413 106 seek 15000samp; +#X obj 20 164 snd.play~ 1 @loop 1; +#X obj 20 192 ui.hgain2~; +#X obj 240 192 ui.dsp~; +#X obj 20 221 dac~; +#X connect 0 0 2 0; +#X connect 1 0 4 0; +#X connect 2 0 9 0; +#X connect 5 0 9 0; +#X connect 6 0 9 0; +#X connect 7 0 9 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 9 0 10 1; +#X connect 10 0 12 0; +#X connect 10 1 12 1; +#X connect 3 0 9 0; +#X connect 4 0 9 0; diff --git a/ceammc/ext/doc/speech.rhvoice~.extra.pd b/ceammc/ext/doc/speech.rhvoice~.extra.pd new file mode 100644 index 0000000000..f7e9da743e --- /dev/null +++ b/ceammc/ext/doc/speech.rhvoice~.extra.pd @@ -0,0 +1,23 @@ +#N canvas 0 0 739 357 12; +#X msg 20 48 ssml Я Павела я Анна; +#X msg 423 77 all; +#X msg 480 77 !; +#X msg 48 106 list з+амок и зам+ок; +#X obj 423 106 symbol; +#X msg 509 106 symbol; +#X msg 77 135 list казнить нельзя\ \, помиловать!; +#X msg 423 135 @punct \$1; +#X obj 20 164 speech.rhvoice~; +#X obj 20 192 ui.hgain~; +#X obj 20 221 dac~; +#X connect 1 0 4 0; +#X connect 2 0 4 0; +#X connect 4 0 7 0; +#X connect 5 0 7 0; +#X connect 0 0 8 0; +#X connect 3 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 8 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 9 0 10 1; diff --git a/ceammc/ext/doc/ui.canvas.arrows.pd b/ceammc/ext/doc/ui.canvas.arrows.pd new file mode 100644 index 0000000000..1ec600137b --- /dev/null +++ b/ceammc/ext/doc/ui.canvas.arrows.pd @@ -0,0 +1,14 @@ +#N canvas 0 0 956 587 12; +#X msg 20 48 width 1 \, arrow 30 30 130 160 A a \, stroke red \, update; +#X msg 20 77 arrow 60 30 160 160 O o \, stroke blue \, update; +#X msg 20 106 arrow 90 30 190 160 T t \, stroke navy \, update; +#X msg 20 135 arrow 120 30 220 160 V v \, stroke orange \, update; +#X msg 20 164 arrow 150 30 250 160 X x \, stroke gray \, update; +#X msg 20 192 arrow 180 30 280 160 n n \, stroke green \, update; +#X obj 20 235 ui.canvas @size 300 200; +#X connect 0 0 6 0; +#X connect 1 0 6 0; +#X connect 2 0 6 0; +#X connect 3 0 6 0; +#X connect 4 0 6 0; +#X connect 5 0 6 0; diff --git a/ceammc/ext/doc/ui.canvas.color.pd b/ceammc/ext/doc/ui.canvas.color.pd new file mode 100644 index 0000000000..a966ede37b --- /dev/null +++ b/ceammc/ext/doc/ui.canvas.color.pd @@ -0,0 +1,26 @@ +#N canvas 0 0 956 587 12; +#X msg 20 48 clear \, bg #FFAAFF \, update; +#X text 327 48 RGB; +#X msg 20 77 bg #DDAA33AA \, update; +#X text 327 77 RGBA; +#X msg 20 106 bg #BEF \, update; +#X text 327 106 short RGB; +#X msg 20 135 bg #30D5 \, update; +#X text 327 135 short RGBA; +#X msg 20 164 bg navy \, update; +#X text 327 164 named color; +#X msg 20 192 bg navy!+50 \, update; +#X text 327 192 lighter named color; +#X msg 20 221 bg gray!-50 \, update; +#X text 327 221 darker named color; +#X msg 20 250 bg random \, update; +#X text 327 250 random color; +#X obj 20 279 ui.canvas; +#X connect 0 0 16 0; +#X connect 2 0 16 0; +#X connect 4 0 16 0; +#X connect 6 0 16 0; +#X connect 8 0 16 0; +#X connect 10 0 16 0; +#X connect 12 0 16 0; +#X connect 14 0 16 0; diff --git a/ceammc/ext/doc/ui.canvas.image.pd b/ceammc/ext/doc/ui.canvas.image.pd new file mode 100644 index 0000000000..ce6e93fcb3 --- /dev/null +++ b/ceammc/ext/doc/ui.canvas.image.pd @@ -0,0 +1,14 @@ +#N canvas 0 0 956 587 12; +#X msg 20 48 clear \, image 20 20 img/puredata-ceammc.png 0.5 \, update; +#X msg 20 77 clear \, image -30 -20 img/sample.svg 0.6 \, update; +#X msg 20 106 clear \, image -30 -20 img/bach.jpg \, update; +#X msg 20 135 clear \, icon 100 150 120 settings \, stroke navy \, update; +#X msg 39 164 icon ?; +#X obj 20 192 ui.canvas @size 300 200; +#X obj 20 408 ui.link @title See_Material_Icons @url +https://fonts.google.com/icons; +#X connect 4 0 5 0; +#X connect 0 0 5 0; +#X connect 1 0 5 0; +#X connect 2 0 5 0; +#X connect 3 0 5 0; diff --git a/ceammc/ext/doc/ui.canvas.line.pd b/ceammc/ext/doc/ui.canvas.line.pd new file mode 100644 index 0000000000..0cc6d562fd --- /dev/null +++ b/ceammc/ext/doc/ui.canvas.line.pd @@ -0,0 +1,14 @@ +#N canvas 0 0 956 587 12; +#X msg 20 48 clear \, line_cap butt \, width 10 \, line 10% 10% 90% 90% \, stroke blue \, update; +#X msg 20 92 clear \, line_cap square \, width 10 \, line 10% 10% 90% 90% \, stroke blue \, update; +#X msg 20 135 clear \, line_cap round \, width 10 \, line 10% 10% 90% 90% \, stroke red \, update; +#X msg 58 178 dash; +#X msg 154 178 dash 5 5 12; +#X msg 20 207 clear \, width 10 \, line_cap round \, move_to 10% 50% \, line_to 90% 50% \, line_to 50% 10% \, line_to 50% 90% \, stroke cyan \, update; +#X obj 20 264 ui.canvas @size 300 200; +#X connect 0 0 6 0; +#X connect 1 0 6 0; +#X connect 2 0 6 0; +#X connect 5 0 6 0; +#X connect 3 0 6 0; +#X connect 4 0 6 0; diff --git a/ceammc/ext/doc/ui.canvas.matrix.pd b/ceammc/ext/doc/ui.canvas.matrix.pd new file mode 100644 index 0000000000..e13cd641c1 --- /dev/null +++ b/ceammc/ext/doc/ui.canvas.matrix.pd @@ -0,0 +1,15 @@ +#N canvas 0 0 1000 587 12; +#X obj 20 48 loadbang; +#X msg 20 77 clear \, image 20 20 img/2d_matrix.svg 0.32 \, update; +#X obj 20 106 ui.canvas @size 380 500; +#X msg 413 106 clear \, matrix 2 0 0 2 0 0 \, rect 50 50 100 100 \, stroke red \, update; +#X msg 423 149 clear \, matrix 2 0 0 2 50 70 \, rect 50 50 100 100 \, stroke red \, update; +#X msg 432 192 clear \, matrix 2.5 0 0 1.5 0 0 \, rect 50 50 100 100 \, stroke red \, update; +#X msg 442 235 clear \, matrix 2 0.5 0 2 0 0 \, rect 50 50 100 100 \, stroke red \, update; +#X obj 413 293 ui.canvas @size 300 200; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 3 0 7 0; +#X connect 4 0 7 0; +#X connect 5 0 7 0; +#X connect 6 0 7 0; diff --git a/ceammc/ext/doc/ui.canvas.music.pd b/ceammc/ext/doc/ui.canvas.music.pd new file mode 100644 index 0000000000..b65b9e56e6 --- /dev/null +++ b/ceammc/ext/doc/ui.canvas.music.pd @@ -0,0 +1,11 @@ +#N canvas 0 0 956 587 12; +#X msg 20 48 clear \, musicxml -100 -20 music/simple.mxml 120 \, update; +#X obj 39 77 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 39 106 openpanel; +#X msg 39 135 clear \, musicxml 0 0 \$1 50 \, update; +#X obj 20 164 ui.canvas @size 500 400; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 0 0 4 0; diff --git a/ceammc/ext/doc/ui.canvas.text.pd b/ceammc/ext/doc/ui.canvas.text.pd new file mode 100644 index 0000000000..f9403894c5 --- /dev/null +++ b/ceammc/ext/doc/ui.canvas.text.pd @@ -0,0 +1,12 @@ +#N canvas 0 0 956 587 12; +#X msg 20 48 clear \, matrix \, translate 50% 50%; +#X msg 29 77 rotate 30 \, font Verdana \, font_size 20 \, text 20 0 CEAM \, fill random \, update; +#X msg 39 120 matrix \, font Verdana bold \, font_size 40 \, width 2 \, text 50 75 HELLO \, fill gray preserve \, stroke cyan \, update; +#X msg 48 164 clear \, font Verdana italic \, font_size 50 \, text 50 75 HELLO \, fill black \, update; +#X msg 58 207 clear \, font Verdana italic bold 60 \, text 25% 75 HELLO \, fill black \, update; +#X obj 20 250 ui.canvas @size 300 200; +#X connect 0 0 5 0; +#X connect 1 0 5 0; +#X connect 2 0 5 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; diff --git a/ceammc/ext/src/conv/mod_conv.cpp b/ceammc/ext/src/conv/mod_conv.cpp index ee6383796b..242dd07a26 100644 --- a/ceammc/ext/src/conv/mod_conv.cpp +++ b/ceammc/ext/src/conv/mod_conv.cpp @@ -50,6 +50,7 @@ void setup_conv_bits2pos(); void setup_conv_char2morse(); void setup_conv_guido2note(); void setup_conv_note2guido(); +void setup_conv_char2morse(); void ceammc_conv_setup() { @@ -103,4 +104,5 @@ void ceammc_conv_setup() setup_conv_char2morse(); setup_conv_guido2note(); setup_conv_note2guido(); + setup_conv_char2morse(); } diff --git a/ceammc/ext/src/fx/fx_looper.cpp b/ceammc/ext/src/fx/fx_looper.cpp index f980edf668..c67440970c 100644 --- a/ceammc/ext/src/fx/fx_looper.cpp +++ b/ceammc/ext/src/fx/fx_looper.cpp @@ -210,6 +210,9 @@ void FxLooper::initDone() OBJ_DBG << fmt::format("using default loop length: {}", len_sec); } + debug_ = new BoolProperty("@debug", true); + addProperty(debug_); + resizeBuffer(); calcXFades(); OBJ_DBG << fmt::format("max loop length {} samples ({} sec)", max_samples_, capacity_sec_->value()); diff --git a/ceammc/ext/src/lib/CMakeLists.txt b/ceammc/ext/src/lib/CMakeLists.txt index 85e3e568d9..1d3a41fca3 100644 --- a/ceammc/ext/src/lib/CMakeLists.txt +++ b/ceammc/ext/src/lib/CMakeLists.txt @@ -259,6 +259,15 @@ if(LIBLO_FOUND) endif() target_sources(ceammc_core PRIVATE ceammc_osc.cpp) +# liblo +find_package(liblo) +if(LIBLO_FOUND) + target_compile_definitions(ceammc_core PRIVATE WITH_LIBLO) + target_include_directories(ceammc_core PRIVATE ${LIBLO_INCLUDE_DIRS}) + target_link_libraries(ceammc_core PUBLIC ${LIBLO_LIBRARIES}) +endif() +target_sources(ceammc_core PRIVATE ceammc_osc.cpp) + if(BISON_FOUND AND FLEX_FOUND) add_custom_target(ceammc_arrayloader_gen COMMAND $ array_loader.l diff --git a/ceammc/ext/src/lib/ceammc_atomlist.cpp b/ceammc/ext/src/lib/ceammc_atomlist.cpp index b67159a5f3..1f0955cca5 100644 --- a/ceammc/ext/src/lib/ceammc_atomlist.cpp +++ b/ceammc/ext/src/lib/ceammc_atomlist.cpp @@ -420,6 +420,41 @@ AtomListView AtomList::asLogicList() const noexcept return {}; } +bool AtomList::isMsgAny() const noexcept +{ + if (atoms_.size() > 0 && atoms_[0].isSymbol()) { + auto& f = atoms_[0]; + return f != &s_bang && f != &s_float && f != &s_symbol && f != &s_pointer && f != &s_list; + } else + return false; +} + +t_float AtomList::asMsgFloat(t_float def) const noexcept +{ + if (isMsgFloat()) + return atoms_[1].asT(); + else + return def; +} + +t_symbol* AtomList::asMsgSymbol(t_symbol* def) const noexcept +{ + if (isMsgSymbol()) + return atoms_[1].asT(); + else + return def; +} + +AtomListView AtomList::asLogicList() const noexcept +{ + if (isMsgList()) + return view(1); + else if (atoms_.size() > 1 && atoms_[0].isFloat()) + return view(); + else + return {}; +} + void AtomList::fill(const Atom& a) { std::fill(atoms_.begin(), atoms_.end(), a); diff --git a/ceammc/ext/src/misc/fluid.cpp b/ceammc/ext/src/misc/fluid.cpp index 043102c4ab..6a025d9335 100644 --- a/ceammc/ext/src/misc/fluid.cpp +++ b/ceammc/ext/src/misc/fluid.cpp @@ -744,6 +744,15 @@ void Fluid::m_tune_semi(t_symbol* s, const AtomListView& lv) callFluidChannelFn(s, ch.chan, fn, ch.value, TUNE_CENTS_VALUE_NAME, lv); } +struct StreamGuard { + ArgChecker& check; + StreamGuard(ArgChecker& chk) + : check(chk) + { + } + ~StreamGuard() { check.setOut(std::cerr); } +}; + void Fluid::m_tune_octave(t_symbol* s, const AtomListView& lv) { static const args::ArgChecker chk("BANK:i PROG:i f f f f f f f f f f f f"); diff --git a/ceammc/ext/src/proto/proto_midi.cpp b/ceammc/ext/src/proto/proto_midi.cpp index b99861404f..4dd4e94f9d 100644 --- a/ceammc/ext/src/proto/proto_midi.cpp +++ b/ceammc/ext/src/proto/proto_midi.cpp @@ -300,6 +300,25 @@ void ProtoMidi::m_raw(t_symbol* s, const AtomListView& lv) } } +void ProtoMidi::m_raw(t_symbol* s, const AtomListView& lv) +{ + std::uint8_t b = 0; + for (auto& a : lv) { + if (a.isSymbol()) { + if (!parser::parse_midi_byte_hex(a, b)) { + METHOD_ERR(s) << "byte or hex is expected, got: " << a; + continue; + } + } else if (a.isFloat()) + b = a.asT(); + + if (b < 0 || b > 0xFF) + METHOD_ERR(s) << "invalid byte value: " << b; + else + floatTo(0, b); + } +} + void ProtoMidi::m_songPosition(t_symbol* s, const AtomListView& lv) { if (lv.size() < 1) { @@ -552,6 +571,37 @@ void ProtoMidi::m_allSoundOff(t_symbol* s, const AtomListView& lv) } } +void ProtoMidi::m_allNotesOff(t_symbol* s, const AtomListView& lv) +{ + static const args::ArgChecker chk("CHAN:i[0,15]?"); + if (!chk.check(lv, this)) + return chk.usage(this, s); + + auto chan = lv.intAt(0, -1); + + if (chan < 0) { + for (int i = 0; i < 16; i++) + sendBytes3(i, midi::MIDI_CONTROLCHANGE, CC_ALL_NOTES_OFF, 0x7F); + } else { + sendBytes3(chan, midi::MIDI_CONTROLCHANGE, CC_ALL_NOTES_OFF, 0x7F); + } +} + +void ProtoMidi::m_allSoundOff(t_symbol* s, const AtomListView& lv) +{ + static const args::ArgChecker chk("CHAN:i[0,15]?"); + if (!chk.check(lv, this)) + return chk.usage(this, s); + + auto chan = lv.intAt(0, -1); + if (chan < 0) { + for (int i = 0; i < 16; i++) + sendBytes3(i, midi::MIDI_CONTROLCHANGE, CC_ALL_SOUND_OFF, 0x7F); + } else { + sendBytes3(chan, midi::MIDI_CONTROLCHANGE, CC_ALL_SOUND_OFF, 0x7F); + } +} + void ProtoMidi::m_cc(t_symbol* s, const AtomListView& lv) { if (!checkMethodByte3(s, lv)) { diff --git a/ceammc/ext/src/proto/proto_midi_parser.h b/ceammc/ext/src/proto/proto_midi_parser.h index 50eacefcd6..34e0f72610 100644 --- a/ceammc/ext/src/proto/proto_midi_parser.h +++ b/ceammc/ext/src/proto/proto_midi_parser.h @@ -16,6 +16,7 @@ #include #include +#include #include #include diff --git a/ceammc/ext/src/ui/ui_incdec.cpp b/ceammc/ext/src/ui/ui_incdec.cpp index 4a8eaa3e7b..0943b4a3d3 100644 --- a/ceammc/ext/src/ui/ui_incdec.cpp +++ b/ceammc/ext/src/ui/ui_incdec.cpp @@ -27,6 +27,16 @@ enum { MODE_DEC = -1 }; +constexpr int MAX_VALUE_DEFAULT = 8192; +constexpr int MIN_VALUE_DEFAULT = -MAX_VALUE_DEFAULT; +constexpr int FLASH_MS = 100; + +enum { + MODE_NONE = 0, + MODE_INC = 1, + MODE_DEC = -1 +}; + UIIncDec::UIIncDec() : UIBindObject<2> { { [this](int v) { m_inc(); }, [this](int v) { m_dec(); } } } , prop_color_arrow(rgba_greydark) diff --git a/ceammc/ext/src/ui/ui_label.cpp b/ceammc/ext/src/ui/ui_label.cpp index d63698a38a..49867b7b6e 100644 --- a/ceammc/ext/src/ui/ui_label.cpp +++ b/ceammc/ext/src/ui/ui_label.cpp @@ -13,6 +13,7 @@ *****************************************************************************/ #include "ui_label.h" #include "ceammc_abstractdata.h" +#include "ceammc_canvas.h" #include "ceammc_containers.h" #include "ceammc_crc32.h" #include "ceammc_format.h" diff --git a/ceammc/ext/src/ui/ui_touchosc.cpp b/ceammc/ext/src/ui/ui_touchosc.cpp index 8c93404ed9..7d403ec066 100644 --- a/ceammc/ext/src/ui/ui_touchosc.cpp +++ b/ceammc/ext/src/ui/ui_touchosc.cpp @@ -16,6 +16,8 @@ #include "ceammc_factory.h" #include "ceammc_format.h" #include "ceammc_platform.h" +#include "ceammc_poll_dispatcher.h" +#include "ceammc_thread.h" //#include "ceammc_thread.h" #include "fmt/core.h" diff --git a/ceammc/extra/verovio/verovio b/ceammc/extra/verovio/verovio index da4bac485c..ec1ae463ae 160000 --- a/ceammc/extra/verovio/verovio +++ b/ceammc/extra/verovio/verovio @@ -1 +1 @@ -Subproject commit da4bac485ca65636d2d3fac037bf5e26c021721c +Subproject commit ec1ae463ae1a3343924526db146d3f766e923e91 diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index e776018e36..4ee13f02a1 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -130,7 +130,6 @@ parts: - libmagic-dev - libmodplug-dev - librubberband-dev - - libsamplerate0-dev - libsndfile1-dev - libssl-dev - libudev-dev @@ -164,7 +163,6 @@ parts: - libmagic1 - libmodplug1 - librubberband2 - - libsamplerate0 - libsndfile1 - libssl1.1 - libtcl8.6