From aa13301b84ae4fe3d6ec4cb01217ce90d6fd197e Mon Sep 17 00:00:00 2001 From: "Robin E. R. Davies" Date: Fri, 1 Aug 2025 18:24:54 -0400 Subject: [PATCH] Checkpoint --- .vscode/launch.json | 3 +- .vscode/settings.json | 2 +- artifacts/fx_nam.svgz | Bin 0 -> 2369 bytes src/AlsaDriver.cpp | 31 +- src/PluginHost.cpp | 7 + src/Worker.cpp | 10 +- src/main.cpp | 25 + todo.txt | 7 +- vg.output | 618 +++++++++++------------- vite/public/img/fx_plugin.svg | 10 - vite/src/pipedal/FilePropertyDialog.tsx | 15 +- vite/src/pipedal/LoadPluginDialog.tsx | 17 +- vite/src/pipedal/Lv2Plugin.tsx | 7 +- vite/src/pipedal/PedalboardView.tsx | 18 +- vite/src/pipedal/PluginIcon.tsx | 12 +- vite/src/pipedal/svg/fx_nam.svg | 21 + 16 files changed, 415 insertions(+), 388 deletions(-) create mode 100644 artifacts/fx_nam.svgz create mode 100644 vite/src/pipedal/svg/fx_nam.svg diff --git a/.vscode/launch.json b/.vscode/launch.json index 300d90f..de4a777 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -114,7 +114,8 @@ { "name": "LD_LIBRARY_PATH", "value": "/usr/local/lib/aarch64-linux-gnu" - } + }, + ], "externalConsole": false, "MIMode": "gdb", diff --git a/.vscode/settings.json b/.vscode/settings.json index b214712..d95b5fd 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -168,7 +168,7 @@ "cSpell.ignoreWords": [ "nammodel" ], - "cSpell.enabled": true, + "cSpell.enabled": false, // Disable all automatic completion suggestions - only show when Ctrl+Space is pressed "editor.quickSuggestions": { diff --git a/artifacts/fx_nam.svgz b/artifacts/fx_nam.svgz new file mode 100644 index 0000000000000000000000000000000000000000..627571a363b93bb52a3f54ff1acea628bab8bd04 GIT binary patch literal 2369 zcmV-H3BL9piwFP!000000PR}YZrnx|eYU=$rt^>lAgS7`*pU>Boy|Z31elB;{1Q-2 zs>M-@Y>?FEub)%JrP-U@kv;Z!MzRHVRbAFy&t2L+`TqWTL2k3E&dcI-!Xi2$Surcq zyqKR({`tpGp`DPrNs2UCltp$rDay(BXGbT03q$gAR%BJul+~2{JuS~O@_MnjsT;pV zn2u;f1M-hIKa(Htmu1zE-xoLY@O42Vzxk%+IVB*Zn=SD>P0Lx4T!Z@J{!e^} zK=ZDBp}4AN$ugUcwBivb-<;FLN~@J*0pXPMknxbRZ+q@VJ?&pTom@7}a(aAxcXt={ zn^9TKj~z=dWqsW5kKXTv8{Y3XqPo1PX4wU<$f6=^j(_;$hv6`!QQD-dYu32m3D1{P zN{^x9nAz?8QOdKEG`pyK6S~h#stGwhI~i=~v`L-Qda7ZAN#R*7lX*5P7iD!i`Rc;| z`0ewuO0%jzp#EocP{Kla<02>GYTYUIWqIc=tuK?bygQxn^<#H5dYf*a&MvdrRaTvs zNdZMAV`_l#un9eJw;6<{iv-Nl0mE|>Jghhf0L+$$E48hFeNC{y#HJL#| z&heI|YU8cDynu3HhZh!ey7Rop52Ky6Hwo^y6zmQj_8nX&_xW}HE`zFUL)@FH%8Djj zBoA3NKnme-bTaSV|EoLuvwbnm>m_JiDk`$c+0l!WWzt-(o#e$LFIsEj<=>f|OX)fEc`aoitT`{|)mwhLJe3!p21KNEt3##9!o#1)}69|I_Z2FwaGD zoiCu<*S{x=q{)l&SNt{)%Pf3ZF4EUcvdCv&ugGiI`g9`XAes|~VSRRSe{$>=knrfm zN=Qd@HF;cICL<-4Btnhk-DUNUti#z=FY?Lpd>j|A%IjrWXX$zvz~uzFl#ySEA+Lz= zu7dP||AeO@w?s%XBVA08&YJ}OB$w?`=W1-Vf#E)A^2XnYfNHOj(o?aP-P?^guFQ(_&ZMNul(*((|s*;EH`fhj3pj?JNt4+tL7W!Wk zu3czT69Bt-l$4t(f9MwSX8;S?5Wp*fd|k{MqbHq>9^`dt@- z(>4NIi}YtZjnY{GT?IJvJyr<&6cu)s^a*FBA%_k$7J)z+7qQkZYFyf&NW3CI@l-Lc zHzd@NVnRVh7AY-I>_}+9nZ~g*gfUtxPC&1zk;X+SY@{dx6+4=ONJm1%LUJObm>L_$ z*og&I+LD1^#||;va#KOrvD2jEW`eL|C&<7p?ATejr{xE-jv*tV=NP*k&(M(dWQSMv zF8^$V=cCT}Oc9E>B2~&_n=s zR&Hq8m5yE6Yc~5Yg`|KklnSi^CL%;Pl~2H=3I>q$nB@C0$+j?QwlHbPz-WW*pa0HLjNGT^hJTv!%kJEl}AC1s#s zR~swJTv=4YAn&0MSOvp-!eM~M^sAYXN~G@z2AGKN1IGSf=z0K-b|ny~*BlA}>LSL9 zS?J(b)-Mn;?ty>-2!v)MVy4?G+|zc)ZXwu+91C{^9;<6t)S?&SZ70~uMH{JPkKtNd z?aCUM)w$s6gN!4caa_(r-9?j3n2X|e#oWRh2Zn&FS?o0%h?(k)gQw|^-9pe2ITqeH zbad^CTJ}P08HXxlsRhNDv0)^KYr4V6pWMax$?9@c2jExDP zyw-@6%^Ixemsgn(3j(7PY63Hn!OS4|&dQ`eZDrC=txT(KQT@fr#O)W^FZv{a_75z4 zV4}jp2s?Vn&G9Av@P;w_^bO-S2#1D|4IQH&=(y2n0uY9VTWZB-zbqcX>H%QgU;a>~ zWo)E;G9HS6y@klAhfE6kr1a5bD6hMsT4x*F;%@%m17*L%h zK+iBZ$N*O`2QA=Hz)aM&OhQYl4DiSlM;`V( zz%Cs4g#*KI;1~`px8^r`s22{%k#LGJkn4#~k&!k+IW$2Tflsb|M-zysGdl2CvoHup zf>PFMcm!%9uYv{+M51zE%b|g#ew;?{%7t?q$A*lZg<#lNTToFQQ(?Wsg|*(fRv2d7 zmlQp}uwy73ndfMoS3FBk=XrV`c&08*dY;~S9n*nlI56#a`T^ZDmD^6?pAi~RM?h2& z2&gT6QC>kq4bX_Up}_`d#62{`A<(c}&@g0x;wCiYM}USMpkW?^#?Dgp-ofTS*pH6J zn)P;6_8dBLcq;lMlO5c#maYHJ)j&yYKKrYN6$=eOX$?fU0YuY|= z`V1|a6vGrkNl0yt;m@<@Q)W*opJ&f~vnN{M=h^eX*^@~-%${p#w;u)V%*|ZXaOd2} zDg{J7 this->bufferSize) - avail = this->bufferSize; - ssize_t err = WriteBuffer(playbackHandle, rawPlaybackBuffer.data(), avail); if (err < 0) { @@ -1429,6 +1428,8 @@ namespace pipedal } void recover_from_output_underrun(snd_pcm_t *capture_handle, snd_pcm_t *playback_handle, int err) { + Lv2Log::error("XXX: Output underrun"); + validate_capture_handle(); try { @@ -1437,12 +1438,15 @@ namespace pipedal err = snd_pcm_prepare(playback_handle); if (err < 0) { + Lv2Log::error(SS("Can't recover from ALSA output underrun. (" << snd_strerror(err) << ")")); throw PiPedalStateException(SS("Can't recover from ALSA output underrun. (" << snd_strerror(err) << ")")); } + snd_pcm_drain(capture_handle); FillOutputBuffer(); } else { + Lv2Log::error(SS("Can't recover from ALSA output underrun. (" << snd_strerror(err) << ")")); throw PiPedalStateException(SS("Can't recover from ALSA output error. (" << snd_strerror(err) << ")")); } } catch (const std::exception &e) { @@ -1454,6 +1458,7 @@ namespace pipedal } void recover_from_input_underrun(snd_pcm_t *capture_handle, snd_pcm_t *playback_handle, int err) { + Lv2Log::error("XXX: Input underring"); validate_capture_handle(); try { @@ -1463,12 +1468,7 @@ namespace pipedal // Unlink the streams before recovery snd_pcm_unlink(capture_handle); - err = snd_pcm_drop(capture_handle); - if (err < 0) - { - throw PiPedalStateException(SS("Can't recover from ALSA underrun. (" << snd_strerror(err) << ")")); - } - err = snd_pcm_drop(playback_handle); + err = snd_pcm_drain(capture_handle); if (err < 0) { throw PiPedalStateException(SS("Can't recover from ALSA underrun. (" << snd_strerror(err) << ")")); @@ -1484,8 +1484,6 @@ namespace pipedal throw std::runtime_error(SS("Cannot prepare capture stream: " << snd_strerror(err))); } - // Fill the playback buffer with silence - FillOutputBuffer(); // Resynchronize the streams if ((err = snd_pcm_link(capture_handle, playback_handle)) < 0) @@ -1494,10 +1492,12 @@ namespace pipedal } // Start the streams + FillOutputBuffer(); if ((err = snd_pcm_start(capture_handle)) < 0) { throw std::runtime_error(SS("Cannot restart capture stream: " << snd_strerror(err))); } + validate_capture_handle(); } else if (err == ESTRPIPE) @@ -1507,7 +1507,7 @@ namespace pipedal while ((err = snd_pcm_resume(capture_handle)) == -EAGAIN) { - sleep(1); + std::this_thread::sleep_for(std::chrono::milliseconds(10)); } if (err < 0) { @@ -1640,6 +1640,8 @@ namespace pipedal void AudioThread() { SetThreadName("alsaDriver"); + + try { SetThreadPriority(SchedulerPriority::RealtimeAudio); @@ -1725,6 +1727,7 @@ namespace pipedal if (err < 0) { this->driverHost->OnUnderrun(); + recover_from_output_underrun(captureHandle, playbackHandle, err); } cpuUse.AddSample(ProfileCategory::Write); diff --git a/src/PluginHost.cpp b/src/PluginHost.cpp index 4ccb463..673797f 100644 --- a/src/PluginHost.cpp +++ b/src/PluginHost.cpp @@ -870,6 +870,13 @@ Lv2PluginInfo::Lv2PluginInfo(PluginHost *lv2Host, LilvWorld *pWorld, const LilvP const LilvPluginClass *pClass = lilv_plugin_get_class(pPlugin); this->plugin_class_ = nodeAsString(lilv_plugin_class_get_uri(pClass)); + if (this->plugin_class_ == "") // carla does this. + { + // set to plain Plugin. + this->plugin_class_ = "http://lv2plug.in/ns/lv2core#Plugin"; + } + + AutoLilvNodes required_features = lilv_plugin_get_required_features(pPlugin); this->required_features_ = nodeAsStringArray(required_features); diff --git a/src/Worker.cpp b/src/Worker.cpp index a1baea1..3903f62 100644 --- a/src/Worker.cpp +++ b/src/Worker.cpp @@ -163,8 +163,9 @@ void Worker::WaitForAllResponses() std::this_thread::sleep_for(std::chrono::milliseconds(50)); std::chrono::milliseconds waitDuration = std::chrono::duration_cast(Clock::now()-startTime); if (waitDuration.count() > 1500) { - Lv2Log::error("Timed out waiting for a Worker task to complete."); // better to leak than to terminate the application. + Lv2Log::error("Timed out waiting for a Worker task to complete."); + break; } } } @@ -327,7 +328,12 @@ LV2_Worker_Status HostWorkerThread::ScheduleWorkNoLock(Worker *worker, size_t si void Worker::RunBackgroundTask(size_t size, uint8_t *data) { - workerInterface->work(lilvInstance->lv2_handle, worker_respond_fn, (LV2_Handle)this, size, data); + try { + workerInterface->work(lilvInstance->lv2_handle, worker_respond_fn, (LV2_Handle)this, size, data); + } catch (const std::exception &e) + { + Lv2Log::error(SS("Unhandled exception on LV2 Worker thread: " << e.what())); + } { std::lock_guard lock { this->outstandingRequestMutex}; --this->outstandingRequests; diff --git a/src/main.cpp b/src/main.cpp index 7feb5aa..ef6723b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -106,6 +106,27 @@ static bool isJackServiceRunning() // } #endif +#define ENABLE_SEGV_DEBUG 0 +#if ENABLE_SEGV_DEBUG +void debug_segvHandler(int sig) +{ + // Print out all the frames to stderr + const char *message = "Error: SEGV signal received.\n"; + auto _ = write(STDERR_FILENO, message, strlen(message)); + + _exit(EXIT_FAILURE); +} + +static void EnableDebugSevHandler() +{ + signal(SIGSEGV, debug_segvHandler); + signal(SIGILL, debug_segvHandler); + signal(SIGKILL, debug_segvHandler); +} + +#endif + + static bool TryGetLogLevel(const std::string &strLogLevel, LogLevel *result) { if (strLogLevel == "debug") @@ -331,9 +352,13 @@ int main(int argc, char *argv[]) while (sigtimedwait(&sigSet, NULL, &timeout) > 0) { // Consume any pending signals } +#if ENABLE_SEGV_DEBUG + EnableDebugSevHandler(); +#endif PiPedalModel model; + model.SetNetworkChangedListener( [&server]() mutable { diff --git a/todo.txt b/todo.txt index e4a646c..569d9c8 100644 --- a/todo.txt +++ b/todo.txt @@ -1,10 +1,5 @@ -Crash-proofing: do not reload pedalboard if the previous run crashed before normal shutdown. - -MOD ir uses some scheme to limit the minimum buffer size, which is not implemented in Pipedal. - -wa -Vu Meters, move rendering to background images, in order to reduce layout overhead. +Carla Project icons. check reload after change of LV2 plugins. Exactly one underrun per seek in Toob Player diff --git a/vg.output b/vg.output index fd9d5f3..7806bf0 100644 --- a/vg.output +++ b/vg.output @@ -1,339 +1,279 @@ -==587874== Memcheck, a memory error detector -==587874== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al. -==587874== Using Valgrind-3.19.0 and LibVEX; rerun with -h for copyright info -==587874== Command: ./build/src/pipedald /etc/pipedal/config ./vite/dist -port 0.0.0.0:8080 -log-level debug -==587874== Parent PID: 587873 -==587874== -==587874== -==587874== HEAP SUMMARY: -==587874== in use at exit: 96,771 bytes in 635 blocks -==587874== total heap usage: 1,049,648 allocs, 1,049,013 frees, 168,645,673 bytes allocated -==587874== -==587874== 22 bytes in 1 blocks are definitely lost in loss record 11 of 117 -==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==587874== by 0x61CC32F: ??? -==587874== by 0x61AFFC3: ??? -==587874== by 0x61B01DB: ??? -==587874== by 0x61AF9D7: ??? -==587874== by 0x61B0267: ??? -==587874== by 0x61B0677: ??? -==587874== by 0x61B0C1B: ??? -==587874== by 0x61B0C47: ??? -==587874== by 0x5F043DB: ??? -==587874== by 0x5F04613: ??? -==587874== by 0x6036B87: ??? -==587874== -==587874== 32 bytes in 1 blocks are definitely lost in loss record 19 of 117 -==587874== at 0x4886B58: operator new[](unsigned long) (vg_replace_malloc.c:640) -==587874== by 0x13E98F13: toob::WavReader::ReadData() (WavReader.cpp:399) -==587874== by 0x13E9900F: toob::WavReader::Read(toob::AudioData&) (WavReader.cpp:415) -==587874== by 0x13E99097: toob::WavReader::Load(std::filesystem::__cxx11::path const&) (WavReader.cpp:431) -==587874== by 0x13E7E5BF: toob::ToobConvolutionReverbBase::LoadWorker::LoadFile(std::filesystem::__cxx11::path const&, float) (ToobConvolutionReverb.cpp:824) -==587874== by 0x13E7EA9F: toob::ToobConvolutionReverbBase::LoadWorker::OnWork() (ToobConvolutionReverb.cpp:884) -==587874== by 0x13DC564B: lv2c::lv2_plugin::Lv2Plugin::WorkerAction::Work(LV2_Worker_Status (*)(void*, unsigned int, void const*), void*) (Lv2Plugin.cpp:372) -==587874== by 0x13DC6DBB: lv2c::lv2_plugin::Lv2Plugin::OnWork(LV2_Worker_Status (*)(void*, unsigned int, void const*), void*, unsigned int, void const*) (Lv2Plugin.hpp:323) -==587874== by 0x13DC47B7: lv2c::lv2_plugin::Lv2Plugin::work(void*, LV2_Worker_Status (*)(void*, unsigned int, void const*), void*, unsigned int, void const*) (Lv2Plugin.cpp:85) -==587874== by 0x3AB21F: pipedal::Worker::RunBackgroundTask(unsigned long, unsigned char*) (Worker.cpp:330) -==587874== by 0x3AAC8F: pipedal::HostWorkerThread::ThreadProc() (Worker.cpp:236) -==587874== by 0x3AAE83: pipedal::HostWorkerThread::StartThread()::{lambda()#1}::operator()() const (Worker.cpp:259) -==587874== -==587874== 43 bytes in 1 blocks are definitely lost in loss record 30 of 117 -==587874== at 0x488A1C4: realloc (vg_replace_malloc.c:1437) -==587874== by 0x5902A2B: serd_chunk_sink (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x5902A87: serd_chunk_sink_finish (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x58FDA67: serd_file_uri_parse (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x3D4E7B: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:209) -==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) -==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) -==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==587874== by 0x485247: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) -==587874== -==587874== 48 bytes in 2 blocks are definitely lost in loss record 42 of 117 -==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==587874== by 0x4B67D9B: lilv_node_duplicate (in /usr/lib/aarch64-linux-gnu/liblilv-0.so.0.24.14) -==587874== by 0x4B707C7: lilv_world_get (in /usr/lib/aarch64-linux-gnu/liblilv-0.so.0.24.14) -==587874== by 0x3D5083: pipedal::ModGuiPort::ModGuiPort(pipedal::PluginHost*, LilvNodeImpl const*) (ModGui.cpp:230) -==587874== by 0x3D4877: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:170) -==587874== by 0x3D4F5F: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) -==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) -==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) -==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==587874== -==587874== 48 bytes in 2 blocks are definitely lost in loss record 43 of 117 -==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==587874== by 0x4B67D9B: lilv_node_duplicate (in /usr/lib/aarch64-linux-gnu/liblilv-0.so.0.24.14) -==587874== by 0x4B707C7: lilv_world_get (in /usr/lib/aarch64-linux-gnu/liblilv-0.so.0.24.14) -==587874== by 0x3D50B3: pipedal::ModGuiPort::ModGuiPort(pipedal::PluginHost*, LilvNodeImpl const*) (ModGui.cpp:231) -==587874== by 0x3D4877: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:170) -==587874== by 0x3D4F5F: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) -==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) -==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) -==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==587874== -==587874== 48 bytes in 2 blocks are definitely lost in loss record 44 of 117 -==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==587874== by 0x4B67D9B: lilv_node_duplicate (in /usr/lib/aarch64-linux-gnu/liblilv-0.so.0.24.14) -==587874== by 0x4B707C7: lilv_world_get (in /usr/lib/aarch64-linux-gnu/liblilv-0.so.0.24.14) -==587874== by 0x3D50EB: pipedal::ModGuiPort::ModGuiPort(pipedal::PluginHost*, LilvNodeImpl const*) (ModGui.cpp:232) -==587874== by 0x3D4877: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:170) -==587874== by 0x3D4F5F: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) -==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) -==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) -==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==587874== -==587874== 51 bytes in 1 blocks are definitely lost in loss record 45 of 117 -==587874== at 0x488A1C4: realloc (vg_replace_malloc.c:1437) -==587874== by 0x5902A2B: serd_chunk_sink (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x5902A87: serd_chunk_sink_finish (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x58FDA67: serd_file_uri_parse (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x3D4527: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:128) -==587874== by 0x3D4F5F: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) -==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) -==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) -==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==587874== -==587874== 56 bytes in 1 blocks are definitely lost in loss record 51 of 117 -==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==587874== by 0x6223FC7: ??? -==587874== by 0x6222503: ??? -==587874== by 0x6223197: ??? -==587874== by 0x6223343: ??? -==587874== by 0x6223AB7: ??? -==587874== by 0x5F04453: ??? -==587874== by 0x5F04613: ??? -==587874== by 0x6036B87: ??? -==587874== by 0x5EED7B7: ??? -==587874== by 0x5EEE143: ??? -==587874== by 0x60367A7: ??? -==587874== -==587874== 57 bytes in 1 blocks are definitely lost in loss record 52 of 117 -==587874== at 0x488A1C4: realloc (vg_replace_malloc.c:1437) -==587874== by 0x5902A2B: serd_chunk_sink (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x5902A87: serd_chunk_sink_finish (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x58FDA67: serd_file_uri_parse (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x3D42B7: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:99) -==587874== by 0x3D4F5F: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) -==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) -==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) -==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==587874== -==587874== 61 bytes in 1 blocks are definitely lost in loss record 54 of 117 -==587874== at 0x488A1C4: realloc (vg_replace_malloc.c:1437) -==587874== by 0x5902A2B: serd_chunk_sink (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x5902A87: serd_chunk_sink_finish (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x58FDA67: serd_file_uri_parse (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x3D44BF: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:124) -==587874== by 0x3D4F5F: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) -==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) -==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) -==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==587874== -==587874== 62 bytes in 1 blocks are definitely lost in loss record 55 of 117 -==587874== at 0x488A1C4: realloc (vg_replace_malloc.c:1437) -==587874== by 0x5902A2B: serd_chunk_sink (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x5902A87: serd_chunk_sink_finish (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x58FDA67: serd_file_uri_parse (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x3D43EF: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:114) -==587874== by 0x3D4F5F: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) -==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) -==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) -==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==587874== -==587874== 62 bytes in 1 blocks are definitely lost in loss record 56 of 117 -==587874== at 0x488A1C4: realloc (vg_replace_malloc.c:1437) -==587874== by 0x5902A2B: serd_chunk_sink (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x5902A87: serd_chunk_sink_finish (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x58FDA67: serd_file_uri_parse (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==587874== by 0x3D4457: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:119) -==587874== by 0x3D4F5F: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) -==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) -==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) -==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==587874== -==587874== 88 bytes in 1 blocks are definitely lost in loss record 62 of 117 -==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==587874== by 0x624EF8B: ??? -==587874== by 0x61BD1E7: ??? -==587874== by 0x61BD3AF: ??? -==587874== by 0x61BD46B: ??? -==587874== by 0x5F0C0E7: ??? -==587874== by 0x5EFA637: ??? -==587874== by 0x5F043AB: ??? -==587874== by 0x5F04613: ??? -==587874== by 0x6036B87: ??? -==587874== by 0x5EED7B7: ??? -==587874== by 0x5EEE143: ??? -==587874== -==587874== 176 bytes in 2 blocks are definitely lost in loss record 71 of 117 -==587874== at 0x4885828: operator new(unsigned long) (vg_replace_malloc.c:422) -==587874== by 0x27E247: void PiPedalSocketHandler::Request(char const*, NotifyAtomOutputBody const&, std::function, std::function) (PiPedalSocket.cpp:895) -==587874== by 0x270453: PiPedalSocketHandler::OnNotifyPatchProperty(long, unsigned long, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&) (PiPedalSocket.cpp:2196) -==587874== by 0x2EEB07: pipedal::PiPedalModel::MonitorPatchProperty(long, long, unsigned long, std::__cxx11::basic_string, std::allocator > const&) (PiPedalModel.cpp:2380) -==587874== by 0x26BC57: PiPedalSocketHandler::handleMessage(int, int, std::__cxx11::basic_string, std::allocator > const&, pipedal::json_reader*) (PiPedalSocket.cpp:1161) -==587874== by 0x26EE67: PiPedalSocketHandler::onReceive(std::basic_string_view > const&) (PiPedalSocket.cpp:1855) -==587874== by 0x1F56CB: pipedal::WebServerImpl::WebSocketSession::on_message(std::weak_ptr, std::shared_ptr >) (WebServer.cpp:857) -==587874== by 0x225A2F: void std::__invoke_impl, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr, std::shared_ptr > >(std::__invoke_memfun_deref, void (pipedal::WebServerImpl::WebSocketSession::*&)(std::weak_ptr, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr&&, std::shared_ptr >&&) (invoke.h:74) -==587874== by 0x220083: std::__invoke_result, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr, std::shared_ptr > >::type std::__invoke, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr, std::shared_ptr > >(void (pipedal::WebServerImpl::WebSocketSession::*&)(std::weak_ptr, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr&&, std::shared_ptr >&&) (invoke.h:96) -==587874== by 0x21ABD7: void std::_Bind, std::_Placeholder<2>))(std::weak_ptr, std::shared_ptr >)>::__call&&, std::shared_ptr >&&, 0ul, 1ul, 2ul>(std::tuple&&, std::shared_ptr >&&>&&, std::_Index_tuple<0ul, 1ul, 2ul>) (functional:484) -==587874== by 0x21496F: void std::_Bind, std::_Placeholder<2>))(std::weak_ptr, std::shared_ptr >)>::operator(), std::shared_ptr >, void>(std::weak_ptr&&, std::shared_ptr >&&) (functional:567) -==587874== by 0x20E6F3: void std::__invoke_impl, std::_Placeholder<2>))(std::weak_ptr, std::shared_ptr >)>&, std::weak_ptr, std::shared_ptr > >(std::__invoke_other, std::_Bind, std::_Placeholder<2>))(std::weak_ptr, std::shared_ptr >)>&, std::weak_ptr&&, std::shared_ptr >&&) (invoke.h:61) -==587874== -==587874== 176 bytes in 2 blocks are definitely lost in loss record 72 of 117 -==587874== at 0x4885828: operator new(unsigned long) (vg_replace_malloc.c:422) -==587874== by 0x27D5AF: void PiPedalSocketHandler::Request(char const*, pipedal::VuUpdate const&, std::function, std::function) (PiPedalSocket.cpp:895) -==587874== by 0x26F85F: PiPedalSocketHandler::OnVuMeterUpdate(std::vector > const&) (PiPedalSocket.cpp:2020) -==587874== by 0x2EB9CF: pipedal::PiPedalModel::OnNotifyVusSubscription(std::vector > const&) (PiPedalModel.cpp:1633) -==587874== by 0x35F833: AudioHostImpl::ThreadProc() (AudioHost.cpp:1465) -==587874== by 0x360063: AudioHostImpl::StartReaderThread()::{lambda()#1}::operator()() const (AudioHost.cpp:1645) -==587874== by 0x3748D7: void std::__invoke_impl(std::__invoke_other, AudioHostImpl::StartReaderThread()::{lambda()#1}&&) (invoke.h:61) -==587874== by 0x3747EB: std::__invoke_result::type std::__invoke(AudioHostImpl::StartReaderThread()::{lambda()#1}&&) (invoke.h:96) -==587874== by 0x3746EB: void std::thread::_Invoker >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (std_thread.h:252) -==587874== by 0x37465B: std::thread::_Invoker >::operator()() (std_thread.h:259) -==587874== by 0x374167: std::thread::_State_impl > >::_M_run() (std_thread.h:210) -==587874== by 0x4CBE9DB: ??? (in /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.30) -==587874== -==587874== 1,760 bytes in 20 blocks are definitely lost in loss record 98 of 117 -==587874== at 0x4885828: operator new(unsigned long) (vg_replace_malloc.c:422) -==587874== by 0x27746F: void PiPedalSocketHandler::Request(char const*, MonitorResultBody const&, std::function, std::function) (PiPedalSocket.cpp:895) -==587874== by 0x26A42F: PiPedalSocketHandler::SendMonitorPortMessage_Inner(std::shared_ptr&, float) (PiPedalSocket.cpp:996) -==587874== by 0x26A16F: PiPedalSocketHandler::SendMonitorPortMessage(std::shared_ptr&, float) (PiPedalSocket.cpp:986) -==587874== by 0x26A4C3: PiPedalSocketHandler::MonitorPort(int, MonitorPortBody&)::{lambda(long, float)#1}::operator()(long, float) const (PiPedalSocket.cpp:1047) -==587874== by 0x2B3FBF: void std::__invoke_impl(std::__invoke_other, PiPedalSocketHandler::MonitorPort(int, MonitorPortBody&)::{lambda(long, float)#1}&, long&&, float&&) (invoke.h:61) -==587874== by 0x29D0B7: std::enable_if, void>::type std::__invoke_r(PiPedalSocketHandler::MonitorPort(int, MonitorPortBody&)::{lambda(long, float)#1}&, long&&, float&&) (invoke.h:111) -==587874== by 0x28AC7B: std::_Function_handler::_M_invoke(std::_Any_data const&, long&&, float&&) (std_function.h:290) -==587874== by 0x2FC283: std::function::operator()(long, float) const (std_function.h:591) -==587874== by 0x2EBEF3: pipedal::PiPedalModel::OnNotifyMonitorPort(pipedal::MonitorPortUpdate const&) (PiPedalModel.cpp:1702) -==587874== by 0x35F7CB: AudioHostImpl::ThreadProc() (AudioHost.cpp:1454) -==587874== by 0x360063: AudioHostImpl::StartReaderThread()::{lambda()#1}::operator()() const (AudioHost.cpp:1645) -==587874== -==587874== 3,352 (80 direct, 3,272 indirect) bytes in 1 blocks are definitely lost in loss record 103 of 117 -==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==587874== by 0x6225507: ??? -==587874== by 0x61AFFEB: ??? -==587874== by 0x61B01DB: ??? -==587874== by 0x61AF9D7: ??? -==587874== by 0x61B0267: ??? -==587874== by 0x61B0677: ??? -==587874== by 0x61B0C1B: ??? -==587874== by 0x61B0C47: ??? -==587874== by 0x5F043DB: ??? -==587874== by 0x5F04613: ??? -==587874== by 0x6036B87: ??? -==587874== -==587874== 3,709 (80 direct, 3,629 indirect) bytes in 1 blocks are definitely lost in loss record 104 of 117 -==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==587874== by 0x6225507: ??? -==587874== by 0x625268B: ??? -==587874== by 0x603751B: ??? -==587874== by 0x623C53B: ??? -==587874== by 0x6036AA7: ??? -==587874== by 0x6036C17: ??? -==587874== by 0x5EED7B7: ??? -==587874== by 0x5EEE143: ??? -==587874== by 0x60367A7: ??? -==587874== by 0x1B6C97: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) -==587874== by 0x1B712F: LocaleImpl::GetCollator() (Locale.cpp:444) -==587874== -==587874== 3,950 (56 direct, 3,894 indirect) bytes in 1 blocks are definitely lost in loss record 106 of 117 -==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==587874== by 0x624EF8B: ??? -==587874== by 0x623BE7B: ??? -==587874== by 0x60360BF: ??? -==587874== by 0x6036C0B: ??? -==587874== by 0x5EED7B7: ??? -==587874== by 0x5EEE143: ??? -==587874== by 0x60367A7: ??? -==587874== by 0x1B6C97: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) -==587874== by 0x1B712F: LocaleImpl::GetCollator() (Locale.cpp:444) -==587874== by 0x156C67: main (main.cpp:303) -==587874== -==587874== 4,264 bytes in 1 blocks are definitely lost in loss record 113 of 117 -==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==587874== by 0x624EFDF: ??? -==587874== by 0x61B063F: ??? -==587874== by 0x61B0C1B: ??? -==587874== by 0x61B0C47: ??? -==587874== by 0x5F043DB: ??? -==587874== by 0x5F04613: ??? -==587874== by 0x6036B87: ??? -==587874== by 0x5EED7B7: ??? -==587874== by 0x5EEE143: ??? -==587874== by 0x60367A7: ??? -==587874== by 0x1B6C97: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) -==587874== -==587874== 5,804 (256 direct, 5,548 indirect) bytes in 1 blocks are definitely lost in loss record 114 of 117 -==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==587874== by 0x624EF8B: ??? -==587874== by 0x5F043CF: ??? -==587874== by 0x5F04613: ??? -==587874== by 0x6036B87: ??? -==587874== by 0x5EED7B7: ??? -==587874== by 0x5EEE143: ??? -==587874== by 0x60367A7: ??? -==587874== by 0x1B6C97: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) -==587874== by 0x1B712F: LocaleImpl::GetCollator() (Locale.cpp:444) -==587874== by 0x156C67: main (main.cpp:303) -==587874== -==587874== 6,080 bytes in 190 blocks are definitely lost in loss record 115 of 117 -==587874== at 0x4885828: operator new(unsigned long) (vg_replace_malloc.c:422) -==587874== by 0x361553: AudioHostImpl::MakeRealtimeSubscription(pipedal::MonitorPortSubscription const&) (AudioHost.cpp:1962) -==587874== by 0x36173B: AudioHostImpl::SetMonitorPortSubscriptions(std::vector > const&) (AudioHost.cpp:1985) -==587874== by 0x2EBC5B: pipedal::PiPedalModel::UpdateRealtimeMonitorPortSubscriptions() (PiPedalModel.cpp:1663) -==587874== by 0x2EBE0B: pipedal::PiPedalModel::UnmonitorPort(long) (PiPedalModel.cpp:1686) -==587874== by 0x2692C3: PiPedalSocketHandler::FinalCleanup() (PiPedalSocket.cpp:671) -==587874== by 0x26943F: PiPedalSocketHandler::Close() (PiPedalSocket.cpp:692) -==587874== by 0x2E556B: pipedal::PiPedalModel::Close() (PiPedalModel.cpp:155) -==587874== by 0x156ED7: main (main.cpp:418) -==587874== -==587874== 6,720 bytes in 210 blocks are definitely lost in loss record 116 of 117 -==587874== at 0x4885828: operator new(unsigned long) (vg_replace_malloc.c:422) -==587874== by 0x361553: AudioHostImpl::MakeRealtimeSubscription(pipedal::MonitorPortSubscription const&) (AudioHost.cpp:1962) -==587874== by 0x36173B: AudioHostImpl::SetMonitorPortSubscriptions(std::vector > const&) (AudioHost.cpp:1985) -==587874== by 0x2EBC5B: pipedal::PiPedalModel::UpdateRealtimeMonitorPortSubscriptions() (PiPedalModel.cpp:1663) -==587874== by 0x2EBD23: pipedal::PiPedalModel::MonitorPort(long, std::__cxx11::basic_string, std::allocator > const&, float, std::function) (PiPedalModel.cpp:1673) -==587874== by 0x26A58F: PiPedalSocketHandler::MonitorPort(int, MonitorPortBody&) (PiPedalSocket.cpp:1037) -==587874== by 0x26D6DF: PiPedalSocketHandler::handleMessage(int, int, std::__cxx11::basic_string, std::allocator > const&, pipedal::json_reader*) (PiPedalSocket.cpp:1598) -==587874== by 0x26EE67: PiPedalSocketHandler::onReceive(std::basic_string_view > const&) (PiPedalSocket.cpp:1855) -==587874== by 0x1F56CB: pipedal::WebServerImpl::WebSocketSession::on_message(std::weak_ptr, std::shared_ptr >) (WebServer.cpp:857) -==587874== by 0x225A2F: void std::__invoke_impl, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr, std::shared_ptr > >(std::__invoke_memfun_deref, void (pipedal::WebServerImpl::WebSocketSession::*&)(std::weak_ptr, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr&&, std::shared_ptr >&&) (invoke.h:74) -==587874== by 0x220083: std::__invoke_result, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr, std::shared_ptr > >::type std::__invoke, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr, std::shared_ptr > >(void (pipedal::WebServerImpl::WebSocketSession::*&)(std::weak_ptr, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr&&, std::shared_ptr >&&) (invoke.h:96) -==587874== by 0x21ABD7: void std::_Bind, std::_Placeholder<2>))(std::weak_ptr, std::shared_ptr >)>::__call&&, std::shared_ptr >&&, 0ul, 1ul, 2ul>(std::tuple&&, std::shared_ptr >&&>&&, std::_Index_tuple<0ul, 1ul, 2ul>) (functional:484) -==587874== -==587874== LEAK SUMMARY: -==587874== definitely lost: 20,326 bytes in 445 blocks -==587874== indirectly lost: 16,343 bytes in 30 blocks -==587874== possibly lost: 0 bytes in 0 blocks -==587874== still reachable: 60,102 bytes in 160 blocks -==587874== suppressed: 0 bytes in 0 blocks -==587874== Reachable blocks (those to which a pointer was found) are not shown. -==587874== To see them, rerun with: --leak-check=full --show-leak-kinds=all -==587874== -==587874== For lists of detected and suppressed errors, rerun with: -s -==587874== ERROR SUMMARY: 23 errors from 23 contexts (suppressed: 0 from 0) +==82092== Memcheck, a memory error detector +==82092== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al. +==82092== Using Valgrind-3.22.0 and LibVEX; rerun with -h for copyright info +==82092== Command: ./build/src/pipedald /etc/pipedal/config ./vite/dist -port 0.0.0.0:8080 -log-level debug +==82092== Parent PID: 82091 +==82092== +==82092== Syscall param ioctl(generic) points to uninitialised byte(s) +==82092== at 0x4FB3DED: ioctl (ioctl.c:36) +==82092== by 0x48C24D0: ??? (in /usr/lib/x86_64-linux-gnu/libasound.so.2.0.0) +==82092== by 0x41452E: pipedal::AlsaDriverImpl::AlsaCloseAudio() (AlsaDriver.cpp:397) +==82092== by 0x41468F: pipedal::AlsaDriverImpl::AlsaCleanup() (AlsaDriver.cpp:425) +==82092== by 0x41CC5E: pipedal::AlsaDriverImpl::Close() (AlsaDriver.cpp:1912) +==82092== by 0x39F689: AudioHostImpl::Close() (AudioHost.cpp:580) +==82092== by 0x314747: pipedal::PiPedalModel::Close() (PiPedalModel.cpp:165) +==82092== by 0x159B37: main (main.cpp:425) +==82092== Address 0x1ffeffe5cc is on thread 1's stack +==82092== +==82092== +==82092== HEAP SUMMARY: +==82092== in use at exit: 35,347 bytes in 368 blocks +==82092== total heap usage: 9,183,128 allocs, 9,182,760 frees, 834,061,294 bytes allocated +==82092== +==82092== 22 bytes in 1 blocks are definitely lost in loss record 7 of 74 +==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x6101FAB: ??? +==82092== by 0x60DC924: ??? +==82092== by 0x60E5CE6: ??? +==82092== by 0x60E623C: ??? +==82092== by 0x60D97E1: ??? +==82092== by 0x60DAAFF: ??? +==82092== by 0x60E59EB: ??? +==82092== by 0x60E5A23: ??? +==82092== by 0x5E45BA7: ??? +==82092== by 0x5E45E24: ??? +==82092== by 0x5F764D2: ??? +==82092== +==82092== 56 bytes in 1 blocks are definitely lost in loss record 23 of 74 +==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x61607FD: ??? +==82092== by 0x61B8A4F: ??? +==82092== by 0x615B267: ??? +==82092== by 0x61B8BA5: ??? +==82092== by 0x6165373: ??? +==82092== by 0x5E45C6B: ??? +==82092== by 0x5E45E24: ??? +==82092== by 0x5F764D2: ??? +==82092== by 0x5E2F318: ??? +==82092== by 0x5E2F586: ??? +==82092== by 0x5F7C099: ??? +==82092== +==82092== 88 bytes in 1 blocks are definitely lost in loss record 28 of 74 +==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x618ABDC: ??? +==82092== by 0x60F2640: ??? +==82092== by 0x60F49D2: ??? +==82092== by 0x60F4B1C: ??? +==82092== by 0x5E405AB: ??? +==82092== by 0x5E3C43F: ??? +==82092== by 0x5E45B79: ??? +==82092== by 0x5E45E24: ??? +==82092== by 0x5F764D2: ??? +==82092== by 0x5E2F318: ??? +==82092== by 0x5E2F586: ??? +==82092== +==82092== 115 bytes in 2 blocks are definitely lost in loss record 29 of 74 +==82092== at 0x484DB80: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x58A9CCF: serd_chunk_sink (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x58A9D33: serd_chunk_sink_finish (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x58A9E7F: serd_file_uri_parse (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x425EF8: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:109) +==82092== by 0x42710E: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) +==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) +==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==82092== by 0x505132: construct (alloc_traits.h:661) +==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) +==82092== +==82092== 292 bytes in 8 blocks are definitely lost in loss record 50 of 74 +==82092== at 0x484DB80: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x58A9CCF: serd_chunk_sink (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x58A9D33: serd_chunk_sink_finish (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x58A9E7F: serd_file_uri_parse (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x426FD9: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:209) +==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) +==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==82092== by 0x505132: construct (alloc_traits.h:661) +==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) +==82092== by 0x4EADF8: std::shared_ptr std::make_shared(pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:1010) +==82092== +==82092== 439 bytes in 8 blocks are definitely lost in loss record 54 of 74 +==82092== at 0x484DB80: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x58A9CCF: serd_chunk_sink (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x58A9D33: serd_chunk_sink_finish (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x58A9E7F: serd_file_uri_parse (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x425DBC: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:99) +==82092== by 0x42710E: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) +==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) +==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==82092== by 0x505132: construct (alloc_traits.h:661) +==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) +==82092== +==82092== 454 bytes in 8 blocks are definitely lost in loss record 55 of 74 +==82092== at 0x484DB80: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x58A9CCF: serd_chunk_sink (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x58A9D33: serd_chunk_sink_finish (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x58A9E7F: serd_file_uri_parse (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x4260D8: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:124) +==82092== by 0x42710E: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) +==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) +==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==82092== by 0x505132: construct (alloc_traits.h:661) +==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) +==82092== +==82092== 459 bytes in 8 blocks are definitely lost in loss record 56 of 74 +==82092== at 0x484DB80: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x58A9CCF: serd_chunk_sink (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x58A9D33: serd_chunk_sink_finish (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x58A9E7F: serd_file_uri_parse (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x426038: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:119) +==82092== by 0x42710E: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) +==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) +==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==82092== by 0x505132: construct (alloc_traits.h:661) +==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) +==82092== +==82092== 479 bytes in 8 blocks are definitely lost in loss record 57 of 74 +==82092== at 0x484DB80: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x58A9CCF: serd_chunk_sink (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x58A9D33: serd_chunk_sink_finish (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x58A9E7F: serd_file_uri_parse (in /usr/lib/x86_64-linux-gnu/libserd-0.so.0.32.2) +==82092== by 0x425F98: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:114) +==82092== by 0x42710E: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) +==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) +==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==82092== by 0x505132: construct (alloc_traits.h:661) +==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) +==82092== +==82092== 1,992 bytes in 83 blocks are definitely lost in loss record 63 of 74 +==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x4AA841C: lilv_node_duplicate (in /usr/lib/x86_64-linux-gnu/liblilv-0.so.0.24.22) +==82092== by 0x4AAD1D2: lilv_world_get (in /usr/lib/x86_64-linux-gnu/liblilv-0.so.0.24.22) +==82092== by 0x4272AD: pipedal::ModGuiPort::ModGuiPort(pipedal::PluginHost*, LilvNodeImpl const*) (ModGui.cpp:230) +==82092== by 0x4266A8: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:170) +==82092== by 0x42710E: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) +==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) +==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==82092== by 0x505132: construct (alloc_traits.h:661) +==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) +==82092== +==82092== 1,992 bytes in 83 blocks are definitely lost in loss record 64 of 74 +==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x4AA841C: lilv_node_duplicate (in /usr/lib/x86_64-linux-gnu/liblilv-0.so.0.24.22) +==82092== by 0x4AAD1D2: lilv_world_get (in /usr/lib/x86_64-linux-gnu/liblilv-0.so.0.24.22) +==82092== by 0x4272E7: pipedal::ModGuiPort::ModGuiPort(pipedal::PluginHost*, LilvNodeImpl const*) (ModGui.cpp:231) +==82092== by 0x4266A8: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:170) +==82092== by 0x42710E: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) +==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) +==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==82092== by 0x505132: construct (alloc_traits.h:661) +==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) +==82092== +==82092== 1,992 bytes in 83 blocks are definitely lost in loss record 65 of 74 +==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x4AA841C: lilv_node_duplicate (in /usr/lib/x86_64-linux-gnu/liblilv-0.so.0.24.22) +==82092== by 0x4AAD1D2: lilv_world_get (in /usr/lib/x86_64-linux-gnu/liblilv-0.so.0.24.22) +==82092== by 0x427337: pipedal::ModGuiPort::ModGuiPort(pipedal::PluginHost*, LilvNodeImpl const*) (ModGui.cpp:232) +==82092== by 0x4266A8: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:170) +==82092== by 0x42710E: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) +==82092== by 0x4DB519: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1049) +==82092== by 0x50BAE4: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==82092== by 0x505132: construct (alloc_traits.h:661) +==82092== by 0x505132: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==82092== by 0x4FD722: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==82092== by 0x4F5DDF: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==82092== by 0x4EF816: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) +==82092== +==82092== 3,352 (80 direct, 3,272 indirect) bytes in 1 blocks are definitely lost in loss record 70 of 74 +==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x6161246: ??? +==82092== by 0x60DC94F: ??? +==82092== by 0x60E5CE6: ??? +==82092== by 0x60E623C: ??? +==82092== by 0x60D97E1: ??? +==82092== by 0x60DAAFF: ??? +==82092== by 0x60E59EB: ??? +==82092== by 0x60E5A23: ??? +==82092== by 0x5E45BA7: ??? +==82092== by 0x5E45E24: ??? +==82092== by 0x5F764D2: ??? +==82092== +==82092== 3,709 (80 direct, 3,629 indirect) bytes in 1 blocks are definitely lost in loss record 71 of 74 +==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x6161246: ??? +==82092== by 0x61902DE: ??? +==82092== by 0x5F765D7: ??? +==82092== by 0x6179366: ??? +==82092== by 0x5F7BE3D: ??? +==82092== by 0x5F76550: ??? +==82092== by 0x5E2F318: ??? +==82092== by 0x5E2F586: ??? +==82092== by 0x5F7C099: ??? +==82092== by 0x1C366B: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) +==82092== by 0x1C3C93: LocaleImpl::GetCollator() (Locale.cpp:444) +==82092== +==82092== 3,950 (56 direct, 3,894 indirect) bytes in 1 blocks are definitely lost in loss record 72 of 74 +==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x618ABDC: ??? +==82092== by 0x6179016: ??? +==82092== by 0x5F71D5E: ??? +==82092== by 0x5F76545: ??? +==82092== by 0x5E2F318: ??? +==82092== by 0x5E2F586: ??? +==82092== by 0x5F7C099: ??? +==82092== by 0x1C366B: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) +==82092== by 0x1C3C93: LocaleImpl::GetCollator() (Locale.cpp:444) +==82092== by 0x1597CF: main (main.cpp:303) +==82092== +==82092== 4,264 bytes in 1 blocks are definitely lost in loss record 73 of 74 +==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x618ABEC: ??? +==82092== by 0x60DAAD3: ??? +==82092== by 0x60E59EB: ??? +==82092== by 0x60E5A23: ??? +==82092== by 0x5E45BA7: ??? +==82092== by 0x5E45E24: ??? +==82092== by 0x5F764D2: ??? +==82092== by 0x5E2F318: ??? +==82092== by 0x5E2F586: ??? +==82092== by 0x5F7C099: ??? +==82092== by 0x1C366B: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) +==82092== +==82092== 5,804 (256 direct, 5,548 indirect) bytes in 1 blocks are definitely lost in loss record 74 of 74 +==82092== at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) +==82092== by 0x618ABDC: ??? +==82092== by 0x5E45B9A: ??? +==82092== by 0x5E45E24: ??? +==82092== by 0x5F764D2: ??? +==82092== by 0x5E2F318: ??? +==82092== by 0x5E2F586: ??? +==82092== by 0x5F7C099: ??? +==82092== by 0x1C366B: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) +==82092== by 0x1C3C93: LocaleImpl::GetCollator() (Locale.cpp:444) +==82092== by 0x1597CF: main (main.cpp:303) +==82092== +==82092== LEAK SUMMARY: +==82092== definitely lost: 13,116 bytes in 299 blocks +==82092== indirectly lost: 16,343 bytes in 30 blocks +==82092== possibly lost: 0 bytes in 0 blocks +==82092== still reachable: 5,888 bytes in 39 blocks +==82092== suppressed: 0 bytes in 0 blocks +==82092== Reachable blocks (those to which a pointer was found) are not shown. +==82092== To see them, rerun with: --leak-check=full --show-leak-kinds=all +==82092== +==82092== Use --track-origins=yes to see where uninitialised values come from +==82092== For lists of detected and suppressed errors, rerun with: -s +==82092== ERROR SUMMARY: 18 errors from 18 contexts (suppressed: 0 from 0) diff --git a/vite/public/img/fx_plugin.svg b/vite/public/img/fx_plugin.svg index dc524a1..4f868b4 100644 --- a/vite/public/img/fx_plugin.svg +++ b/vite/public/img/fx_plugin.svg @@ -1,17 +1,7 @@ - - - - - - - -  
{ this.onDoubleClick(e, value.uri) }} @@ -654,7 +659,7 @@ export const LoadPluginDialog =
- +
diff --git a/vite/src/pipedal/Lv2Plugin.tsx b/vite/src/pipedal/Lv2Plugin.tsx index 1256d09..19a2fcb 100644 --- a/vite/src/pipedal/Lv2Plugin.tsx +++ b/vite/src/pipedal/Lv2Plugin.tsx @@ -471,6 +471,9 @@ export enum PluginType { None = "", InvalidPlugin = "InvalidPlugin", + // "special" + NamPlugin = "NamPlugin", + Plugin = "Plugin", AllpassPlugin = "AllpassPlugin", AmplifierPlugin = "AmplifierPlugin", @@ -510,7 +513,7 @@ export enum PluginType { UtilityPlugin = "UtilityPlugin", WaveshaperPlugin = "WaveshaperPlugin", - // psuedo plugin type for the Amps node of the filter dialog. + // pseudo plugin type for the Amps node of the filter dialog. PiPedalAmpsNode = "PiPedalAmpsNode", // pseudo plugin types for splitter. @@ -521,7 +524,7 @@ export enum PluginType { - // psuedo plugin type for misc icons. + // pseudo plugin type for misc icons. ErrorPlugin = "ErrorPlugin", Terminal = "Terminal", //"img/fx_terminal.svg"; diff --git a/vite/src/pipedal/PedalboardView.tsx b/vite/src/pipedal/PedalboardView.tsx index 7b3bfcd..8e3f29c 100644 --- a/vite/src/pipedal/PedalboardView.tsx +++ b/vite/src/pipedal/PedalboardView.tsx @@ -327,8 +327,12 @@ class PedalLayout { else { let uiPlugin = model.getUiPlugin(pedalItem.uri); if (uiPlugin != null) { - this.pluginType = uiPlugin.plugin_type; - this.iconUrl = SelectIconUri(uiPlugin.plugin_type); + let pluginType = uiPlugin.plugin_type; + this.pluginType = pluginType; + if (this.uri === "http://two-play.com/plugins/toob-nam") { + pluginType = PluginType.NamPlugin; + } + this.iconUrl = SelectIconUri(pluginType); this.name = uiPlugin.label; if (pedalItem.title !== "") { this.name = pedalItem.title; @@ -1109,12 +1113,18 @@ withStyles(
) let uiPlugin = this.model.getUiPlugin(item.pedalItem?.uri ?? ""); - let pluginMissing = uiPlugin == null; + let pluginMissing = uiPlugin === null; + let pluginType = item.pluginType; + if (uiPlugin && uiPlugin.uri === "http://two-play.com/plugins/toob-nam") + { + pluginType = PluginType.NamPlugin; + + } result.push(
{this.pedalButton( item.pedalItem?.instanceId ?? -1, - item.pluginType, + pluginType, !item.isEmpty(), item.pedalItem?.isEnabled ?? false, true, diff --git a/vite/src/pipedal/PluginIcon.tsx b/vite/src/pipedal/PluginIcon.tsx index a273a61..e034eb5 100644 --- a/vite/src/pipedal/PluginIcon.tsx +++ b/vite/src/pipedal/PluginIcon.tsx @@ -32,6 +32,7 @@ import FxPhaserIcon from './svg/fx_phaser.svg?react'; import FxFilterIcon from './svg/fx_filter.svg?react'; import FxDelayIcon from './svg/fx_delay.svg?react'; +import FxNamIcon from './svg/fx_nam.svg?react'; import FxAmplifierIcon from './svg/fx_amplifier.svg?react'; import FxChorusIcon from './svg/fx_chorus.svg?react'; import FxModulatorIcon from './svg/fx_modulator.svg?react'; @@ -97,9 +98,14 @@ export function SelectSvgIcon(plugin_type: PluginType, className: string, size: } let myStyle = { width: size, height: size, opacity: opacity, color: color, fill: color }; switch (plugin_type) { + + case PluginType.NamPlugin: + return ; case PluginType.PhaserPlugin: return ; case PluginType.FilterPlugin: + case PluginType.BandpassPlugin: + case PluginType.AllpassPlugin: return ; case PluginType.DelayPlugin: return ; @@ -175,16 +181,20 @@ export function SelectSvgIcon(plugin_type: PluginType, className: string, size: case PluginType.Terminal: return ; - default: case PluginType.Plugin: + default: return ; } } export function SelectBaseIcon(plugin_type: PluginType): string { switch (plugin_type) { + case PluginType.NamPlugin: + return "fx_nam.svg"; case PluginType.PhaserPlugin: return "fx_phaser.svg"; case PluginType.FilterPlugin: + case PluginType.BandpassPlugin: + case PluginType.AllpassPlugin: return "fx_filter.svg"; case PluginType.DelayPlugin: return "fx_delay.svg"; diff --git a/vite/src/pipedal/svg/fx_nam.svg b/vite/src/pipedal/svg/fx_nam.svg new file mode 100644 index 0000000..51e7b60 --- /dev/null +++ b/vite/src/pipedal/svg/fx_nam.svg @@ -0,0 +1,21 @@ + + + + + + +