synthv1 - an old-school polyphonic synthesizer

synthv1 - an old-school polyphonic synthesizer
----------------------------------------------

  an old-school 4-oscillator subtractive polyphonic synthesizer
  with stereo fx.

Features:

  - pure stand-alone JACK [1] client with JACK-session, NSM [3] and both
    JACK MIDI and ALSA MIDI [2] input support;

  - LV2 [4] instrument plugin.
    URI: http://synthv1.sourceforge.net/lv2

License:

  synthv1 is free, Linux Audio [5] open-source software, distributed under
  the terms of the GNU General Public License (GPL) [6] version 2 or later.

Website:

  https://synthv1.sourceforge.io
  http://synthv1.sourceforge.net

Project page:

  https://sourceforge.net/projects/synthv1

Git repos:

  https://git.code.sf.net/p/synthv1/code
  https://github.com/rncbc/synthv1.git
  https://gitlab.com/rncbc/synthv1.git
  https://bitbucket.org/rncbc/synthv1.git

Weblog:

  https://www.rncbc.org

Requirements:

  mandatory,

  - Qt framework [7], C++ class library and tools for
    cross-platform application and UI development
    https://qt.io/

  optional (opted-in at build time),

  - JACK [1] Audio Connection Kit
    https://jackaudio.org/

  - ALSA [2], Advanced Linux Sound Architecture
    https://www.alsa-project.org/

  - LV2 [4], Audio Plugin Standard, the extensible successor of LADSPA
    https://lv2plug.in/

  - liblo [8], Lightweight OSC implementation
    (needed for NSM support [3])
    http://liblo.sourceforge.net/

Installation:

  - unpack tarball as usual; in the extracted source directory:

    cmake [-DCMAKE_INSTALL_PREFIX=/usr/local] -B build
    cmake --build build [--parallel 
  ]

  - optionally, as root:

    sudo cmake --install build

  - see also the README.cmake file in the source distribution.

Acknowledgements:

  synthv1 logo/icon is an original fine work of Jarle Richard Akselsen.

References:

 [1] JACK Audio Connection Kit
     
  https://jackaudio.org/

 [2] ALSA, Advanced Linux Sound Architecture
     
  https://www.alsa-project.org/

 [3] Non Session Management (NSM)
     
  http://non.tuxfamily.org/nsm/

 [4] LV2, Audio Plugin Standard, the extensible successor of LADSPA
     
  http://lv2plug.in/

 [5] Linux Audio consortium of libre software for audio-related work
     
  https://linuxaudio.org

 [6] GNU General Public License
     
  https://www.gnu.org/copyleft/gpl.html

 [7] Qt framework, C++ class library and tools for
     cross-platform application and UI development
     
  https://qt.io/

 [8] liblo [8], Lightweight OSC implementation
     (needed for NSM support)
     
  http://liblo.sourceforge.net/


Cheers && Enjoy.
--
rncbc aka. Rui Nuno Capela
[email protected]

  https://www.rncbc.org

 
Comments
  • Add Windows LV2 support (EXPERIMENTAL)

    Add Windows LV2 support (EXPERIMENTAL)

    By adding corresponding LV2 UI code, SynthV1 is available on Windows now. Windows LV2 hosts (e.g. REAPER v6.28) could load SynthV1's Qt UI.

    image

    KNOWN ISSUE:

    • Plugin will crash if you delete the SynthV1 instance from REAPER's FX list, then re-add it. Backtrace from GDB shows that crash point is in Qt6Gui.dll.
    • CMake only. I didn't improve Autoconf files, as Autotools runs extremely slow on Msys2.
  • std::bad_alloc with Ardour and play-loop

    std::bad_alloc with Ardour and play-loop

    After no response on IRC, I tried to report this on Sourceforge, but creating a ticket there failed with 405, method not allowed.

    Segfault of Ardour (current git) with terminate called after throwing an instance of 'std::bad_alloc', when the end of the loop range is reached during play-loop and a LV2 instance of synthv1 is enabled. No crash if the plugin is disabled.

    The Ardour/play-loop/synthv1 combination used to work, so either a recent Ardour update triggered the issue, or there must be another ingredient. I now have an Ardour session that will crash everytime if one just starts play-loop after loading. No such issue with other synth plugins.

    Backtrace:

    terminate called after throwing an instance of 'std::bad_alloc'
      what():  std::bad_alloc
    Aborted (core dumped)
    /media/hd/src/ardour_git/gtk2_ardour: ./ardbg
    GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
    Copyright (C) 2014 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "x86_64-linux-gnu".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.
    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    Reading symbols from ./../build/gtk2_ardour/ardour-4.6.262...done.
    (gdb) core-file core
    [New LWP 10797]
    [New LWP 10799]
    [New LWP 10802]
    [New LWP 10800]
    [New LWP 10803]
    [New LWP 10801]
    [New LWP 10804]
    [New LWP 10810]
    [New LWP 10777]
    [New LWP 10778]
    [New LWP 10779]
    [New LWP 10798]
    [New LWP 10805]
    [New LWP 10771]
    [New LWP 10809]
    [New LWP 10772]
    [New LWP 10773]
    [New LWP 10774]
    [New LWP 10775]
    [New LWP 10776]
    [New LWP 10795]
    [New LWP 10796]
    [New LWP 10768]
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
    Traceback (most recent call last):
      File "/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py", line 63, in <module>
        from libstdcxx.v6.printers import register_libstdcxx_printers
    ImportError: No module named 'libstdcxx'
    Core was generated by `./../build/gtk2_ardour/ardour-4.6.262 /media/hd/audio/cramned'.
    Program terminated with signal SIGABRT, Aborted.
    #0  0x00007f6733ea8cc9 in __GI_raise ([email protected]=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
    56  ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
    (gdb) thread apply all bt
    
    Thread 23 (Thread 0x7f673b87ba00 (LWP 10768)):
    #0  0x00007f6733f5f12d in poll () at ../sysdeps/unix/syscall-template.S:81
    #1  0x00007f6738173fe4 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007f673817430a in g_main_loop_run () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007f6737c19447 in gtk_main () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
    #4  0x00007f673ae733d6 in Gtkmm2ext::UI::run (this=0x35492d0, old_receiver=...) at ../libs/gtkmm2ext/gtk_ui.cc:284
    #5  0x0000000000a41eca in main (argc=2, argv=0x7ffeed4064b8) at ../gtk2_ardour/main.cc:396
    
    Thread 22 (Thread 0x7f6705bc6700 (LWP 10796)):
    #0  0x00007f67355213bd in read () at ../sysdeps/unix/syscall-template.S:81
    #1  0x00007f6716bd404e in Jack::JackClientSocket::Read(void*, int) () from /usr/lib/libjack.so.0
    #2  0x00007f6716bd7525 in Jack::JackClientNotification::Read(Jack::detail::JackChannelTransactionInterface*) () from /usr/lib/libjack.so.0
    #3  0x00007f6716bd723a in Jack::JackSocketClientChannel::Execute() () from /usr/lib/libjack.so.0
    #4  0x00007f6716bd1c1a in Jack::JackPosixThread::ThreadHandler(void*) () from /usr/lib/libjack.so.0
    #5  0x00007f673551a182 in start_thread (arg=0x7f6705bc6700) at pthread_create.c:312
    #6  0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 21 (Thread 0x7f6705c47700 (LWP 10795)):
    #0  [email protected]@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
    #1  0x00007f6716bd30dc in Jack::JackPosixProcessSync::Wait() () from /usr/lib/libjack.so.0
    #2  0x00007f6716bcbdab in Jack::JackMessageBuffer::Execute() () from /usr/lib/libjack.so.0
    #3  0x00007f6716bd1c1a in Jack::JackPosixThread::ThreadHandler(void*) () from /usr/lib/libjack.so.0
    #4  0x00007f673551a182 in start_thread (arg=0x7f6705c47700) at pthread_create.c:312
    #5  0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 20 (Thread 0x7f67177fe700 (LWP 10776)):
    #0  [email protected]@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
    #1  0x00007f67381b5bf7 in g_cond_wait () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007f673a14aef0 in ARDOUR::AudioEngine::do_devicelist_update (this=0x357cda0) at ../libs/ardour/audioengine.cc:559
    #3  0x00007f673a156ee5 in boost::_mfi::mf0<void, ARDOUR::AudioEngine>::operator() (this=0x362cce0, p=0x357cda0)
        at /usr/include/boost/bind/mem_fn_template.hpp:49
    #4  0x00007f673a156b26 in boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> >::operator()<boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list0> (this=0x362ccf0, f=..., a=...) at /usr/include/boost/bind/bind.hpp:253
    #5  0x00007f673a15648f in boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> > >::operator() (this=0x362cce0) at /usr/include/boost/bind/bind_template.hpp:20
    #6  0x00007f673a155c66 in sigc::adaptor_functor<boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> > > >::operator() (this=0x362cce0) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
    #7  0x00007f673a154e78 in sigc::internal::slot_call0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> > >, void>::call_it (rep=0x362ccb0) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
    ---Type <return> to continue, or q <return> to quit---
    #8  0x00007f67388cb11d in ?? () from /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
    #9  0x00007f6738198f05 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #10 0x00007f673551a182 in start_thread (arg=0x7f67177fe700) at pthread_create.c:312
    #11 0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 19 (Thread 0x7f6717fff700 (LWP 10775)):
    #0  [email protected]@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
    #1  0x00007f67381b5bf7 in g_cond_wait () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007f673a14accf in ARDOUR::AudioEngine::do_reset_backend (this=0x357cda0) at ../libs/ardour/audioengine.cc:524
    #3  0x00007f673a156ee5 in boost::_mfi::mf0<void, ARDOUR::AudioEngine>::operator() (this=0x362c2d0, p=0x357cda0)
        at /usr/include/boost/bind/mem_fn_template.hpp:49
    #4  0x00007f673a156b26 in boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> >::operator()<boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list0> (this=0x362c2e0, f=..., a=...) at /usr/include/boost/bind/bind.hpp:253
    #5  0x00007f673a15648f in boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> > >::operator() (this=0x362c2d0) at /usr/include/boost/bind/bind_template.hpp:20
    #6  0x00007f673a155c66 in sigc::adaptor_functor<boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> > > >::operator() (this=0x362c2d0) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
    #7  0x00007f673a154e78 in sigc::internal::slot_call0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> > >, void>::call_it (rep=0x362c2a0) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
    #8  0x00007f67388cb11d in ?? () from /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
    #9  0x00007f6738198f05 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #10 0x00007f673551a182 in start_thread (arg=0x7f6717fff700) at pthread_create.c:312
    #11 0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 18 (Thread 0x7f672626b700 (LWP 10774)):
    #0  [email protected]@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
    #1  0x00007f67381b5bf7 in g_cond_wait () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007f673a0fbe98 in ARDOUR::Analyser::work () at ../libs/ardour/analyser.cc:86
    #3  0x00007f673a0fbc8d in analyser_work () at ../libs/ardour/analyser.cc:51
    #4  0x0000000000c561e9 in sigc::pointer_functor0<void>::operator() (this=0x36373a8) at /usr/include/sigc++-2.0/sigc++/functors/ptr_fun.h:77
    #5  0x0000000000c535a8 in sigc::adaptor_functor<sigc::pointer_functor0<void> >::operator() (this=0x36373a0)
        at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
    #6  0x0000000000c4feaf in sigc::internal::slot_call0<sigc::pointer_functor0<void>, void>::call_it (rep=0x3637370)
        at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
    #7  0x00007f67388cb11d in ?? () from /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
    #8  0x00007f6738198f05 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #9  0x00007f673551a182 in start_thread (arg=0x7f672626b700) at pthread_create.c:312
    #10 0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 17 (Thread 0x7f6726a6c700 (LWP 10773)):
    ---Type <return> to continue, or q <return> to quit---
    #0  [email protected]@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
    #1  0x00007f67381b5bf7 in g_cond_wait () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007f673a569288 in peak_thread_work () at ../libs/ardour/source_factory.cc:71
    #3  0x0000000000c561e9 in sigc::pointer_functor0<void>::operator() (this=0x3538198) at /usr/include/sigc++-2.0/sigc++/functors/ptr_fun.h:77
    #4  0x0000000000c535a8 in sigc::adaptor_functor<sigc::pointer_functor0<void> >::operator() (this=0x3538190)
        at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
    #5  0x0000000000c4feaf in sigc::internal::slot_call0<sigc::pointer_functor0<void>, void>::call_it (rep=0x3538160)
        at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
    #6  0x00007f67388cb11d in ?? () from /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
    #7  0x00007f6738198f05 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #8  0x00007f673551a182 in start_thread (arg=0x7f6726a6c700) at pthread_create.c:312
    #9  0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 16 (Thread 0x7f672726d700 (LWP 10772)):
    #0  [email protected]@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
    #1  0x00007f67381b5bf7 in g_cond_wait () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007f673a569288 in peak_thread_work () at ../libs/ardour/source_factory.cc:71
    #3  0x0000000000c561e9 in sigc::pointer_functor0<void>::operator() (this=0x36377a8) at /usr/include/sigc++-2.0/sigc++/functors/ptr_fun.h:77
    #4  0x0000000000c535a8 in sigc::adaptor_functor<sigc::pointer_functor0<void> >::operator() (this=0x36377a0)
        at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
    #5  0x0000000000c4feaf in sigc::internal::slot_call0<sigc::pointer_functor0<void>, void>::call_it (rep=0x3637770)
        at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
    #6  0x00007f67388cb11d in ?? () from /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
    #7  0x00007f6738198f05 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #8  0x00007f673551a182 in start_thread (arg=0x7f672726d700) at pthread_create.c:312
    #9  0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 15 (Thread 0x7f66c7ae9700 (LWP 10809)):
    #0  [email protected]@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
    #1  0x00007f67381b5bf7 in g_cond_wait () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007f673b218abf in ArdourCanvas::WaveView::drawing_thread () at ../libs/canvas/wave_view.cc:1543
    #3  0x0000000000c561e9 in sigc::pointer_functor0<void>::operator() (this=0x15e73708) at /usr/include/sigc++-2.0/sigc++/functors/ptr_fun.h:77
    #4  0x0000000000c535a8 in sigc::adaptor_functor<sigc::pointer_functor0<void> >::operator() (this=0x15e73700)
        at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
    #5  0x0000000000c4feaf in sigc::internal::slot_call0<sigc::pointer_functor0<void>, void>::call_it (rep=0x15e736d0)
        at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
    #6  0x00007f67388cb11d in ?? () from /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
    #7  0x00007f6738198f05 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #8  0x00007f673551a182 in start_thread (arg=0x7f66c7ae9700) at pthread_create.c:312
    #9  0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    ---Type <return> to continue, or q <return> to quit---
    
    Thread 14 (Thread 0x7f6727a6e700 (LWP 10771)):
    #0  0x00007f6735521b9d in nanosleep () at ../sysdeps/unix/syscall-template.S:81
    #1  0x00007f673819a498 in g_usleep () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x0000000000f26e02 in gui_event_loop (ptr=0x0) at ../gtk2_ardour/linux_vst_gui_support.cc:475
    #3  0x00007f673551a182 in start_thread (arg=0x7f6727a6e700) at pthread_create.c:312
    #4  0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 13 (Thread 0x7f66c82ea700 (LWP 10805)):
    #0  0x00007f6735521b9d in nanosleep () at ../sysdeps/unix/syscall-template.S:81
    #1  0x00007f673819a498 in g_usleep () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007f673a19bbca in ARDOUR::AutomationWatch::thread (this=0x1814eb80) at ../libs/ardour/automation_watch.cc:153
    #3  0x00007f673a19ef03 in boost::_mfi::mf0<void, ARDOUR::AutomationWatch>::operator() (this=0x89fb420, p=0x1814eb80)
        at /usr/include/boost/bind/mem_fn_template.hpp:49
    #4  0x00007f673a19eb70 in boost::_bi::list1<boost::_bi::value<ARDOUR::AutomationWatch*> >::operator()<boost::_mfi::mf0<void, ARDOUR::AutomationWatch>, boost::_bi::list0> (this=0x89fb430, f=..., a=...) at /usr/include/boost/bind/bind.hpp:253
    #5  0x00007f673a19e70b in boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AutomationWatch>, boost::_bi::list1<boost::_bi::value<ARDOUR::AutomationWatch*> > >::operator() (this=0x89fb420) at /usr/include/boost/bind/bind_template.hpp:20
    #6  0x00007f673a19e6a0 in sigc::adaptor_functor<boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AutomationWatch>, boost::_bi::list1<boost::_bi::value<ARDOUR::AutomationWatch*> > > >::operator() (this=0x89fb420) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
    #7  0x00007f673a19e208 in sigc::internal::slot_call0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AutomationWatch>, boost::_bi::list1<boost::_bi::value<ARDOUR::AutomationWatch*> > >, void>::call_it (rep=0x89fb3f0) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
    #8  0x00007f67388cb11d in ?? () from /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
    #9  0x00007f6738198f05 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #10 0x00007f673551a182 in start_thread (arg=0x7f66c82ea700) at pthread_create.c:312
    #11 0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 12 (Thread 0x7f6705ac3800 (LWP 10798)):
    #0  0x00007f6733f5f12d in poll () at ../sysdeps/unix/syscall-template.S:81
    #1  0x00007f6738ffd37c in CrossThreadChannel::poll_for_request (this=0x4630db0) at ../libs/pbd/crossthread.posix.cc:80
    #2  0x00007f6738ffd3e5 in CrossThreadChannel::receive (this=0x4630db0, [email protected]: 0 '\000', wait=true)
        at ../libs/pbd/crossthread.posix.cc:101
    #3  0x00007f673a1af244 in ARDOUR::Butler::thread_work (this=0x4630d20) at ../libs/ardour/butler.cc:175
    #4  0x00007f673a1af025 in ARDOUR::Butler::_thread_work (arg=0x4630d20) at ../libs/ardour/butler.cc:156
    #5  0x00007f67390177c0 in fake_thread_start (arg=0xbbfa440) at ../libs/pbd/pthread_utils.cc:101
    #6  0x00007f673551a182 in start_thread (arg=0x7f6705ac3800) at pthread_create.c:312
    #7  0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 11 (Thread 0x7f6706c9b700 (LWP 10779)):
    #0  0x00007f6733f5f12d in poll () at ../sysdeps/unix/syscall-template.S:81
    ---Type <return> to continue, or q <return> to quit---
    #1  0x00007f6738173fe4 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007f67381740ec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007f6738174129 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #4  0x00007f6738198f05 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #5  0x00007f673551a182 in start_thread (arg=0x7f6706c9b700) at pthread_create.c:312
    #6  0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 10 (Thread 0x7f6714a04700 (LWP 10778)):
    #0  0x00007f6733f5f12d in poll () at ../sysdeps/unix/syscall-template.S:81
    #1  0x00007f6738173fe4 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007f673817430a in g_main_loop_run () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007f673114a336 in ?? () from /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
    #4  0x00007f6738198f05 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #5  0x00007f673551a182 in start_thread (arg=0x7f6714a04700) at pthread_create.c:312
    #6  0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 9 (Thread 0x7f6715205700 (LWP 10777)):
    #0  0x00007f6733f5f12d in poll () at ../sysdeps/unix/syscall-template.S:81
    #1  0x00007f6738173fe4 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007f67381740ec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007f671520d1ad in ?? () from /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so
    #4  0x00007f6738198f05 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #5  0x00007f673551a182 in start_thread (arg=0x7f6715205700) at pthread_create.c:312
    #6  0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 8 (Thread 0x7f66c6ae7700 (LWP 10810)):
    #0  [email protected]@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:238
    #1  0x00007f67381b5ce5 in g_cond_wait_until () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007f673814a1c1 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007f673814a74b in g_async_queue_timeout_pop () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #4  0x00007f6738199956 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #5  0x00007f6738198f05 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #6  0x00007f673551a182 in start_thread (arg=0x7f66c6ae7700) at pthread_create.c:312
    #7  0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 7 (Thread 0x7f66e52be700 (LWP 10804)):
    #0  [email protected]@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
    #1  0x00007f673a50200c in ARDOUR::Session::emit_thread_run (this=0x4d926b0) at ../libs/ardour/session_process.cc:1313
    #2  0x00007f673a501fb6 in ARDOUR::Session::emit_thread (arg=0x4d926b0) at ../libs/ardour/session_process.cc:1302
    #3  0x00007f673551a182 in start_thread (arg=0x7f66e52be700) at pthread_create.c:312
    ---Type <return> to continue, or q <return> to quit---
    #4  0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 6 (Thread 0x7f66e62c0700 (LWP 10801)):
    #0  [email protected]@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
    #1  0x00007f66cf3f67fa in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
    #2  0x00007f66cfc68733 in synthv1_sched_thread::run() () from /usr/local/lib/lv2/synthv1.lv2/synthv1.so
    #3  0x00007f66cf3f6233 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
    #4  0x00007f673551a182 in start_thread (arg=0x7f66e62c0700) at pthread_create.c:312
    #5  0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 5 (Thread 0x7f66c8cf0700 (LWP 10803)):
    #0  0x00007f6733f5f12d in poll () at ../sysdeps/unix/syscall-template.S:81
    #1  0x00007f6738173fe4 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007f673817430a in g_main_loop_run () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007f6738fe7d8b in BaseUI::main_thread (this=0x85740c8) at ../libs/pbd/base_ui.cc:86
    #4  0x00007f6738feb9c6 in sigc::bound_mem_functor0<void, BaseUI>::operator() (this=0xa135788)
        at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1787
    #5  0x00007f6738feb71a in sigc::adaptor_functor<sigc::bound_mem_functor0<void, BaseUI> >::operator() (this=0xa135780)
        at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
    #6  0x00007f6738feb245 in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, BaseUI>, void>::call_it (rep=0xa135750)
        at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
    #7  0x00007f67388cb11d in ?? () from /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
    #8  0x00007f6738198f05 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #9  0x00007f673551a182 in start_thread (arg=0x7f66c8cf0700) at pthread_create.c:312
    #10 0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 4 (Thread 0x7f66e6ac1700 (LWP 10800)):
    #0  0x00007f6733f63da3 in select () at ../sysdeps/unix/syscall-template.S:81
    #1  0x00007f66d0d057dd in ?? () from /usr/local/lib/lv2/Obxd.lv2/Obxd.so
    #2  0x00007f66d0d05b4f in ?? () from /usr/local/lib/lv2/Obxd.lv2/Obxd.so
    #3  0x00007f66d0ccde87 in ?? () from /usr/local/lib/lv2/Obxd.lv2/Obxd.so
    #4  0x00007f66d0cfbc24 in ?? () from /usr/local/lib/lv2/Obxd.lv2/Obxd.so
    #5  0x00007f66d0cfbe59 in ?? () from /usr/local/lib/lv2/Obxd.lv2/Obxd.so
    #6  0x00007f673551a182 in start_thread (arg=0x7f66e6ac1700) at pthread_create.c:312
    #7  0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 3 (Thread 0x7f66e5abf700 (LWP 10802)):
    #0  0x00007f6733f63da3 in select () at ../sysdeps/unix/syscall-template.S:81
    #1  0x00007f66ca9de65d in juce::MessageManager::dispatchNextMessageOnSystemQueue(bool) () from /usr/local/lib/lv2/helm.lv2/helm.so
    #2  0x00007f66ca9de877 in juce::MessageManager::runDispatchLoop() () from /usr/local/lib/lv2/helm.lv2/helm.so
    ---Type <return> to continue, or q <return> to quit---
    #3  0x00007f66cab73d97 in SharedMessageThread::run() () from /usr/local/lib/lv2/helm.lv2/helm.so
    #4  0x00007f66ca99143a in juce::Thread::threadEntryPoint() () from /usr/local/lib/lv2/helm.lv2/helm.so
    #5  0x00007f66ca9915c9 in threadEntryProc () from /usr/local/lib/lv2/helm.lv2/helm.so
    #6  0x00007f673551a182 in start_thread (arg=0x7f66e5abf700) at pthread_create.c:312
    #7  0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 2 (Thread 0x7f670649a700 (LWP 10799)):
    #0  0x00007f6733f5f12d in poll () at ../sysdeps/unix/syscall-template.S:81
    #1  0x00007f6738173fe4 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007f673817430a in g_main_loop_run () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007f6738fe7d8b in BaseUI::main_thread (this=0xbbfa630) at ../libs/pbd/base_ui.cc:86
    #4  0x00007f6738feb9c6 in sigc::bound_mem_functor0<void, BaseUI>::operator() (this=0xbbfaf58)
        at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1787
    #5  0x00007f6738feb71a in sigc::adaptor_functor<sigc::bound_mem_functor0<void, BaseUI> >::operator() (this=0xbbfaf50)
        at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
    #6  0x00007f6738feb245 in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, BaseUI>, void>::call_it (rep=0xbbfaf20)
        at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
    #7  0x00007f67388cb11d in ?? () from /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
    #8  0x00007f6738198f05 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #9  0x00007f673551a182 in start_thread (arg=0x7f670649a700) at pthread_create.c:312
    #10 0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    Thread 1 (Thread 0x7f6705b45700 (LWP 10797)):
    #0  0x00007f6733ea8cc9 in __GI_raise ([email protected]=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
    #1  0x00007f6733eac0d8 in __GI_abort () at abort.c:89
    #2  0x00007f67347b3535 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
    #3  0x00007f67347b16d6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
    #4  0x00007f67347b1703 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
    #5  0x00007f67347b1922 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
    #6  0x00007f67347b1e0d in operator new(unsigned long) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
    #7  0x00007f67347b1ea9 in operator new[](unsigned long) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
    #8  0x00007f66cfc53210 in synthv1_impl::alloc_sfxs(unsigned int) () from /usr/local/lib/lv2/synthv1.lv2/synthv1.so
    #9  0x00007f66cfc5db88 in synthv1_impl::process(float**, float**, unsigned int) () from /usr/local/lib/lv2/synthv1.lv2/synthv1.so
    #10 0x00007f66cfc61074 in synthv1_lv2::run(unsigned int) () from /usr/local/lib/lv2/synthv1.lv2/synthv1.so
    #11 0x00007f673a5a1746 in lilv_instance_run (instance=0x1bcbe3c0, sample_count=64) at /usr/local/include/lilv-0/lilv/lilv.h:1662
    #12 0x00007f673a5adadf in ARDOUR::LV2Plugin::run (this=0x1bce9e00, nframes=64) at ../libs/ardour/lv2_plugin.cc:2397
    #13 0x00007f673a5acd30 in ARDOUR::LV2Plugin::connect_and_run (this=0x1bce9e00, bufs=..., in_map=..., out_map=..., nframes=64, offset=0)
        at ../libs/ardour/lv2_plugin.cc:2216
    #14 0x00007f673a3b9899 in ARDOUR::PluginInsert::connect_and_run (this=0x1bc876a0, bufs=..., nframes=64, offset=0, with_auto=true, now=8127936)
        at ../libs/ardour/plugin_insert.cc:442
    ---Type <return> to continue, or q <return> to quit---
    #15 0x00007f673a3ba353 in ARDOUR::PluginInsert::automation_run (this=0x1bc876a0, bufs=..., start=8127936, nframes=64)
        at ../libs/ardour/plugin_insert.cc:566
    #16 0x00007f673a3ba05a in ARDOUR::PluginInsert::run (this=0x1bc876a0, bufs=..., start_frame=8127936, nframes=64)
        at ../libs/ardour/plugin_insert.cc:506
    #17 0x00007f673a429946 in ARDOUR::Route::process_output_buffers (this=0x1af462f0, bufs=..., start_frame=8127936, end_frame=8128000, nframes=64, 
        declick=-1, gain_automation_ok=true) at ../libs/ardour/route.cc:632
    #18 0x00007f673a34f28f in ARDOUR::MidiTrack::roll (this=0x1af462f0, nframes=64, start_frame=8127936, end_frame=8128000, declick=-1, 
        [email protected]: false) at ../libs/ardour/midi_track.cc:454
    #19 0x00007f673a4fdd96 in ARDOUR::Session::process_routes (this=0x4d926b0, nframes=64, [email protected]: true)
        at ../libs/ardour/session_process.cc:203
    #20 0x00007f673a4feab1 in ARDOUR::Session::process_with_events (this=0x4d926b0, nframes=64) at ../libs/ardour/session_process.cc:432
    #21 0x00007f673a4fd3f1 in ARDOUR::Session::process (this=0x4d926b0, nframes=1024) at ../libs/ardour/session_process.cc:76
    #22 0x00007f673a14a6b7 in ARDOUR::AudioEngine::process_callback (this=0x357cda0, nframes=1024) at ../libs/ardour/audioengine.cc:374
    #23 0x00007f672417e648 in ARDOUR::JACKAudioBackend::process_thread (this=0x37bbf80) at ../libs/backends/jack/jack_audiobackend.cc:967
    #24 0x00007f672417e5d0 in ARDOUR::JACKAudioBackend::_process_thread (arg=0x37bbf80) at ../libs/backends/jack/jack_audiobackend.cc:944
    #25 0x00007f6716bb27cb in Jack::JackClient::Execute() () from /usr/lib/libjack.so.0
    #26 0x00007f6716bd1c1a in Jack::JackPosixThread::ThreadHandler(void*) () from /usr/lib/libjack.so.0
    #27 0x00007f673551a182 in start_thread (arg=0x7f6705b45700) at pthread_create.c:312
    #28 0x00007f6733f6c47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    (gdb)
    
  • synthv1_wave::sample() overflow when working with DAW

    synthv1_wave::sample() overflow when working with DAW

    Here I have a new bug when working with REAPER on Windows. Seems that synthv1_wave::sample() generated an overflown value, then passed to synthv1_wave::interp().

    Backtrace from GDB:

    --Type <RET> for more, q to quit, c to continue without paging--
    
    Thread 28 received signal SIGSEGV, Segmentation fault.
    [Switching to Thread 10788.0x2284]
    synthv1_wave::interp (this=0xad3b2e0, i=4294967295, itab=8, alpha=-4.2949673e+09) at ../src/synthv1_wave.h:144
    144                     const float x0 = frames[i];
    (gdb) bt
    #0  synthv1_wave::interp (this=0xad3b2e0, i=4294967295, itab=8, alpha=-4.2949673e+09) at ../src/synthv1_wave.h:144
    #1  0x00007ffd7092f03c in synthv1_wave::sample (this=0xad3b2e0, phase=..., freq=-0.623733521)
        at ../src/synthv1_wave.h:135
    #2  0x00007ffd704cd060 in synthv1_oscillator::sample (this=0xadfd2d8, freq=-0.623733521) at ../src/synthv1_wave.h:295
    #3  0x00007ffd70206525 in synthv1_impl::process (this=0xad3b2e0, ins=0xa58ea60, outs=0xa58ea50, nframes=384)
        at ../src/synthv1.cpp:2464
    #4  0x00007ffd707b0a1a in synthv1::process (this=0x31e7280, ins=0xa58ea60, outs=0xa58ea50, nframes=384)
        at ../src/synthv1.cpp:2833
    #5  0x00007ffd701567b7 in synthv1_lv2::run (this=0x31e7280, nframes=384) at ../src/synthv1_lv2.cpp:362
    #6  0x00007ffd700299ed in synthv1_lv2_run (instance=0x31e7280, nframes=384) at ../src/synthv1_lv2.cpp:828
    #7  0x000000014005afde in ?? ()
    #8  0x00000001403a2943 in ?? ()
    #9  0x00000001403cca72 in ?? ()
    #10 0x000000014076a101 in ?? ()
    #11 0x000000014077211f in ?? ()
    #12 0x0000000140761a9d in ?? ()
    #13 0x00000001408c5d28 in ?? ()
    #14 0x00000001408e5397 in ?? ()
    #15 0x00000001408e546f in ?? ()
    #16 0x00007ffdc96b7034 in KERNEL32!BaseThreadInitThunk () from C:\WINDOWS\System32\kernel32.dll
    #17 0x00007ffdca702651 in ntdll!RtlUserThreadStart () from C:\WINDOWS\SYSTEM32\ntdll.dll
    #18 0x0000000000000000 in ?? ()
    Backtrace stopped: previous frame inner to this frame (corrupt stack?)
    
  • Question about porting SynthV1 to VST

    Question about porting SynthV1 to VST

    Now I've ported synthv1 to VST, see https://github.com/anclark/synthv1/tree/vst-implementation, and available for both Linux and Windows. But it's not stable enough, still requiring more tests, and I'm still encountering a critical problem on processing.

    System environment

    • Host: REAPER v6.36
    • Audio system: ALSA, with integrated Conexant HDA card

    Problems

    • When playing a MIDI sequence with sustain pedal activated, I will hear stitiches. This will also happen on any other sequences.
    • Sound output will be terribly distorted when continue inputing musical notes as sustain pedal activated.

    Both problems are not exist on LV2 edition.

    Note

    VST-related codes are mainly in src, with keyword vst in filenames. For example, the main VST code is in synthv1_vst.cpp.

  • Another bug when working with a special preset

    Another bug when working with a special preset

    I'm continue testing SynthV1 with REAPER. Today I've found another bug.

    Preset with issue

    Preset file
    <!DOCTYPE synthv1>
    <preset name="Sci-fi Flying 3" version="0.9.22.32git.e83414.dirty [develop]">
     <params>
      <param index="0" name="DCO1_SHAPE1">3</param>
      <param index="1" name="DCO1_WIDTH1">0.99904084205627441</param>
      <param index="2" name="DCO1_BANDL1">0</param>
      <param index="3" name="DCO1_SYNC1">-0</param>
      <param index="4" name="DCO1_SHAPE2">2</param>
      <param index="5" name="DCO1_WIDTH2">1</param>
      <param index="6" name="DCO1_BANDL2">0</param>
      <param index="7" name="DCO1_SYNC2">-0</param>
      <param index="8" name="DCO1_BALANCE">0.00459640845656395</param>
      <param index="9" name="DCO1_DETUNE">0.12084111571311951</param>
      <param index="10" name="DCO1_PHASE">0.24624323844909668</param>
      <param index="11" name="DCO1_RINGMOD">0.69593149423599243</param>
      <param index="12" name="DCO1_OCTAVE">0</param>
      <param index="13" name="DCO1_TUNING">0</param>
      <param index="14" name="DCO1_GLIDE">0.53395593166351318</param>
      <param index="15" name="DCO1_ENVTIME">0.5</param>
      <param index="16" name="DCF1_ENABLED">1</param>
      <param index="17" name="DCF1_CUTOFF">0.049604400992393494</param>
      <param index="18" name="DCF1_RESO">0</param>
      <param index="19" name="DCF1_TYPE">-0</param>
      <param index="20" name="DCF1_SLOPE">2</param>
      <param index="21" name="DCF1_ENVELOPE">0.52650606632232666</param>
      <param index="22" name="DCF1_ATTACK">0.12538035213947296</param>
      <param index="23" name="DCF1_DECAY">0.5547826886177063</param>
      <param index="24" name="DCF1_SUSTAIN">0.69639170169830322</param>
      <param index="25" name="DCF1_RELEASE">0.56676125526428223</param>
      <param index="26" name="LFO1_ENABLED">1</param>
      <param index="27" name="LFO1_SHAPE">-0</param>
      <param index="28" name="LFO1_WIDTH">1</param>
      <param index="29" name="LFO1_BPM">96.970710754394531</param>
      <param index="30" name="LFO1_RATE">0.60932046175003052</param>
      <param index="31" name="LFO1_SYNC">0</param>
      <param index="32" name="LFO1_SWEEP">0.16489776968955994</param>
      <param index="33" name="LFO1_PITCH">-0.44400355219841003</param>
      <param index="34" name="LFO1_BALANCE">-0.83026361465454102</param>
      <param index="35" name="LFO1_RINGMOD">0.065328940749168396</param>
      <param index="36" name="LFO1_CUTOFF">-0.082021772861480713</param>
      <param index="37" name="LFO1_RESO">-1</param>
      <param index="38" name="LFO1_PANNING">-0.36444777250289917</param>
      <param index="39" name="LFO1_VOLUME">-0.016584195196628571</param>
      <param index="40" name="LFO1_ATTACK">0.023350061848759651</param>
      <param index="41" name="LFO1_DECAY">0.75658077001571655</param>
      <param index="42" name="LFO1_SUSTAIN">0.98371082544326782</param>
      <param index="43" name="LFO1_RELEASE">0.33027938008308411</param>
      <param index="44" name="DCA1_VOLUME">1</param>
      <param index="45" name="DCA1_ATTACK">0.47323614358901978</param>
      <param index="46" name="DCA1_DECAY">0.17921185493469238</param>
      <param index="47" name="DCA1_SUSTAIN">1</param>
      <param index="48" name="DCA1_RELEASE">0.48525571823120117</param>
      <param index="49" name="OUT1_WIDTH">0</param>
      <param index="50" name="OUT1_PANNING">0</param>
      <param index="51" name="OUT1_FXSEND">1</param>
      <param index="52" name="OUT1_VOLUME">0.37999999523162842</param>
      <param index="53" name="DEF1_PITCHBEND">0.20000000298023224</param>
      <param index="54" name="DEF1_MODWHEEL">0.20000000298023224</param>
      <param index="55" name="DEF1_PRESSURE">0.20000000298023224</param>
      <param index="56" name="DEF1_VELOCITY">0.20000000298023224</param>
      <param index="57" name="DEF1_CHANNEL">0</param>
      <param index="58" name="DEF1_MONO">0</param>
      <param index="59" name="DCO2_SHAPE1">1</param>
      <param index="60" name="DCO2_WIDTH1">0.95175236463546753</param>
      <param index="61" name="DCO2_BANDL1">0</param>
      <param index="62" name="DCO2_SYNC1">0</param>
      <param index="63" name="DCO2_SHAPE2">2</param>
      <param index="64" name="DCO2_WIDTH2">0.85896515846252441</param>
      <param index="65" name="DCO2_BANDL2">-0</param>
      <param index="66" name="DCO2_SYNC2">-0</param>
      <param index="67" name="DCO2_BALANCE">0.16226750612258911</param>
      <param index="68" name="DCO2_DETUNE">0.00879296101629734</param>
      <param index="69" name="DCO2_PHASE">0.60693609714508057</param>
      <param index="70" name="DCO2_RINGMOD">0</param>
      <param index="71" name="DCO2_OCTAVE">-2</param>
      <param index="72" name="DCO2_TUNING">0</param>
      <param index="73" name="DCO2_GLIDE">0.6011883020401001</param>
      <param index="74" name="DCO2_ENVTIME">0.5</param>
      <param index="75" name="DCF2_ENABLED">1</param>
      <param index="76" name="DCF2_CUTOFF">0.17431449890136719</param>
      <param index="77" name="DCF2_RESO">0.061738401651382446</param>
      <param index="78" name="DCF2_TYPE">0</param>
      <param index="79" name="DCF2_SLOPE">1</param>
      <param index="80" name="DCF2_ENVELOPE">1</param>
      <param index="81" name="DCF2_ATTACK">0.071791119873523712</param>
      <param index="82" name="DCF2_DECAY">0.45163959264755249</param>
      <param index="83" name="DCF2_SUSTAIN">0.54555881023406982</param>
      <param index="84" name="DCF2_RELEASE">0.59177297353744507</param>
      <param index="85" name="LFO2_ENABLED">1</param>
      <param index="86" name="LFO2_SHAPE">3</param>
      <param index="87" name="LFO2_WIDTH">0.52772045135498047</param>
      <param index="88" name="LFO2_BPM">293.73703002929687</param>
      <param index="89" name="LFO2_RATE">0.26580163836479187</param>
      <param index="90" name="LFO2_SYNC">-0</param>
      <param index="91" name="LFO2_SWEEP">-0.6928020715713501</param>
      <param index="92" name="LFO2_PITCH">0.40426778793334961</param>
      <param index="93" name="LFO2_BALANCE">0.086928427219390869</param>
      <param index="94" name="LFO2_RINGMOD">0.40468224883079529</param>
      <param index="95" name="LFO2_CUTOFF">-0.21630749106407166</param>
      <param index="96" name="LFO2_RESO">0.61858391761779785</param>
      <param index="97" name="LFO2_PANNING">-0.62312740087509155</param>
      <param index="98" name="LFO2_VOLUME">0.045989662408828735</param>
      <param index="99" name="LFO2_ATTACK">0.002971498528495431</param>
      <param index="100" name="LFO2_DECAY">0.29200303554534912</param>
      <param index="101" name="LFO2_SUSTAIN">1</param>
      <param index="102" name="LFO2_RELEASE">0.37740409374237061</param>
      <param index="103" name="DCA2_VOLUME">0.22757060825824738</param>
      <param index="104" name="DCA2_ATTACK">0</param>
      <param index="105" name="DCA2_DECAY">0.043900132179260254</param>
      <param index="106" name="DCA2_SUSTAIN">0.68884670734405518</param>
      <param index="107" name="DCA2_RELEASE">0.13113300502300262</param>
      <param index="108" name="OUT2_WIDTH">0</param>
      <param index="109" name="OUT2_PANNING">0</param>
      <param index="110" name="OUT2_FXSEND">1</param>
      <param index="111" name="OUT2_VOLUME">0.40000000596046448</param>
      <param index="112" name="DEF2_PITCHBEND">0.20000000298023224</param>
      <param index="113" name="DEF2_MODWHEEL">0.20000000298023224</param>
      <param index="114" name="DEF2_PRESSURE">0.20000000298023224</param>
      <param index="115" name="DEF2_VELOCITY">0.20000000298023224</param>
      <param index="116" name="DEF2_CHANNEL">0</param>
      <param index="117" name="DEF2_MONO">0</param>
      <param index="118" name="CHO1_WET">0</param>
      <param index="119" name="CHO1_DELAY">0.5</param>
      <param index="120" name="CHO1_FEEDB">0.5</param>
      <param index="121" name="CHO1_RATE">0.5</param>
      <param index="122" name="CHO1_MOD">0.5</param>
      <param index="123" name="FLA1_WET">0</param>
      <param index="124" name="FLA1_DELAY">0.5</param>
      <param index="125" name="FLA1_FEEDB">0.5</param>
      <param index="126" name="FLA1_DAFT">0</param>
      <param index="127" name="PHA1_WET">0</param>
      <param index="128" name="PHA1_RATE">0.5</param>
      <param index="129" name="PHA1_FEEDB">0.5</param>
      <param index="130" name="PHA1_DEPTH">0.5</param>
      <param index="131" name="PHA1_DAFT">0</param>
      <param index="132" name="DEL1_WET">0</param>
      <param index="133" name="DEL1_DELAY">0.5</param>
      <param index="134" name="DEL1_FEEDB">0.5</param>
      <param index="135" name="DEL1_BPM">180</param>
      <param index="136" name="REV1_WET">0.5</param>
      <param index="137" name="REV1_ROOM">0.5</param>
      <param index="138" name="REV1_DAMP">0.5</param>
      <param index="139" name="REV1_FEEDB">0.5</param>
      <param index="140" name="REV1_WIDTH">0</param>
      <param index="141" name="DYN1_COMPRESS">0</param>
      <param index="142" name="DYN1_LIMITER">1</param>
      <param index="143" name="KEY1_LOW">0</param>
      <param index="144" name="KEY1_HIGH">127</param>
     </params>
    </preset>
    

    How to reveal this bug

    1. Load this preset;
    2. Play note Db7 -> E3 -> Db7.

    GDB Backtrace

    Thread 9 received signal SIGSEGV, Segmentation fault.
    [Switching to Thread 16832.0xe00]
    --Type <RET> for more, q to quit, c to continue without paging--
    synthv1_wave::interp (this=0x3268fd0, i=4294967277, itab=8, alpha=-4.2949673e+09) at ../src/synthv1_wave.h:144
    144                     const float x0 = frames[i];
    (gdb) bt
    #0  synthv1_wave::interp (this=0x3268fd0, i=4294967277, itab=8, alpha=-4.2949673e+09) at ../src/synthv1_wave.h:144
    #1  0x00007ffaa061f207 in synthv1_wave::sample (this=0x3268fd0, phase=..., freq=-235.58374)
        at ../src/synthv1_wave.h:135
    #2  0x00007ffaa01bd220 in synthv1_oscillator::sample (this=0x1225b6b8, freq=-235.58374) at ../src/synthv1_wave.h:295
    #3  0x00007ffa9fef6685 in synthv1_impl::process (this=0x3268fd0, ins=0xb43ea60, outs=0xb43ea50, nframes=2048)
        at ../src/synthv1.cpp:2509
    #4  0x00007ffaa04a0bda in synthv1::process (this=0x3267f50, ins=0xb43ea60, outs=0xb43ea50, nframes=2048)
        at ../src/synthv1.cpp:2878
    #5  0x00007ffa9fe467b7 in synthv1_lv2::run (this=0x3267f50, nframes=2048) at ../src/synthv1_lv2.cpp:362
    #6  0x00007ffa9fd199ed in synthv1_lv2_run (instance=0x3267f50, nframes=2048) at ../src/synthv1_lv2.cpp:828
    #7  0x000000014005afde in ?? ()
    #8  0x00000001403a2943 in ?? ()
    #9  0x00000001403cca72 in ?? ()
    #10 0x000000014076a101 in ?? ()
    #11 0x000000014077211f in ?? ()
    #12 0x0000000140761a9d in ?? ()
    #13 0x00000001408c5d28 in ?? ()
    #14 0x00000001408e5397 in ?? ()
    #15 0x00000001408e546f in ?? ()
    #16 0x00007ffb0aed7034 in KERNEL32!BaseThreadInitThunk () from C:\WINDOWS\System32\kernel32.dll
    #17 0x00007ffb0c0c2651 in ntdll!RtlUserThreadStart () from C:\WINDOWS\SYSTEM32\ntdll.dll
    #18 0x0000000000000000 in ?? ()
    Backtrace stopped: previous frame inner to this frame (corrupt stack?)
    
  • synthv1 not starting in nsm

    synthv1 not starting in nsm

    Kudos for you nsm support!

    synthv1 did not start though:

    [non-session-manager] Sending add for: synthv1 [nsmd] Process has pid: 24569 [nsmd] Launching synthv1 [nsmd] Error starting process: No such file or directory [nsmd] Client synthv1 died unexpectedly. [non-session-manager] Sending resume [nsmd] Process has pid: 24570 [nsmd] Launching synthv1 [nsmd] Error starting process: No such file or directory [nsmd] Client synthv1 died unexpectedly

  • changes made to support simulated linnstrument

    changes made to support simulated linnstrument

    I’m not sure you or others would find a need for this, but I created a patch for your synthv1 to expand pitchbend range from 0 – 100.0 to 0 – 400.0. I needed this range to support the use of a PME midi driving device called sensel.com Morph that is in this case setup as a simulator of a Linnstrument. I could not find any alternative at the time to get around the limited pitchbend range of the synthv1. This added range makes it possible to drag a note (pitchbend) in the same distance across the template as is setup to lift your finger and play that same note. As there are very few PME supported synths presently available on the linux platform to allow PME instruments to play out of the box, I saw your synthv1 as low hanging fruit with a very small change to add your instrument to the list. I’m not sure that this patch change is the final solution but it works for me when I set it to 400. You might note on how the Surge synth is setup that allows a wider range pitchbend that also works with the Sensel Morphs present setup. I’m also not sure if a real Linnstrument would or wouldn’t work in some manner of configuration with the present synthv1 setup as I don’t own one to verify. I also didn’t research to see if the other synths in your collection could also make use of a change like this. In any case I have put the patch on my github account for you and others to see and make use of as you decide. Thanks for the wonderful work you have done. Keep it up, we love you for it.

  • Required and optional dependencies don't provide lv2/lv2plug.in/ns/extensions/ui/ui.h

    Required and optional dependencies don't provide lv2/lv2plug.in/ns/extensions/ui/ui.h

    I have all required and optional dependencies installed but the file lv2/lv2plug.in/ns/extensions/ui/ui.h required by this line https://github.com/rncbc/synthv1/blob/master/CMakeLists.txt#L220 is still not found.

  • A parameter to randomize synth parameter values

    A parameter to randomize synth parameter values

    I propose a parameter that sets the "randomize current parameter values". For example, I would set it to 20% or even more... find an interesting strange pad P, and than change the parameter to 1% and find something that works close to P.

    Also, I propose to remove the warning popup since is not practical, and prevents quickly to make another random request.

  • Proposal for QApplication instance

    Proposal for QApplication instance

    When the code checks for QApplication, also check the arguments in order to see of this instance comes from the host, and not has been created by other Qt plugins. If that plugin (X) that created the QApplication will delete the instance of QApplication when user closes the window for X plugin, all the rest Qt plugins windows opened will crash.

  • pre built lv2

    pre built lv2

    could do a pre built lv2 plugin or do installer for window or mac so us win/mac can users can try your plugins in our daw's that have lv2 without having built them?

Repository created to store a C function library to use in 42 School
Repository created to store a C function library to use in 42 School

Libft of 42. Make with ❤︎ for Luiz Cezario ?? Index What's this Repo? List of Functions Technologies How to Run Find a Bug? Or somenthing need to chan

Aug 19, 2022
this project is a function in c to take the next line of a file or a file descriptor. this is a project of 42 school.
this project is a function in c to take the next line of a file or a file descriptor. this is a project of 42 school.

Get Next Line of 42. Make with ❤︎ for Luiz Cezario ?? Index What's this Repo? List of Archives Technologies How to Run Find a Bug? Or somenthing need

Aug 19, 2022
Wasserstein Inverted Frequency Modulation Synthesizer

Wasserstein Inverted Frequency Modulation Synthesizer 発表資料: https://speakerdeck.com/fadis/wassersteinni-fmyin-yuan 発表動画: https://youtu.be/VF9VX01QYs0

May 25, 2022
Lo-Fi SAMD21 based mini chip tune synthesizer - Seeed Studio - Seeeduino XIAO arduino project
Lo-Fi SAMD21 based mini chip tune synthesizer - Seeed Studio - Seeeduino XIAO arduino project

samd21_mini_synth Lo-Fi SAMD21 based mini chip tune synthesizer Seeed Studio - Seeeduino XIAO arduino project link to the video Description This time

Sep 23, 2022
A CPU implemented in an analog modular synthesizer
 A CPU implemented in an analog modular synthesizer

A CPU implemented in an analog modular synthesizer This runs in the VCV Rack eurorack simulator. I wrote a thread explaining the CPU on twitter and a

Sep 22, 2022
A lightweight additive chiptune synthesizer (LV2 and Unity Plugin)

OvenMit Synthesizer kenakofer's first ever synthesizer! Coming initially out of BMusic's excellent tutoral series for lv2 synthesizers, the developer

Apr 18, 2022
Dexed FM synthesizer similar to DX7 running on a bare metal Raspberry Pi

Dexed is a FM synthesizer closely modeled on the famous DX7 by a well-known Japanese manufacturer. MiniDexed is a port to run it on a bare metal Raspberry Pi (without a Linux kernel or operating system).

Sep 19, 2022
Open-source Qt Quick & c++ wavetable synthesizer
Open-source Qt Quick & c++ wavetable synthesizer

?? OOSC! OOSC is a two-oscillator wavetable driving synthesizer written with Qt, QML and C++. Have some included effects like a Reverb, Flanger, EQ et

Sep 2, 2022
The old Windows NT OpenGL samples/SDK from an MSDN CD.

The OpenGL API is supported on a variety of graphics hardware; the software in this release provides support for graphics hardware including basic emulation on any video adapter that is supported with the operating system, and accelerated graphics hardware that is supported by an OpenGL mini-client driver (MCD) or an OpenGL installable client driver (ICD).

Aug 13, 2022
OffensivePH - use old Process Hacker driver to bypass several user-mode access controls

offensiveph OffensivePH is a post-exploitation tool that utilizes an old Process Hacker driver to bypass several user-mode access controls. Usage Comp

Sep 23, 2022
One of my most recognised, old, products.

System48 This is one of my most well renowned products, it existed between 2016 and 2017 - with about four iterations, each better than the last, this

Jun 20, 2022
My old heavily modified version of bigbase v1, it has an impulse-like scrollbar, ytd header loader, Vector3 fix + gamestate fix and some other misc changes!
My old heavily modified version of bigbase v1, it has an impulse-like scrollbar, ytd header loader, Vector3 fix + gamestate fix and some other misc changes!

Old Bigbase V1 UI This is my old ui for bigbase v1 but i dont need it anymore because the dev of solar mod menu stole it, and the new paragon menu (Fr

Sep 13, 2022
ClickLock which supports old games where the Windows ClickLock fails to work. This is a charity project, designed for people with disabilities.

Mouse ClickLock For Games This small utility works in a similar way as ClickLock available on Windows, but also supports old games where the normal Cl

Jul 31, 2022
old 'cross' project of DooM for various platforms

README - DOOM assembly code Okay, I add the DOS assembly module for the historically inclined here (may rec.games.programmer suffer). If anyone feels

Nov 5, 2021
Just old way to decompile

Decompiler Just old way to decompile What is this? This is a luau decompiler that i wrote in around october 2020 The idea behind it was, Instruction t

Dec 10, 2021
Budgie Screensaver is a fork of old gnome screensaver for purposes of providing an authentication prompt on wake.

budgie-screensaver Budgie Screensaver is a fork of gnome-screensaver intended for use with Budgie Desktop and is similar in purpose to other screensav

Jun 19, 2022
STM32 board to reuse (some) old laptop keyboards

Keystroke32 STM32F103 based board to transform (some) old laptop keyboards into proper USB keyboards. If you like laptop keyboards in general or just

Jan 10, 2022
A rewrite of the old legacy software "depends.exe" in C# for Windows devs to troubleshoot dll load dependencies issues.
A rewrite of the old legacy software

Dependencies - An open-source modern Dependency Walker Download here (If you're running an AV, use this download instead) NB : due to limitations on /

Sep 22, 2022
An old-style web browser stub, comes from Internet Explorer was genocided on Windows.
An old-style web browser stub, comes from Internet Explorer was genocided on Windows.

Outernet Explorer An old-style web browser stub, comes from Internet Explorer was genocided on Windows. Download from: https://github.com/kekyo/Outern

Aug 11, 2022