zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

commit 8c8d9876e3666a817d624804df566b1d6b121055
parent cab6d60d31f85d8529fbf7465cb5f4edb073160a
Author: fundamental <mark.d.mccurry@gmail.com>
Date:   Tue, 15 Nov 2016 20:01:47 -0500

Merge remote-tracking branch 'github/master'

Diffstat:
Msrc/Effects/Distorsion.cpp | 19+++++++++++++++++++
Msrc/Plugin/ZynAddSubFX/CMakeLists.txt | 3+++
Msrc/Tests/SubNoteTest.h | 4+++-
Msrc/UI/NSM.C | 33++++++++++++---------------------
Msrc/UI/NSM.H | 4+++-
Msrc/main.cpp | 3++-
6 files changed, 42 insertions(+), 24 deletions(-)

diff --git a/src/Effects/Distorsion.cpp b/src/Effects/Distorsion.cpp @@ -50,6 +50,25 @@ rtosc::Ports Distorsion::ports = { rEffParTF(Pstereo, 9, rShort("stereo"), "Stereo"), rEffParTF(Pprefiltering, 10, rShort("p.filt"), "Filtering before/after non-linearity"), + {"waveform:", 0, 0, [](const char *, rtosc::RtData &d) + { + Distorsion &dd = *(Distorsion*)d.obj; + float buffer[128]; + rtosc_arg_t args[128]; + char arg_str[128+1] = {0}; + + for(int i=0; i<128; ++i) + buffer[i] = 2*(i/128.0)-1; + + waveShapeSmps(sizeof(buffer), buffer, dd.Ptype + 1, dd.Pdrive); + + for(int i=0; i<128; ++i) { + arg_str[i] = 'f'; + args[i].f = buffer[i]; + } + + d.replyArray(d.loc, arg_str, args); + }}, }; #undef rBegin #undef rEnd diff --git a/src/Plugin/ZynAddSubFX/CMakeLists.txt b/src/Plugin/ZynAddSubFX/CMakeLists.txt @@ -115,6 +115,9 @@ target_link_libraries(ZynAddSubFX_lv2 zynaddsubfx_core ${OS_LIBRARIES} ${LIBLO_L ${PLATFORM_LIBRARIES}) target_link_libraries(ZynAddSubFX_vst zynaddsubfx_core ${OS_LIBRARIES} ${LIBLO_LIBRARIES} ${PLATFORM_LIBRARIES}) +if(ZestGui) + target_link_libraries(ZynAddSubFX_lv2_ui X11 GL) +endif() install(TARGETS ZynAddSubFX_lv2 LIBRARY DESTINATION ${PluginLibDir}/lv2/ZynAddSubFX.lv2/) install(TARGETS ZynAddSubFX_vst LIBRARY DESTINATION ${PluginLibDir}/vst/) diff --git a/src/Tests/SubNoteTest.h b/src/Tests/SubNoteTest.h @@ -33,6 +33,7 @@ class SubNoteTest:public CxxTest::TestSuite { public: + SUBnoteParameters *pars; SUBnote *note; Master *master; AbsTime *time; @@ -77,7 +78,7 @@ class SubNoteTest:public CxxTest::TestSuite SynthParams pars{memory, *controller, *synth, *time, freq, 120, 0, testnote, false}; note = new SUBnote(defaultPreset, pars); - delete defaultPreset; + this->pars = defaultPreset; } void tearDown() { @@ -87,6 +88,7 @@ class SubNoteTest:public CxxTest::TestSuite delete [] outR; delete time; delete synth; + delete pars; } void testDefaults() { diff --git a/src/UI/NSM.C b/src/UI/NSM.C @@ -22,7 +22,7 @@ #include "../Nio/Nio.h" -#ifndef NO_UI +#if defined(FLTK_UI) || defined(NTK_UI) #include <FL/Fl.H> #endif #include <cstdio> @@ -33,7 +33,7 @@ #include <stdlib.h> extern int Pexitprogram; -#ifndef NO_UI +#if defined(FLTK_UI) || defined(NTK_UI) #include "MasterUI.h" extern MasterUI *ui; #endif @@ -41,10 +41,11 @@ extern MasterUI *ui; extern NSM_Client *nsm; extern char *instance_name; -NSM_Client::NSM_Client() +NSM_Client::NSM_Client(MiddleWare *m) + :project_filename(0), + display_name(0), + middleware(m) { - project_filename = 0; - display_name = 0; } int command_open(const char *name, @@ -59,9 +60,7 @@ NSM_Client::command_save(char **out_msg) (void) out_msg; int r = ERR_OK; -#ifndef NO_UI - ui->do_save_master(project_filename); -#endif + middleware->transmitMsg("/save_xmz", "s", project_filename); return r; } @@ -92,18 +91,10 @@ NSM_Client::command_open(const char *name, int r = ERR_OK; -#ifndef NO_UI - if(0 == stat(new_filename, &st)) { - if(ui->do_load_master_unconditional(new_filename, display_name) < 0) { - *out_msg = strdup("Failed to load for unknown reason"); - r = ERR_GENERAL; - - return r; - } - } + if(0 == stat(new_filename, &st)) + middleware->transmitMsg("/load_xmz", "s", new_filename); else - ui->do_new_master_unconditional(); -#endif + middleware->transmitMsg("/reset_master", ""); if(project_filename) free(project_filename); @@ -118,7 +109,7 @@ NSM_Client::command_open(const char *name, return r; } -#ifndef NO_UI +#if defined(FLTK_UI) || defined(NTK_UI) static void save_callback(Fl_Widget *, void *v) { MasterUI *ui = static_cast<MasterUI*>(v); @@ -129,7 +120,7 @@ static void save_callback(Fl_Widget *, void *v) void NSM_Client::command_active(bool active) { -#ifndef NO_UI +#if defined(FLTK_UI) || defined(NTK_UI) if(active) { Fl_Menu_Item *m; //TODO see if there is a cleaner way of doing this without voiding diff --git a/src/UI/NSM.H b/src/UI/NSM.H @@ -21,6 +21,7 @@ #if USE_NSM #include "NSM/Client.H" +#include "../Misc/MiddleWare.h" class NSM_Client:public NSM::Client { @@ -28,8 +29,9 @@ class NSM_Client:public NSM::Client char *project_filename; char *display_name; + MiddleWare *middleware; - NSM_Client(); + NSM_Client(MiddleWare *m); ~NSM_Client() { } protected: diff --git a/src/main.cpp b/src/main.cpp @@ -609,7 +609,7 @@ int wmidi = -1; char *nsm_url = getenv("NSM_URL"); if(nsm_url) { - nsm = new NSM_Client; + nsm = new NSM_Client(middleware); if(!nsm->init(nsm_url)) nsm->announce("ZynAddSubFX", ":switch:", argv[0]); @@ -637,6 +637,7 @@ int wmidi = -1; const char *addr = middleware->getServerAddress(); if(fork() == 0) { execlp("zyn-fusion", "zyn-fusion", addr, "--builtin", "--no-hotload", 0); + execlp("./zyn-fusion", "zyn-fusion", addr, "--builtin", "--no-hotload", 0); err(1,"Failed to launch Zyn-Fusion"); }