Giter Site home page Giter Site logo

jpcima / adlplug Goto Github PK

View Code? Open in Web Editor NEW
412.0 20.0 22.0 12.56 MB

FM Chip Synthesizer — OPL & OPN — VST/LV2/Standalone

License: Boost Software License 1.0

CMake 0.83% C 0.72% C++ 97.01% Objective-C++ 0.16% R 0.02% Makefile 1.24% Shell 0.03%
synthesizer chip midi opl audio adlmidi opl3-emulator real-time-audio jackaudio audio-plugin

adlplug's People

Contributors

bsutherland avatar dvzrv avatar hfiguiere avatar jpcima avatar r-value avatar spotlightkid avatar trebmuh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

adlplug's Issues

crash with Qtractor host

report by @trebmuh and confirmed to happen, needs debugging

When the plugin (or UI?) is switched on and off many times, it can produce a segfault in Qtractor.

X11 BadWindow error

Found error by complete accident: if a dialog is opened and escape is pressed in a very(!) short time frame, the program is going to crash with BadWindow error code.

This happened only under jalv.gtk. It's not reproducible in the standalone program.

The program 'jalv.gtk' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadWindow (invalid Window parameter)'.
  (Details: serial 17213 error_code 3 request_code 15 minor_code 0)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

Add missing controls

Make some parameters controllable in UI which aren't currently.

Global parameters

  • volume model
  • deep tremolo
  • deep vibrato

Please decrease cmake requirement

I was hoping to build the plugins, but can't at the moment as cmake version required is quite high.
Is there a reason for 3.5 specifically?
I often see projects having high versions for no good reason, only that they know will work and it is what they used.

Displaying parameter values

I could be pleasant to have in the UI the current value of the parameter we are editing:

  • either from a pop-up which display the value
  • or from a single window in the UI (updated with the name of the parameter and the current value), like Dexed does in the bottom left corner for instance, or like Helm does in the top left corner.

It's especially useful for comparing the precise values from an other piece of software (for example adlib tracker II), or for better understanding of the instrument we're editing (like for the frequency multiplication)

A few errors/warnings

A few errors/warnings reported by Lintian while building on a Debian Stretch (LZK-2). I didn't investigate these, only reporting these here to share the knowledge.

Note that:

  • "P" means "pedantic"
  • "E" means error
P: adlplug source: source-contains-prebuilt-javascript-object thirdparty/fmt/doc/_static/bootstrap.min.js
N: 
N:    The source tarball contains a prebuilt (minified) JavaScript object.
N:    They are usually left by mistake when generating the tarball by not
N:    cleaning the source directory first. You may want to report this as an
N:    upstream bug, in case there is no sign that this was intended.
N:    
N:    Severity: pedantic, Certainty: possible
N:    
N:    Check: cruft, Type: source
E: adlplug source: source-is-missing thirdparty/fmt/doc/_static/bootstrap.min.js
N: 
N:    The source of the following file is missing. Lintian checked a few
N:    possible paths to find the source, and did not find it.
N:    
N:    Please repack your package to include the source or add it to
N:    "debian/missing-sources" directory.
N:    
N:    If this is a false-positive, please report a bug against Lintian.
N:    
N:    Severity: serious, Certainty: possible
N:    
N:    Check: cruft, Type: source
P: adlplug source: source-contains-prebuilt-binary thirdparty/libADLMIDI/fm_banks/op3_files/2x2patch/bytecmp
N: 
N:    The source tarball contains a prebuilt ELF object. They are usually left
N:    by mistake when generating the tarball by not cleaning the source
N:    directory first. You may want to report this as an upstream bug, in case
N:    there is no sign that this was intended.
N:    
N:    Severity: pedantic, Certainty: certain
N:    
N:    Check: cruft, Type: source
P: adlplug source: source-contains-prebuilt-java-object thirdparty/JUCE/extras/Projucer/Source/BinaryData/gradle/gradle-wrapper.jar
N: 
N:    The source tarball contains a prebuilt Java class file. These are often
N:    included by mistake when developers generate a tarball without cleaning
N:    the source directory first. If there is no sign this was intended,
N:    consider reporting it as an upstream bug.
N:    
N:    Severity: pedantic, Certainty: possible
N:    
N:    Check: cruft, Type: source

Same issue with:

P: adlplug source: source-contains-prebuilt-java-object thirdparty/JUCE/examples/DemoRunner/Builds/Android/gradle/wrapper/gradle-wrapper.jar
P: adlplug source: source-contains-prebuilt-java-object thirdparty/JUCE/extras/AudioPerformanceTest/Builds/Android/gradle/wrapper/gradle-wrapper.jar
P: adlplug source: source-contains-prebuilt-java-object thirdparty/JUCE/extras/AudioPluginHost/Builds/Android/gradle/wrapper/gradle-wrapper.jar
P: adlplug source: source-contains-prebuilt-java-object thirdparty/JUCE/extras/NetworkGraphicsDemo/Builds/Android/gradle/wrapper/gradle-wrapper.jar

Note that this doesn't prevent to technically build and package the software. But this is the proper way of building a proper deb package.

Control for number of 4op channels

When ADLMIDI would load its banks in the ordinary way, an ideal number of 4ops channels would be automatically computed and applied to the 4op masks of every chip.

ADLplug will load its instruments in real time and there will be no such computation.
Instead, a control will define the number of 4op channels. Upon a look at libADMIDI, RT will need to call adl_setNumFourOpsChn and then adl_reset in order to make this change effective. no longer, after Wohlstand told me he has fixed it.

I should take care of limiting this to 1 time per cycle, after an update of instruments.

Many xruns when running as lv2 in Ardour

hello,

when I run ADLplug as standalone, it works fine. However, when I run it from inside Ardour 5.12, there are many Xruns and some audio glitches.

My latency is quite low (2.8 ms), with a higher latency (like 5.8 ms), there are fewer xruns. However, with Dexed, Zynaddsubfx or Helm in Ardour, which are apparently more ressource hungry than ADLplug, I don't have those xruns with the same low latency.

The DSP load is around 40 % with ADLplug (even without playing), while with Helm for example it's around 25%. I'm using the DOSBOX core, with 1 or 2% CPU, so it's not ressource hungry.

Distribution: Linux Mint 19 (latest), with 4.15.0-20-lowlatency kernel, ADL plug 1 beta 2

Error of saving setup while using multiple channels

He has a problem:
Can't save settings when all channels are playing.

This report I have got from one guy whom I have showcased the ADLPlug thing and he have reported me the issue with it.

He have used Win32 VST2 assembly.

P.S. Missing MinGW dlls! (I gave him mine)

The assembly alpha in the releases:
OL3 ADPlug VST.zip

AZERTY keyboard

On request of @trebmuh

Allow setting up the MIDI keyboard to respond to key presses using the french keymap.

Bank and program names

Add functionality to the bank manager to store the names of banks and programs.
It permits to display the custom names and to avoid losing them on file saved.

auto-connexion jackd

Comme avec adljack, ça serait super de pouvoir autoconnecter l'application autonome-jack {ADL/OPN}plug aux sorties system du graph de jackd avec un fanion -a en CLI.

Lack of automatable parameters renders VSTi useless to blind patch creator

Hello. I am on Windows using the x64 VST3i from within reaper. The way that I control the few synthesizers that I can use without sight are through the parameters list, what VSTs call the automation parameters. I am missing many critical controls there, unless they are mapped to MIDI ccs which I see parameters for, why? I first would like to give my thanks for the parameters that do exist in the list having their sliders properly labeled, things like the emulation core select and such give me meaningful values instead of just numbers. However I cannot control the ADSR, waveform, panning, and basically everything but the carrier and modulator levels. Like any VST the UI is completely inaccessible to a screen reader and there's really nothing you can do about that, which is why I'm requesting automation so I can manipulate the patches. I would really like to harness the unique sound of the OPL due to its waveforms. Can anything be done here? I'd think the algorithm, waveforms, ADSR, etc could be exposed on each part like you expose the levels now, so when I look at them in the list I have all the controls for part 1, then all the controls for part 2, etc.

request: Plugin in AU format

Hey @jpcima I'm so glad I found this! I was an occasional contributor to JUCEOPLVSTi and I'm so glad to see an OPL3 plugin that's available on Mac natively! I'm playing around with the standalone version now but I'm a Logic user and I'd love to see AU plugin formats supported.

Let me know if that's possible.

Raise the default volume

Feature request:

  • Have a higher default volume level.

Other request by me:

  • Add the global volume control.

Make the saved wopl bank 1:1 at least

When saving, ensure at least to have 1 melodic and 1 percussion bank, even if empty.
Without such a condition realized, it's not possible to reload the saved bank.

Propose a change into wopl_file such that saving will fail if it's not at least 1:1.

related: #36

Questions of keyboard layouts and languages

I haven't had a chance to use the new version yet, so excuse if this is a non issue:

When translations are added, will the keyboard layout be configurable independently of the language? The reason mainly I ask is because French Canadian keyboards are QWERTY layout. A very select few would use AZERTY. If adlplug is to get that info from the OS then, I suppose this solves itself?

Thanks!

Ability to work with single instruments

Feature requests to enable work with a single instrument instead of whole banks.

  • import/export single instrument formats
  • start designing own instruments from empty banks

Percussion mode

It would be beneficial to have a percussion "mode" on Part 10 to use the entire drum kit on the keyboard instead of having to select individual percussion instruments. If it is possible, it's not at all obvious how to enable it...

Hardware support

Is there any plan to support real OPL3 hardware? I was thinking about Freq Monster 801 (http://fm801.kewl.org/app/screenshots/) that can switch between engines (emulator or hardware), but yours looks modern, and already includes very handy instrument banks :)

Thanks! I'm testing it and works great

Various UI improvements

  • I want ability to browse the programs selection, a 2-level popup menu, by usage of the mouse wheel over the selector

  • Make the tuning slider have a mouse wheel increment equal to 1 semitone

  • Redesign load/save buttons as monochrome flat, and which display a reaction when is hovered/clicked. Popping up the linux file dialog has an important delay, and it's not visually indicated that the click has been well received.

  • Better knob component logic

  • More fitting design, color scheme, icons

  • make the ADSR controls inverted to represent time values

  • I think I can use CallOutBox from Juce instead of tooltip hacking for help boxes.

Questions de compilation

Salut @jpcima , j'ai enfin trouvé un peu de temps pour tester un empaquetage de ce logiciel.

Pour info, la version autonome jack fonctionne, la version LV2 également (testée dans jalv.select), mais la version VST fait planter Qtractor 0.9.1 .

Durant l'empaquetage, j'ai ceci à l'étape de configuration :

==== libADLMIDI options ====
libADLMIDI_STATIC        = ON
libADLMIDI_SHARED        = OFF
WITH_UNIT_TESTS          = OFF
WITH_CPP_EXTRAS          = OFF
WITH_MIDI_SEQUENCER      = OFF
WITH_EMBEDDED_BANKS      = ON
WITH_HQ_RESAMPLER        = OFF
WITH_MUS_SUPPORT         = OFF
WITH_XMI_SUPPORT         = OFF
USE_DOSBOX_EMULATOR      = ON
USE_NUKED_EMULATOR       = ON
===== Utils and extras =====
WITH_GENADLDATA          = OFF
WITH_GENADLDATA_COMMENTS = OFF
WITH_MIDIPLAY            = OFF
MIDIPLAY_WAVE_ONLY       = OFF
WITH_ADLMIDI2            = OFF
WITH_VLC_PLUGIN          = OFF
WITH_OLD_UTILS           = OFF
WITH_XMI2MID             = OFF
EXAMPLE_SDL2_AUDIO       = OFF
Build VST2: ON
Build VST3: OFF
Build LV2: ON
Build Standalone: ON
Build Jack: ON

Comme tu le vois, il y a pas mal de trucs déclarés "OFF" et je me demande si certaines de ces fonctionnalités sont activables et souhaitables. Tu pourrais m'en parler stp ?

Merci d'avance, et merci pour ce logiciel !

Proper way to get and load instruments from DOSBox?

Hi. What is the most straightforward way to grab instruments from dosbox game and load one into ADLplug instance?

With JuceOPLVSTi its the following:

  1. Use DOSBox 0.72 to grab OPL data into DROv1 file
  2. Use dro2midi to get SBI instruments from DROv1 file
  3. Load desired instrument into JuceOPLVSTi instance

What would you recommend to accomplish this task when using ADLplug? With current dro2midi solution the drawback is that DROv2 format is not supported, so one needs to use an archived version of dosbox.

English language manual + Troubleshooting/Frequent questions

Translate the manual.
First, probably it is best to improve the existing manual as needed to avoid double-work later.

  • Add the section: Troubleshooting/Frequent questions

There go the questions about usage of ADLplug and problems encountered.

  • why does it sound wrong/no sound?
  • why doesn't it play the program indicated?
  • how to use the drums?
  • how to load instruments from the internet?
  • [...]

"fatal: reference is not a tree" when cloning with submodules

I'm trying to clone this and I can't get off the ground due to the submodules not being in sync with the project. I've only seen errors like this once or twice in my life and it's usually due to something in the submodule commits not being pushed.

Problem of state saving and loading

OPNMIDI-bug0111.zip

Vladimir Kuznetsov: > Запускаешь савикоком... далее , сохраняешь состояние в default... закрываешь савик и запускаешь его снова.
Теперь включаешь игратсья что либо через этот савик и при этом в процессе игры меняешь банк на gs-by-papiezak-and-sneakernets.wopn и потом на xg.wopn , посоле этого пробуешь открыть сохранённый default.wopn

Launch by Savi, then, save current state into "default"... Close Savi and start it again.
Now, start playing anything this SAVI, and then, doing a bank change into "gs-by...." on the fly. Then into "xg.wopn", and after, trying to restore "default.wopn". And you'll hear what will happen with the sound.

Vladimir Kuznetsov: > Если ты откроешь савиком Opnmidi.fxb вместо default.wopn то всё восстановится как надо

However, when you'll open by SAVI the "Opnmidi.fxb" instead of "default.wopn", everything will be restored as needed.

Request: YM2151 (OPM)

While OPN2 is nice, it lacks some features that the original OPM had:

  • Noise
  • Coarse detune (Detune 2)
  • Multiple LFO waveforms, higher fidelity LFO speed etc.
  • Amplitude/Pitch modulation depth

So some sounds on arcade games, or FB-01/DX21 sounds do not translate 1:1. So it would be great if those features were also supported. Perhaps as an OPMMIDI version I suppose. Otherwise great software!

Memory error on Windows VST

There is a report of a Windows failure on SAVIHost software, version 1.42

It happens as the chip count is raised (example 8) and there is an attempt to save the plugin's state.
The format used was VST2.

capture_1534886884

SysEx messages

Enable processing of system exclusive messages, with libADLMIDI having the support implemented.
But then the plugin should also handle the sysex messages for it own tracking.
For example, there are the various reset messages, the bank selection and the percussion channel layout, which is information of interest which modifies the behavior of the plugin editor.

Support install files in lib64

Hello,

Under fedora, lib files are installed in lib64 directory.
This behavior should be managed be the CMakeLists.txt file.

Best regards,

YC

Allow separated building of both ADLMIDI and OPNMIDI

Hello,

I have packaged ADLplug for openSUSE but the current build system makes it pretty hard to do a clean build and install.

The ideal setup would be this:

  • -DADLplug_CHIP=OPL3/OPN2 in Cmake is replaced with two flags, -DADL_OPL3=ON and -DADL_OPN2=ON which are not mutually exclusive (i.e. both can be enabled, -DADL_OPL3=ON is enabled by default)
  • Instead of /usr/bin/ADLplug, /usr/lib/lv2/ADLplug.lv2 and /usr/lib/vst/ADLplug.so for both OPL3 and OPN2, files with separated filenames are generated.

For OPL3: /usr/bin/ADLmidi, /usr/lib/lv2/ADLmidi.lv2 (with separated manifest) and /usr/lib/vst/ADLmidi.so
For OPN2: /usr/bin/OPNmidi, /usr/lib/lv2/OPNmidi.lv2 (with separated manifest) and /usr/lib/vst/OPNmidi.so

This would help us packagers a lot (easy build without any conflicts, both can be installed at the same time), which in turn would help ADLplug get into more distro repos.

KSL control not linear

Adjust the KSL control such that it has steps 0-2-1-3, not 0-1-2-3.
YMF262 maps to values specified in a mixed order.

Delay measurement

Until I implement a simple measurement of key-on/key-off, I will reuse the existing computation of the bank editor.

When an instrument will receive a parameter change which will have impact on its envelope, I will have a spawned thread which will perform the parallel computation. Until the thread will communicate its result back to RT, a default value is going to be assigned for on and off delays.

To make this computation faster when a lot of small changes are made within small timeframes:

  • cache
  • cancellation

Crash when loading in carla

Version is LV2 adlplug-git-v1.0.0.beta.2.r12.6a23226-1 (Arch AUR Build from just now)

Loading in carla-jack-multi the first time works, it is playable. Save, quit carla, load again in carla-jack-multi and it crashes on init.

Attached is the carla project file

adlplugcrash.tar.gz

And here is my coredump:

           PID: 17368 (carla-jack-mult)
           UID: 1000 (nils)
           GID: 100 (users)
        Signal: 11 (SEGV)
     Timestamp: Fri 2018-09-28 21:09:35 CEST (1min 33s ago)
  Command Line: /usr/bin/python3 /usr/share/carla/carla-jack-multi --with-appname=/usr/bin/carla-jack-multi --with-libprefix=/usr adlplug.carxp
    Executable: /usr/bin/python3.7
 Control Group: /user.slice/user-1000.slice/session-1.scope
          Unit: session-1.scope
         Slice: user-1000.slice
       Session: 1
     Owner UID: 1000 (nils)
       Boot ID: 9c377b72deb24c2685904b5531de586b
    Machine ID: 2c70fcfc28cd474b885f71472e6fbb54
      Hostname: fyps
       Storage: /var/lib/systemd/coredump/core.carla-jack-mult.1000.9c377b72deb24c2685904b5531de586b.17368.1538161775000000.lz4
       Message: Process 17368 (carla-jack-mult) of user 1000 dumped core.
                
                Stack trace of thread 17368:
                #0  0x00007fa9e56e7155 _ZN12Bank_Manager11clear_banksEb (ADLplug.so)
                #1  0x00007fa9e56e691a _ZN21AdlplugAudioProcessor19setStateInformationEPKvi (ADLplug.so)
                #2  0x00007fa9e56dd30c _ZN14JuceLv2Wrapper15lv2RestoreStateEPFPKvPvjPmPjS4_ES2_j (ADLplug.so)
                #3  0x00007faa4d4de0cf n/a (libcarla_standalone2.so)
                #4  0x00007faa4d4a1036 _ZN12CarlaBackend11CarlaPlugin13loadStateSaveERKNS_14CarlaStateSaveE (libcarla_standalone2.so)
                #5  0x00007faa4d461d71 _ZN12CarlaBackend11CarlaEngine19loadProjectInternalERN5water11XmlDocumentE (libcarla_standalone2.so)
                #6  0x00007faa4d4641d0 _ZN12CarlaBackend11CarlaEngine11loadProjectEPKc (libcarla_standalone2.so)
                #7  0x00007faa518fe1c8 ffi_call_unix64 (libffi.so.6)
                #8  0x00007faa518fdc2a ffi_call (libffi.so.6)
                #9  0x00007faa57a4a6b5 _ctypes_callproc (_ctypes.cpython-37m-x86_64-linux-gnu.so)
                #10 0x00007faa57a4b040 n/a (_ctypes.cpython-37m-x86_64-linux-gnu.so)
                #11 0x00007faa5e9d185c _PyObject_FastCallKeywords (libpython3.7m.so.1.0)
                #12 0x00007faa5ea1dc97 _PyEval_EvalFrameDefault (libpython3.7m.so.1.0)
                #13 0x00007faa5e9a52fb _PyFunction_FastCallKeywords (libpython3.7m.so.1.0)
                #14 0x00007faa5ea1d291 _PyEval_EvalFrameDefault (libpython3.7m.so.1.0)
                #15 0x00007faa5e9a52fb _PyFunction_FastCallKeywords (libpython3.7m.so.1.0)
                #16 0x00007faa5ea1d291 _PyEval_EvalFrameDefault (libpython3.7m.so.1.0)
                #17 0x00007faa5e95ef3b _PyFunction_FastCallDict (libpython3.7m.so.1.0)
                #18 0x00007faa5e96ddd8 _PyObject_Call_Prepend (libpython3.7m.so.1.0)
                #19 0x00007faa5e95f66b PyObject_Call (libpython3.7m.so.1.0)
                #20 0x00007faa5da6dda1 n/a (QtCore.so)
                #21 0x00007faa5da6e291 n/a (QtCore.so)
                #22 0x00007faa5da6e42d n/a (QtCore.so)
                #23 0x00007faa5da70e15 n/a (QtCore.so)
                #24 0x00007faa5da70f23 n/a (QtCore.so)
                #25 0x00007faa5d60bb4d _ZN11QMetaObject8activateEP7QObjectiiPPv (libQt5Core.so.5)
                #26 0x00007faa5d617ccc n/a (libQt5Core.so.5)
                #27 0x00007faa5d60c30b _ZN7QObject5eventEP6QEvent (libQt5Core.so.5)
                #28 0x00007faa57f2ee14 _ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent (libQt5Widgets.so.5)
                #29 0x00007faa57f366e1 _ZN12QApplication6notifyEP7QObjectP6QEvent (libQt5Widgets.so.5)
                #30 0x00007faa585d918f n/a (QtWidgets.so)
                #31 0x00007faa5d5e1c39 _ZN16QCoreApplication15notifyInternal2EP7QObjectP6QEvent (libQt5Core.so.5)
                #32 0x00007faa5d63439a _ZN14QTimerInfoList14activateTimersEv (libQt5Core.so.5)
                #33 0x00007faa5d634c22 n/a (libQt5Core.so.5)
                #34 0x00007faa5cc033cf g_main_context_dispatch (libglib-2.0.so.0)
                #35 0x00007faa5cc04f89 n/a (libglib-2.0.so.0)
                #36 0x00007faa5cc04fce g_main_context_iteration (libglib-2.0.so.0)
                #37 0x00007faa5d634fc9 _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt5Core.so.5)
                #38 0x00007faa50c5fe12 n/a (libQt5XcbQpa.so.5)
                #39 0x00007faa5d5e08cc _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt5Core.so.5)
                #40 0x00007faa5d5e8bc6 _ZN16QCoreApplication4execEv (libQt5Core.so.5)
                #41 0x00007faa585d7c1d n/a (QtWidgets.so)
                #42 0x00007faa5e9a5a88 _PyMethodDef_RawFastCallKeywords (libpython3.7m.so.1.0)
                #43 0x00007faa5e9a5d21 _PyCFunction_FastCallKeywords (libpython3.7m.so.1.0)
                #44 0x00007faa5ea1d89c _PyEval_EvalFrameDefault (libpython3.7m.so.1.0)
                #45 0x00007faa5e9a52fb _PyFunction_FastCallKeywords (libpython3.7m.so.1.0)
                #46 0x00007faa5ea18b92 _PyEval_EvalFrameDefault (libpython3.7m.so.1.0)
                #47 0x00007faa5e95dee9 _PyEval_EvalCodeWithName (libpython3.7m.so.1.0)
                #48 0x00007faa5e95ede4 PyEval_EvalCodeEx (libpython3.7m.so.1.0)
                #49 0x00007faa5e95ee0c PyEval_EvalCode (libpython3.7m.so.1.0)
                #50 0x00007faa5ea8a8b4 n/a (libpython3.7m.so.1.0)
                #51 0x00007faa5ea8c4be PyRun_FileExFlags (libpython3.7m.so.1.0)
                #52 0x00007faa5ea8d745 PyRun_SimpleFileExFlags (libpython3.7m.so.1.0)
                #53 0x00007faa5ea8f337 n/a (libpython3.7m.so.1.0)
                #54 0x00007faa5ea8f810 _Py_UnixMain (libpython3.7m.so.1.0)
                #55 0x00007faa5ebf4223 __libc_start_main (libc.so.6)
                #56 0x0000557a8476d05e _start (python3.7)
                
                Stack trace of thread 17382:
                #0  0x00007faa5eda5afc pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007faa3a53be7c n/a (radeonsi_dri.so)
                #2  0x00007faa3a53bbb8 n/a (radeonsi_dri.so)
                #3  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #4  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17392:
                #0  0x00007faa5ec98638 __nanosleep (libc.so.6)
                #1  0x00007faa5ecc3c28 usleep (libc.so.6)
                #2  0x00007faa4d47c0da n/a (libcarla_standalone2.so)
                #3  0x00007faa4d44b146 n/a (libcarla_standalone2.so)
                #4  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #5  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17385:
                #0  0x00007faa5eda5afc pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007faa3a53be7c n/a (radeonsi_dri.so)
                #2  0x00007faa3a53bbb8 n/a (radeonsi_dri.so)
                #3  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #4  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17372:
                #0  0x00007faa5ecc0bb1 __poll (libc.so.6)
                #1  0x00007faa5902c180 n/a (libxcb.so.1)
                #2  0x00007faa5902de4b xcb_wait_for_event (libxcb.so.1)
                #3  0x00007faa50bc9c5a n/a (libQt5XcbQpa.so.5)
                #4  0x00007faa5d433f65 n/a (libQt5Core.so.5)
                #5  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #6  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17380:
                #0  0x00007faa5eda5afc pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007faa3a53be7c n/a (radeonsi_dri.so)
                #2  0x00007faa3a53bbb8 n/a (radeonsi_dri.so)
                #3  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #4  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17386:
                #0  0x00007faa5eda5afc pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007faa3a53be7c n/a (radeonsi_dri.so)
                #2  0x00007faa3a53bbb8 n/a (radeonsi_dri.so)
                #3  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #4  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17393:
                #0  0x00007faa5ecc640d syscall (libc.so.6)
                #1  0x00007faa42393b85 n/a (libjack.so.0)
                #2  0x00007faa42374b43 n/a (libjack.so.0)
                #3  0x00007faa42379b66 n/a (libjack.so.0)
                #4  0x00007faa42372dfc n/a (libjack.so.0)
                #5  0x00007faa42372cc0 n/a (libjack.so.0)
                #6  0x00007faa42372c8a n/a (libjack.so.0)
                #7  0x00007faa423704db n/a (libjack.so.0)
                #8  0x00007faa42391072 n/a (libjack.so.0)
                #9  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #10 0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17376:
                #0  0x00007faa5eda5afc pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007faa3a53be7c n/a (radeonsi_dri.so)
                #2  0x00007faa3a53bbb8 n/a (radeonsi_dri.so)
                #3  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #4  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17379:
                #0  0x00007faa5eda5afc pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007faa3a53be7c n/a (radeonsi_dri.so)
                #2  0x00007faa3a53bbb8 n/a (radeonsi_dri.so)
                #3  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #4  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17373:
                #0  0x00007faa5ecc0bb1 __poll (libc.so.6)
                #1  0x00007faa5cc04ee0 n/a (libglib-2.0.so.0)
                #2  0x00007faa5cc04fce g_main_context_iteration (libglib-2.0.so.0)
                #3  0x00007faa5d634fc9 _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt5Core.so.5)
                #4  0x00007faa5d5e08cc _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt5Core.so.5)
                #5  0x00007faa5d429eb9 _ZN7QThread4execEv (libQt5Core.so.5)
                #6  0x00007faa56fb4ba6 n/a (libQt5DBus.so.5)
                #7  0x00007faa5d433f65 n/a (libQt5Core.so.5)
                #8  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #9  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17374:
                #0  0x00007faa5eda5afc pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007faa5d43471c _ZN14QWaitCondition4waitEP6QMutexm (libQt5Core.so.5)
                #2  0x00007faa5814d2f6 n/a (libQt5Widgets.so.5)
                #3  0x00007faa5d433f65 n/a (libQt5Core.so.5)
                #4  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #5  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17397:
                #0  0x00007faa5ecc0bb1 __poll (libc.so.6)
                #1  0x00007fa9e58eee7e _ZN4juce20InternalMessageQueue15sleepUntilEventEi (ADLplug.so)
                #2  0x00007fa9e56df547 _ZN19SharedMessageThread3runEv (ADLplug.so)
                #3  0x00007fa9e59226d0 _ZN4juce6Thread16threadEntryPointEv (ADLplug.so)
                #4  0x00007fa9e5922809 _ZN4juce21juce_threadEntryPointEPv (ADLplug.so)
                #5  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #6  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17396:
                #0  0x00007faa5eda9184 read (libpthread.so.0)
                #1  0x00007faa42392de0 n/a (libjack.so.0)
                #2  0x00007faa42396fd9 n/a (libjack.so.0)
                #3  0x00007faa42396d02 n/a (libjack.so.0)
                #4  0x00007faa42391072 n/a (libjack.so.0)
                #5  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #6  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17377:
                #0  0x00007faa5eda5afc pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007faa3a53be7c n/a (radeonsi_dri.so)
                #2  0x00007faa3a53bbb8 n/a (radeonsi_dri.so)
                #3  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #4  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17383:
                #0  0x00007faa5eda5afc pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007faa3a53be7c n/a (radeonsi_dri.so)
                #2  0x00007faa3a53bbb8 n/a (radeonsi_dri.so)
                #3  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #4  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17378:
                #0  0x00007faa5eda5afc pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007faa3a53be7c n/a (radeonsi_dri.so)
                #2  0x00007faa3a53bbb8 n/a (radeonsi_dri.so)
                #3  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #4  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17394:
                #0  0x00007faa5ec98638 __nanosleep (libc.so.6)
                #1  0x00007faa5ecc3c28 usleep (libc.so.6)
                #2  0x00007faa4d4876a2 n/a (libcarla_standalone2.so)
                #3  0x00007faa4d44b146 n/a (libcarla_standalone2.so)
                #4  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #5  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17384:
                #0  0x00007faa5eda5afc pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007faa3a53be7c n/a (radeonsi_dri.so)
                #2  0x00007faa3a53bbb8 n/a (radeonsi_dri.so)
                #3  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #4  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17375:
                #0  0x00007faa5eda5afc pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007faa3a53be7c n/a (radeonsi_dri.so)
                #2  0x00007faa3a53bbb8 n/a (radeonsi_dri.so)
                #3  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #4  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17391:
                #0  0x00007faa5eda9184 read (libpthread.so.0)
                #1  0x00007faa42392de0 n/a (libjack.so.0)
                #2  0x00007faa42396fd9 n/a (libjack.so.0)
                #3  0x00007faa42396d02 n/a (libjack.so.0)
                #4  0x00007faa42391072 n/a (libjack.so.0)
                #5  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #6  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17381:
                #0  0x00007faa5eda5afc pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007faa3a53be7c n/a (radeonsi_dri.so)
                #2  0x00007faa3a53bbb8 n/a (radeonsi_dri.so)
                #3  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #4  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17389:
                #0  0x00007faa5eccbd77 epoll_wait (libc.so.6)
                #1  0x00007faa4d5766dc n/a (libcarla_standalone2.so)
                #2  0x00007faa4d576b7f n/a (libcarla_standalone2.so)
                #3  0x00007faa4d578adc _ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJZN7ableton9platforms4asio7ContextINS4_5posix13ScanIpIfAddrsENS3_4util7NullLogEEC4INS3_4link10ControllerISt8functionIFvmEESF_IFvNSD_5TempoEEENS4_5linux5ClockILi1EEESB_E23UdpSendExceptionHandlerEEET_EUlRN4asio10io_contextESP_E_St17reference_wrapperISS_ESP_EEEEE6_M_runEv (libcarla_standalone2.so)
                #4  0x00007faa5e0dc063 execute_native_thread_routine (libstdc++.so.6)
                #5  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #6  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17390:
                #0  0x00007faa5eda5afc pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007faa42391d34 n/a (libjack.so.0)
                #2  0x00007faa4238af09 n/a (libjack.so.0)
                #3  0x00007faa42391072 n/a (libjack.so.0)
                #4  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #5  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17388:
                #0  0x00007faa5eda5e5b pthread_cond_timedwait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007faa4d5707ab _ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJZN7ableton9platforms26LockFreeCallbackDispatcherISt8functionIFvvEENSt6chrono8durationIlSt5ratioILl1ELl1000EEEEEC4ES8_SD_EUlvE_EEEEE6_M_runEv (libcarla_standalone2.so)
                #2  0x00007faa5e0dc063 execute_native_thread_routine (libstdc++.so.6)
                #3  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #4  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17387:
                #0  0x00007faa5eccbd77 epoll_wait (libc.so.6)
                #1  0x00007faa4d5766dc n/a (libcarla_standalone2.so)
                #2  0x00007faa4d576b7f n/a (libcarla_standalone2.so)
                #3  0x00007faa4d576f60 _ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJZN7ableton9platforms4asio7ContextINS4_5posix13ScanIpIfAddrsENS3_4util7NullLogEEC4INSB_14DefaultHandlerEEET_EUlRN4asio10io_contextESD_E_St17reference_wrapperISG_ESD_EEEEE6_M_runEv (libcarla_standalone2.so)
                #4  0x00007faa5e0dc063 execute_native_thread_routine (libstdc++.so.6)
                #5  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #6  0x00007faa5eccba43 __clone (libc.so.6)
                
                Stack trace of thread 17395:
                #0  0x00007faa5ec98638 __nanosleep (libc.so.6)
                #1  0x00007faa5ecc3c28 usleep (libc.so.6)
                #2  0x00007faa4d44c81a n/a (libcarla_standalone2.so)
                #3  0x00007faa4d44b146 n/a (libcarla_standalone2.so)
                #4  0x00007faa5ed9fa9d start_thread (libpthread.so.0)
                #5  0x00007faa5eccba43 __clone (libc.so.6)

GNU gdb (GDB) 8.2
Copyright (C) 2018 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-pc-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 /usr/bin/python3.7...(no debugging symbols found)...done.

warning: core file may not match specified executable file.
[New LWP 17368]
[New LWP 17382]
[New LWP 17392]
[New LWP 17385]
[New LWP 17372]
[New LWP 17380]
[New LWP 17386]
[New LWP 17393]
[New LWP 17376]
[New LWP 17379]
[New LWP 17373]
[New LWP 17374]
[New LWP 17397]
[New LWP 17396]
[New LWP 17377]
[New LWP 17383]
[New LWP 17378]
[New LWP 17394]
[New LWP 17384]
[New LWP 17375]
[New LWP 17391]
[New LWP 17381]
[New LWP 17389]
[New LWP 17390]
[New LWP 17388]
[New LWP 17387]
[New LWP 17395]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Core was generated by `/usr/bin/python3 /usr/share/carla/carla-jack-multi --with-appname=/usr/bin/carl'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007fa9e56e7155 in Bank_Manager::clear_banks (this=this@entry=0x0, notify=notify@entry=false)
    at /usr/src/debug/ADLplug/sources/bank_manager.cc:30
30	/usr/src/debug/ADLplug/sources/bank_manager.cc: No such file or directory.
[Current thread is 1 (Thread 0x7faa5ee07600 (LWP 17368))]



Upgrade 4ops automatic channels to the new libADLMIDI usage

In next ADLMIDI versions, setting for ops chn at -1 will mean the setup always recalculates on update.
This breaks with previous behavior. To preserve, this is the method to do:

  • set num 4ops at -1 (auto) like usual
  • obtain the actual 4ops by adl_getNumFourOpsChnObtained
  • set num 4ops to that number, so they won't remain auto after that

Crash occured while running as standalone Jack (std::out_of_range)

0  0x00007f1f2f30df25 in raise () from /usr/lib/libc.so.6
#1  0x00007f1f2f2f7897 in abort () from /usr/lib/libc.so.6
#2  0x00007f1f2f69181d in __gnu_cxx::__verbose_terminate_handler ()
    at /build/gcc/src/gcc/libstdc++-v3/libsupc++/vterminate.cc:95
#3  0x00007f1f2f69e4da in __cxxabiv1::__terminate (handler=<optimized out>)
    at /build/gcc/src/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:47
#4  0x00007f1f2f69e537 in std::terminate () at /build/gcc/src/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:57
#5  0x00007f1f2f69e78d in __cxxabiv1::__cxa_throw (obj=obj@entry=0x7f1f14000be0, 
    tinfo=0x7f1f2f7d7428 <typeinfo for std::out_of_range>, dest=0x7f1f2f6b49a0 <std::out_of_range::~out_of_range()>)
    at /build/gcc/src/gcc/libstdc++-v3/libsupc++/eh_throw.cc:95
#6  0x00007f1f2f69442f in std::__throw_out_of_range_fmt (__fmt=<optimized out>)
    at /build/gcc/src/gcc/libstdc++-v3/src/c++11/functexcept.cc:82
#7  0x0000559a1bf3a014 in std::bitset<128ul>::_M_check (__position=0, this=<optimized out>, __s=<optimized out>)
    at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/9.1.0/../../../../include/c++/9.1.0/bitset:773
#8  std::bitset<128ul>::test (__position=0, this=<optimized out>)
    at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/9.1.0/../../../../include/c++/9.1.0/bitset:1323
#9  counting_bitset<128ul>::set (pos=0, this=<optimized out>, value=<optimized out>)
    at /home/jpc/documents/projects/ADLplug/sources/utility/counting_bitset.tcc:66
#10 Bank_Manager::load_program (this=0x559a1c99e440, id=..., program=254, ins=..., flags=7)
    at /home/jpc/documents/projects/ADLplug/sources/bank_manager.cc:197
#11 0x0000559a1bf362ee in AdlplugAudioProcessor::process_parameter_changes (this=0x559a1c69e280)
    at /home/jpc/documents/projects/ADLplug/sources/plugin_processor.cc:418
#12 0x0000559a1bf35c2a in AdlplugAudioProcessor::process (this=0x559a1c69e280, outputs=<optimized out>, nframes=256, 
    midi=...) at /home/jpc/documents/projects/ADLplug/sources/plugin_processor.cc:309
#13 0x0000559a1bf2f8b7 in Application_Jack::process (nframes=256, user_data=0x559a1c6839a0)
    at /home/jpc/documents/projects/ADLplug/sources/jack_main.cc:276
#14 0x00007f1f2fb632aa in ?? () from /usr/lib/libjack.so.0
#15 0x00007f1f2fb62a08 in ?? () from /usr/lib/libjack.so.0
#16 0x00007f1f2fb7bb3d in ?? () from /usr/lib/libjack.so.0
#17 0x00007f1f2fb224cf in start_thread () from /usr/lib/libpthread.so.0
#18 0x00007f1f2f3d12d3 in clone () from /usr/lib/libc.so.6

Saving current bank to WOPL

Implement the functionality of the save button which does currently nothing.
It must be an easy job now the editor keeps the local copy of banks, but it's a good idea to take care of #7 also.

  • saving
  • keeping bank names
  • global options: tremolo, vibrato, volume model

Dynamic measurement thread issue

The InitTables method of Dosbox to initialize global data has a defect when using the emulator on multiple threads.

Description of the problem:

  • have 2 threads doing Init() each around the same time
  • T1 has entered InitTables(), has set doneTables = true
  • T2 takes over, InitTables() skips because of doneTables flag
  • T2 generates bad audio because tables are not filled

Also, there must be a synchronization to ensure correct sequencing of read and write.
Mutex will be fine.

(EDIT I don't use several threads in the worker for measuring so it's not affected; but needed for libADLMIDI's genadldata and I'll copy the changes here)

Can't checkout JUCE thirdparty

Hello,,

I try to clone the master branch and I meet a problem:

$ git clone --recursive https://github.com/jpcima/ADLplug.git
Clonage dans 'ADLplug'...
remote: Counting objects: 3556, done.
remote: Compressing objects: 100% (412/412), done.
remote: Total 3556 (delta 392), reused 527 (delta 253), pack-reused 2850
Réception d'objets: 100% (3556/3556), 7.09 MiB | 406.00 KiB/s, fait.
Résolution des deltas: 100% (2334/2334), fait.
Sous-module 'thirdparty/JUCE' (https://github.com/jpcima/JUCE.git) enregistré pour le chemin 'thirdparty/JUCE'
Sous-module 'thirdparty/fmt' (https://github.com/fmtlib/fmt.git) enregistré pour le chemin 'thirdparty/fmt'
Sous-module 'thirdparty/libADLMIDI' (https://github.com/Wohlstand/libADLMIDI.git) enregistré pour le chemin 'thirdparty/libADLMIDI'
Sous-module 'thirdparty/libOPNMIDI' (https://github.com/Wohlstand/libOPNMIDI.git) enregistré pour le chemin 'thirdparty/libOPNMIDI'
Clonage dans '/home/collette/repositories/ADLplug/thirdparty/JUCE'...
remote: Counting objects: 2665, done.        
remote: Compressing objects: 100% (2371/2371), done.        
remote: Total 2665 (delta 525), reused 826 (delta 227), pack-reused 0        
Réception d'objets: 100% (2665/2665), 8.53 MiB | 413.00 KiB/s, fait.
Résolution des deltas: 100% (525/525), fait.
Clonage dans '/home/collette/repositories/ADLplug/thirdparty/fmt'...
remote: Counting objects: 14285, done.        
remote: Compressing objects: 100% (42/42), done.        
remote: Total 14285 (delta 42), reused 63 (delta 37), pack-reused 14198        
Réception d'objets: 100% (14285/14285), 6.66 MiB | 434.00 KiB/s, fait.
Résolution des deltas: 100% (9785/9785), fait.
Clonage dans '/home/collette/repositories/ADLplug/thirdparty/libADLMIDI'...
remote: Counting objects: 4548, done.        
remote: Compressing objects: 100% (77/77), done.        
remote: Total 4548 (delta 65), reused 89 (delta 51), pack-reused 4420        
Réception d'objets: 100% (4548/4548), 15.63 MiB | 431.00 KiB/s, fait.
Résolution des deltas: 100% (3238/3238), fait.
Clonage dans '/home/collette/repositories/ADLplug/thirdparty/libOPNMIDI'...
remote: Counting objects: 2043, done.        
remote: Compressing objects: 100% (66/66), done.        
remote: Total 2043 (delta 64), reused 91 (delta 45), pack-reused 1926        
Réception d'objets: 100% (2043/2043), 1.00 MiB | 415.00 KiB/s, fait.
Résolution des deltas: 100% (1354/1354), fait.
error: Le serveur n'autorise pas de requête pour l'objet 7f4d9aacc7f7ff1bcbe0e3142e099714304a7771 non annoncé
Chemin de sous-module 'thirdparty/JUCE' récupéré, mais il ne contenait pas 7f4d9aacc7f7ff1bcbe0e3142e099714304a7771. La récupération directe de ce commit a échoué.

Best regards,

YC

Live parameter edition and bank loading

The synthesizer should be able to receive parameters by either GUI or MIDI interaction.
When the synth changes its parameters, or current program, it should notify GUI so it updates its display.

Juce has its mechanism to achieve it, which I should check out in detail. AudioProcessorValueTreeState

  • transmission of programs UI->RT by FIFO
  • applying instrument changes (implemented in my libADLMIDI branch ADLplug)
  • creating parameter definitions and linking them to UI elements

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.