Code Monkey home page Code Monkey logo

sfizz-ui's People

Contributors

atsushieno avatar essej avatar paulfd avatar pferrand-soundhound avatar redtide avatar rncbc 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

Watchers

 avatar  avatar  avatar  avatar

sfizz-ui's Issues

Can not reload changed SFZ file in LV2 plugin

When the host sends an atom:Path msg for the http://sfztools.github.io/sfizz:sfzfile param with the same SFZ file path as the one already loaded, sfizz skips file loading.

This prevents the user from reloading a SFZ file, which has changed (i.e. the SFZ file was edited after loading). The user needs to remove and re-add the plugin instead, which is cumbersome.

IMO, the sfizz plugin should reload the SFZ file unconditionally or store a modification time and/or hash for the file contents and only skip loading if both of these match.

Track VSTGUI 4.12.3

The current development version creates corruption on multiple platforms (#1004, #45). It's set at 4.10.2 in 1.1.1, but we have interest in tracking the upstream version when it becomes stable.

Loading a file opens the file with write permissions

When selecting "Load file" from the menu, the file is opened with write permissions. I see no good reason for this, and because of my setup it has caused me a bit of a bother until I figured out what was going on.

LV2 plug-in build is disabled, how do I enable it?

When I run cmake to prepare the build I see this:

Build LV2 plug-in:             OFF

How can I change this switch so it will build the LV2 plug-in?

I'm running manjaro.
I've first tried installing two versions from AUR. Both gave me a standalone program, but not an LV2 plug-in.

Then I cloned the Git master - same.
Then tried the develop branch - no difference.

I have been building a lot of LV2 plug-ins (from AUR) on this system so it can't be a lack of dependancies, it's just disabled. I've also tried this:

build $ cmake cmake -DCMAKE_BUILD_TYPE=Release -SFIZZ_LV2=ON ..

To no avail.

...

Oh wait...

-DSFIZZ_LV2=ON ..

Worked. Argh. Nevermind.
Though it is not enabled by default, which I think should be.

UI: Allow keyswitches to be grouped for keyswitch dropdown

Keyswitch groups allows sfizz to display group sub-menus in the keyswitch dropdown planned for Panel B:
ks_groups_dropdown_2

This will allow library authors to categorise their keyswitches how they want, and facilitate ease of discovery for both author, and end user.

In order to allow this it is suggested by both @jpcima and me that the current sw_key_labelN use a | character to divide the string name into two parts:

sw_key_labelN=<keyswitch group name> | <keyswitch name>

SFZ Example:

<control>
sw_key_label42=instrument | sine
sw_key_label43=instrument | saw
<region>
sample=*sine
sw_last=42
<region>
sample=*saw
sw_last=43

Looking at the above example, this solution could also remove the need for adding the keyswitch name per region.

Incorrect vst3 architecture folder on armhf systems (armv7l โ†’ armv7hl)

First the good news. I managed to build the VST3 in a Raspberry Pi load it in Ardour 6.3.92 and make some noise.

Since this is an ARM processor and OS with hard-float support (armhf in debian), I had to rename the plugin's arch:

cd ~/.vst3/sfizz.vst3/Contents/
mv armv7l-linux/ armv7hl-linux/ 

https://steinbergmedia.github.io/vst3_doc/vstinterfaces/vst3loc.html#linuxformat
specifies `based on the RPM Terminology + "-linux"``

RPM terminology for armhf is armv7hl (not arm7l)

sfizz.lv2 needs to respect CMAKE_INSTALL_PREFIX

I was trying to build and install development version of sfizz into non-standard location, apart from the some stable-ish version at /usr/local. But sfizz.lv2 cannot be installed because it seems always trying to install it to /usr/local.

/sources/sfizz/build$ make install
Install the project...
-- Install configuration: "RelWithDebInfo"
-- Installing: /sources/sfizz/dist/lib/libsfizz.a
-- Up-to-date: /sources/sfizz/dist/include/sfizz.h
-- Up-to-date: /sources/sfizz/dist/include/sfizz.hpp
-- Up-to-date: /sources/sfizz/dist/lib/pkgconfig/sfizz.pc
-- Installing: /sources/sfizz/dist/lib/libsfizz.so.0
-- Up-to-date: /sources/sfizz/dist/lib/libsfizz.so
-- Installing: /sources/sfizz/dist/bin/sfizz_jack
-- Installing: /sources/sfizz/dist/bin/sfizz_render
-- Up-to-date: /usr/local/lib/lv2/sfizz.lv2
CMake Error at lv2/cmake_install.cmake:49 (file):
  file INSTALL cannot set permissions on "/usr/local/lib/lv2/sfizz.lv2":
  Operation not permitted.
Call Stack (most recent call first):
  cmake_install.cmake:44 (include)

Change VST parameter names dynamically

How to change VST parameter names according to CC labels.

Steinberg::String newTitle = "...";
newTitle.copyTo(parameter->getInfo().title, 0, 128);
componentHandler->restartComponent(kParamTitlesChanged);

Keyboard display in GUI

There needs to be a keyboard display in sfizz GUI.

This is important to be able to:

  • Clearly see current range of regions
  • Keys set to keyswitch
  • Currently played MIDI notes
  • Rudimentary Virtual Keyboard (mouse over key, and press key to trigger output)

Here is a mock-up of what the keyboard could look like, I have placed the keyswitch indicators above the keys, as a keyswitch can be inside a region. I have used colour to indicate current region, but we may want to think about greying out notes outside of regions?
keyboard_with_keyswitch
Middle C4 has a dot positioned under. This keyboard is designed to aid users in understanding what the SFZ Script is capable of- not for playability with the mouse. In which case a Virtual Keyboard that allows Musical Typing would be better equiped to handle.
Having the keyboard full range 0-127 allows consistency between SFZ Scripts, and simplifies the GUI display - as there is no need to include up/down octave UI elements.

sfizz vs Carla, instrument choice is not saved correctly

Under sfztools/sfizz#595, I was told that sfizz as a plugin would save its settings properly if I save the project on a filesystem that supports symlinks.

However, this is not true for Carla.

  1. Create a new Carla project.
  2. Add a sfizz plugin.
  3. Choose a sampled instrument and verify that audio is produced correctly.
  4. Save the Carla project to an ext4 filesystem.
  5. Close Carla.
  6. Relaunch Carla and open the project file.
  7. Open the sfizz instrument. Now it says "DefaultInstrument" instead of the instrument selected earlier.

I might anticipate mutual buck-passing here: sfizz expects the symlinks to be created under Carla, and Carla may well say "why do you need symlinks?"

I had really hoped to find an alternative to Ardour because its MIDI editing interface is unbearable. Waveform11 look(ed) promising but it doesn't support LV2 or JACK MIDI. So I thought maybe I could host sfizz LV2 in Carla and pipe MIDI/audio in and out. But... the project fails to restore properly. So after two days, I'm still at step 1.

(I'm rapidly running out of FLOSS options. I'd love to be able to say that I could complete this project with FLOSS but this is looking increasingly unlikely.)

Version information in GUI (major.minor, LV2/VST3)

First of all thanks for sfizz, this very compact sampler plugin.

Is there a way of getting the version information of the binary? It would help having this in the gui, I missed it while updating, but it's also handy when trying to clean up the plugin mess that sometimes happens through the freedom of different plugin folders and different installation methods.

"objdump -T sfizz.so | grep text" delivered some information for VST3, but it seemed a bit contradictory (or maybe it's not intended for a version check at all).

Thanks

GUI for the Standalone (and plugin)

really like this SFZ player. I use sforzando in Linux using WINE with much success and have followed the development of SFIZZ for a bit, I use Debian Buster at v10.3 and build it locally, both the standalone and LV2 work perfectly

my question is, are there plans to implement a GUI for the standalone and possibly the LV2?

CC slider GUI

The custom GUI for sfizz needs a simple way to display the CC's that are referenced and named in the SFZ Script.

I suggest a simple list approach, with a CC Slider & Label display, with a mini-map that shows the state of all 128 CC's to the right:
mockup_cc_sliders_03

Only the CC's that are used in the SFZ Script would be displayed, with unused CC's shown in the mipmap
mockup_cc_sliders_04

CC value could also be displayed to the right of the slider, such as:
mockup_cc_sliders_05

VST2 version of sfizz

The "official" version is VST3.
I want a VST2 32-bit version of sfizz.
Just in case, anybody read this issue are willing to help build the VST2 version, that will be great!
And better, if anybody can build an RTAS version or AAX-32 of sfizz.

Parameter automation of VST

Some things to remember/fix regarding the parameter automation.

  • When a SFZ file initialized a CC, this should automate the corresponding parameter in the plugin.
  • It was reported by @kinwie that CC parameters don't do anything when they are manipulated with Hermann Seib's VSTHost generic UI.
    Likely related to the Bitwig console log warning about the CC parameters.
    In other VST3 example plugins, the CC parameters are hidden, unlike ours are.

Problem browsing in Qtractor after sfz file(s)

Hi,

I cant browse after sfz files in qtractor. I tried both versions vst3 and lv2. Nothing is happen when I click to load a sfz file.

Tried it on Carla Rack...nope, didnt work.

Tested in LMMS also. Same problem. I must miss something.

OS: Manjaro KDE with everything updated
Latest kernel available for Manjaro.

Linux binaries are dynamically linked

Please statically link Linux binaries just like you do with the windows binaries, and only depend on mandatory system libs (here: libX11, libc).

Otherwise this can cause conflicts with hosts or other plugins in the same memory-space and also only works on a limited set of target systems.

LV2 display issue

Hi all. Reporting it here after talking a bit about it for it not to be forgotten.

I've been trying sfizz version 0.3.0 from the github release tarball. A strangish stuff is that on my first try, the LV2 looked like:
sfizz-lv2-ok
now it looks like:
sfizz-lv2-pasok
Note the display order of the different items. It doesn't look to have any impact on the sounds, just it is strange that the display order is changing.

Note: launched with jalv.select.

HTH and thanks for sfizz!

VST3 regularly blacklisted by Ardour 6.7

Running sfizz-git r3699.ce2170c8-1. Often when creating a MIDI track in Ardour 6.7 I will only see the LV2 version (which crashes Ardour when opening the SFZ file). Clearing Ardour's plugin blacklist works but it is only a matter of time before it disappears again.

Crash in VstHost/Savihost

Anyway, everytime I click something on the UI, e.g. moving the CC 4 knob, it crashed VstHost (32-bit, vst3), also SaviHost. It's a random crash and just because when clicking on the UI. Maybe @jpcima knows something about it?

FR: please add visual indicator when library is loading

With some larger libraries it can take some time before the sample set is fully loaded. Sfizz currently does not visually indicate when the loading is in progress, which slightly confuses me. Please add a visual indication (eg progress bar).

No sound from VST3 sfizz 1.0.0 plugin instances when loading Ardour project

When restoring saved project using Ardour 6.6 and self compiled sfizz vst3 version 1.0.0 midi state is not restored properly. This results all sfizz plugin instances being completely silent.

Investigating further it looks like that undefined basic midi cc attributes like expression, volume, panning etc are set to 0 during initialization.

This didn't happen with sfizz 0.5.0 lv2 plugin instances.

Sustain pedal issues in the LV2 plugin, and more general MIDI bindings questions

The problem is as follows, please tell me if I miss anything:

  • VST3 does not send midi control data directly. You have to register a parameter as "bound" to a midi CC and the host will send changes to this parameter whenever a CC is received. If there are any collisions between a UI control, a MIDI control, and whatever the user is doing on a single parameter, it is the responsibility of the host to solve the collision.
  • LV2 does not have this, but there is a midi:binding property for ports which supposedly should do the same (i.e. provide a default binding which removes the CC from the midi stream and let the host resolve collisions out of the plugin). Problem is no host seem to implement it, or implement it this way, yet sfizz-lv2 assumes they do unless you pass in a compile-time switch.

One immediate impact which is very apparent for users is that by default, sfizz-lv2 does not respond to the sustain pedal, which I think is not a good user experience. We can probably wait for the host to implement the midi bindings eventually, if ever, and just require users to manually map any other sfizz's "CCs" to actual controllers if they would want to, but sustain and sostenuto should probably be treated differently. I propose the following:

  • When loading an SFZ file, track which CCs are used over all regions as sustain or sostenuto, and store them somewhere.
  • In the LV2 UI and the VST UI, do not advertise the CC and sostenuto switches in the CC control list, although they could be mentioned somewhere else (or some other GUI element, as sforzando does).
  • In the LV2 logic, if a CC is received on the midi stream and it is a sustain or sostenuto, then it is passed as is to the engine. If it is not a sustain or sostenuto, it is ignored.

cc @jpcima @alcomposer

Fonts must be installed in OS versions before Windows 10

Only Windows 10 supports the custom font API, older versions must install the font files to make them recognized.

According to InnoSetup, it is feasible to do this under the Files section.

Source: "sfizz.vst3\Contents\Resources\Fonts\Roboto-Regular.ttf"; DestDir: "{autofonts}"; FontInstall: "Roboto Regular"; Flags: uninsneveruninstall; OnlyBelowVersion: 6.4

Note that the font MS FluentUI is custom-made using a fontforge script.
It's suggested to rename it with a name which is non-conflictual, like "sfizz Fluent System".
Fontforge script

Crashes when removing sfizz on Reaper

Enviroment: EndeavourOS (Arch Linux), REAPER 6.26, VST3

Using sfizz develop build from OBS, sfizz-1617848785.39f56f2d-0

[sfizz] new synth
[New Thread 0x7fffdd6a0640 (LWP 6651)]
[New Thread 0x7fffdce9f640 (LWP 6652)]
[New Thread 0x7fffdc69e640 (LWP 6653)]
[New Thread 0x7fffdbe9d640 (LWP 6654)]
[New Thread 0x7fffdb69c640 (LWP 6655)]
[New Thread 0x7fffdae9b640 (LWP 6656)]
[Thread 0x7fffdae9b640 (LWP 6656) exited]
[New Thread 0x7fffdae9b640 (LWP 6657)]
[sfizz] about to create view: editor
[sfizz] about to open view with parent 0x260058a
[New Thread 0x7fffd51a4640 (LWP 6658)]
[New Thread 0x7fffd49a3640 (LWP 6659)]

(reaper:6633): GLib-CRITICAL **: 10:02:02.444: Failed to set scheduler settings: Operation not permitted
[New Thread 0x7fffabfff640 (LWP 6660)]
[New Thread 0x7fffab7fe640 (LWP 6661)]
[New Thread 0x7fffaaffd640 (LWP 6662)]
[Thread 0x7fffaaffd640 (LWP 6662) exited]
[Thread 0x7fffabfff640 (LWP 6660) exited]
[Thread 0x7fffd49a3640 (LWP 6659) exited]
[Detaching after vfork from child process 6664]
[Thread 0x7fffab7fe640 (LWP 6661) exited]
[Thread 0x7fffdae9b640 (LWP 6657) exited]
[Thread 0x7fffdc69e640 (LWP 6653) exited]
[Thread 0x7fffdce9f640 (LWP 6652) exited]
[Thread 0x7fffdb69c640 (LWP 6655) exited]
[Thread 0x7fffdbe9d640 (LWP 6654) exited]
[Thread 0x7fffdd6a0640 (LWP 6651) exited]

Thread 1 "reaper" received signal SIGSEGV, Segmentation fault.
--Type <RET> for more, q to quit, c to continue without paging--<RET>
0x00000000008e1dd6 in ?? ()
(gdb) bt
#0  0x00000000008e1dd6 in  ()
sfztools/sfizz#1  0x00007ffff76f4098 in  () at /opt/REAPER/libSwell.so
sfztools/sfizz#2  0x0000000000415756 in  ()
sfztools/sfizz#3  0x00007ffff79a7b25 in __libc_start_main () at /usr/lib/libc.so.6
sfztools/sfizz#4  0x000000000041ae5a in _start ()

I supposed this is not enough information to gather, so let me know what should I do for a more meaningful log

Native REAPER on Linux can't scan VST3 version on releases page, but will scan Debian package provided by https://download.tuxfamily.org/librazik/pasapas/pool/main/s/sfizz/

After merging all of the files into /usr/local and pointing REAPER to them, it fails to scan properly and appears in the failed plugins menu. I should also clarify that there is no crash when scanning the plugin as mentioned in other issues.

The experimental REAPER builds that support LV2 accept the LV2 plugin provided, but VST3 still doesn't work.

The file open GUI does not open in Ardour 6.2

  • OS: Ubuntu Linux 20.04
  • sfizz version: develop branch with LV2 UI

Upon opening the UI and clicking to open a file, nothing happens.

Zenity apparently can not launch and produces the following message:

/usr/bin/zenity: symbol lookup error: /lib/x86_64-linux-gnu/libsecret-1.so.0: undefined symbol: g_input_stream_read_all_finish

It seems linked/similar to surge-synthesizer/surge#2455

In Reaper, controls tab and info panel not filled initially

Reproducing the issue

  • open Reaper
  • load sfizz on master bus
  • controls tab does not contain any knobs
  • press Play button
  • control tab fills up

It's because this info is provided by OSC messages, and messaging works only when the sfizz synth is running.
This info should be cached on load, so that it can be sent regardless whether sfizz is active or not.

Crash when closing GUI

Test Evnironment: Linux / REAPER 6.24 / VST3
sfizz: d2b9eb7

#0 0x00007ffff79c9ef5 in raise () at /usr/lib/libc.so.6
sfztools/sfizz#1 0x00007ffff79b3862 in abort () at /usr/lib/libc.so.6
sfztools/sfizz#2 0x00007ffff7a0bf38 in __libc_message () at /usr/lib/libc.so.6
sfztools/sfizz#3 0x00007ffff7a13bea in () at /usr/lib/libc.so.6
sfztools/sfizz#4 0x00007ffff7a1547c in _int_free () at /usr/lib/libc.so.6
sfztools/sfizz#5 0x00007ffff7a18ca8 in free () at /usr/lib/libc.so.6
sfztools/sfizz#6 0x00007fffca0f004e in SPiano::~SPiano() () at /home/dude/.vst3/sfizz.vst3/Contents/x86_64-linux/sfizz.so
sfztools/sfizz#7 0x00007fffca15e985 in VSTGUI::CViewContainer::removeAll(bool) () at /home/dude/.vst3/sfizz.vst3/Contents/x86_64-lin
ux/sfizz.so
sfztools/sfizz#8 0x00007fffca15ec2b in VSTGUI::CViewContainer::beforeDelete() () at /home/dude/.vst3/sfizz.vst3/Contents/x86_64-linu
x/sfizz.so
sfztools/sfizz#9 0x00007fffca0b4f3f in VSTGUI::ReferenceCounted::forget() () at /home/dude/.vst3/sfizz.vst3/Contents/x86_64-lin
ux/sfizz.so
sfztools/sfizz#10 0x00007fffca0e4235 in Editor::Impl::~Impl() () at /home/dude/.vst3/sfizz.vst3/Contents/x86_64-linux/sfizz.so
sfztools/sfizz#11 0x00007fffca0b79c5 in SfizzVstEditor::~SfizzVstEditor() () at /home/dude/.vst3/sfizz.vst3/Contents/x86_64-linux/sfi
zz.so
sfztools/sfizz#12 0x00007fffca0b7b69 in SfizzVstEditor::~SfizzVstEditor() () at /home/dude/.vst3/sfizz.vst3/Contents/x86_64-linux/sfi
zz.so
sfztools/sfizz#13 0x00007fffca0adc25 in non-virtual thunk to Steinberg::Vst::VSTGUIEditor::release() () at /home/dude/.vst3/sfizz.vst

VST3 X11 runloop issues with timers

There seems to remain issues in the X11RunLoop component.
Reaper crashes occasionally, with different backtraces, but timers seem often involved somewhat.

This is the deal with X11RunLoop: it's a utility class which serves to implement Timer and FD event handling, which VST3 Linux requires to do at plugin-side.

The one which comes in VST3 SDK is flawed, it's unable to handle unusual edge cases and crashes.
For example, the case when you want to unregister a timer inside a timer callback.

I've made a custom implementation to cover some of these weird cases but it's not yet bulletproof I think.
It used a strategy which puts event handlers in a "zombie" state before clearing them from the vector.

As a wild guess, I think this might have to do with a handler getting re-registered after being unregistered into a zombie, all during the same iteration of event handling.

GUI TODO LIST

GUI MOCKUP:

Klassic UI Layout:

UI_info_3

Neo UI Layout:

10 5

MVP (minimum viable product) GUI Priority:

  • Active tab indicator- use colour (panel A)
  • VKBD show active keyswitch range (live update when keyswitch changes)
  • VKBD keyswitch takes display priority when overlap with region
  • LMB on Keyswich label to choose from dropdown list
  • About sfizz pop-up when LMB on "sfizz" logo panel A
  • Elide all text labels including SFZ file name
  • Additional file tools in dropdown chevron in panel B
    • "Duplicate..."
    • "Load Recent..."
  • Implement "info" tab in panel A & move region info currently in "home" tab to "info".
  • Display Pan knob as Biopolar L-R knob

GUI Development TODO

  • Filled style tab icons
  • Click on instrument name to open file open dialog (panel B)
  • Change Max Polyphony in panel B directly (downward chevron dropdown)
  • Keyswitch active label in panel B.
  • Pan & Volume rotary knob panel C
  • Piano Keyboard widget with Keyswitch display
  • Piano Keyboard colored keys, use HCY' color model for perceptual luma.
  • Play Keyboard widget playable with mouse
  • Show current MIDI notes in keyboard widget
  • CC Display Tab
  • Navigation of CC Display (tabs)
  • Knobs that match current look
  • File loading Throbber & Status Light- LMB on status icon opens log viewer popup
  • Display full path name for sample & labels in info tab (region count etc)
  • Next/Previous SFZ script sideways arrows next to loaded file name (panel B)

NICE TO HAVE:

  • Copy log/errors to clipboard from log viewer popup
  • UI preference "use MIDI octave number or note number in Keyboard" default "octave"
  • Change MIDI keyboard Middle C number (C3,C4,C5)? Or simply allow any Middle C choice?
  • Mouse Y POS for keyboard note velocity entry
  • Current Memory footprint display (panel B)
  • Output Level Meter
  • Transposition (panel B, under keyswitch text)
  • Tune (panel B, under keyswitch text)

EXPERIMENTAL:

  • Background image loading (image= opcode)

REALLY NICE TO HAVE:

  • Drag-n-drop SFZ script loading
  • Drag-n-drop WAV/AIFF/FLAC file to create simple instrument:
<region>
sample=dropped_wav_file.wav
  • Keyswitch & Associated region display in info
    List all regions with a range bar that are connected to key switches
  • RMB on region / keyswitch / label to change Keyswitch note. Live remapping (@paulfd)

Audio Unit crash in Reaper

Steps

  • load sfizz AU in Reaper
  • open the editor
  • play a few notes on visual keyboard, on the default instrument
  • click the "Remove" button

Sometimes Reaper will crash instantly at the moment the plugin gets removed, and open a window with backtrace info.
problem.txt

This is the console
Capture du 2020-10-21 03-30-19

The prime suspect is VST-SDK AUwrapper because we're not touching any AU code and VST3 is fine.

CC Rotary Control Design

sfizz needs a way of displaying rotary knobs, this is a simple knob design, that shows both a label, ccN, and value.
pan_knob
It can be modified to be a pan (bi-polar), or volume rotary knob.

Ardour 6.8 can't load the HEAD version of the LV2 and VST3 plugin

The issue is with the symbol pango_font_metrics_get_height(...) which comes from libpango 1.44 and up. Ardour currently bundles in libpango 1.40.4. I added a pull request on our VSTGUI fork which includes a runtime check for the libpango version before calling this method. This solves the problem for the VST3 version, since Ardour calls dlopen with the RTDL_LAZY flag for VST plugins. However, this does not solve the issue for the LV2 plugin, because suil loads UIs with the RTDL_NOW flag and thus the UI fails to instantiate due to the missing symbol.

I think we should push the runtime check upstream in VSTGUI. To allow LV2 UIs, I think our solutions are either:

  • Remove the code from our VSTGUI fork and use it until Ardour updates libpango. I haven't seen a visual impact when disabling this part of the code to be honest, but I haven't checked deeply either.
  • Statically link in pango/cairo in the UI

Voice cout as LV2 control output

I find having access to this information extremely useful, as it allows me to know how heavy I am pushing the sampler. If the value reaches the voice limit, then I would know I likely have to increase it.

Some sfz instrument shows key switches at wrong places on the keyboard

I'm not sure if this is a problem in sfz or sfizz UI, but anyways, some instrument seems to show key switches at wrong range areas. I'm experiencing it with UI Standard Guitar KSOP: https://unreal-instruments.wixsite.com/unreal-instruments/standard-guitar (caution: the instrument is huge, 700MB-ish)

I'm on Linux now and cannot really test how it loads on Sforzando (which the instrument is confirmed by the sfz creator), but I see the key switch ranges on my desktop are different from the screenshot on the instrument website. Here is an sfizz sshot from my desktop:

image

UI METAL GTX, a similar sfz instrument on the same website shows the keyswitches as expected, so it is not a simple range mismatch. I have no further idea on what are different (no right idea on how key ranges are specified in the sfz files) so I'd leave further investigation to you.

Confirmed build: 858028f. Loaded sfizz vst3 from JUCE AudioPluginHost on Linux.

Puredata: things left to do

  • install rules for all OS
    Linux files should go in /usr/lib/pd/extra, check how it is for the other 2
  • make it print the full version number with git revision
  • build it in CI and OBS, generate the artifacts
  • the help should use $0 symbols to prevent possible conflict
  • provide methods for note, cc, bend etc

Auto-reload for VST

Add SFZ auto-reloading.

The implementation should do as follows:

  • set N to some checking interval in frames
  • each time N frames are elapsed, the DSP posts a message to the worker
  • the worker receives, calls file checking API without locking, and then if files changed, lock and reload current sfz, whose path is available in _state

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.