Hello,
I primarily use Zynthian with FluidSynth, and I find it quite inconvenient when it comes to managing soundfonts. For starters, they can’t be organized into separate folders. I tried using AI to help me code and modify the system so that soundfonts can now be displayed in subfolders. Additionally, since I really like the grid interface, I also added a grid view feature for a more intuitive browsing experience.
I’d like to ask: how can I preserve my custom UI while still being able to update and receive new features?
Awesome! That’s exactly what I’m looking for. The grid view of soundfonts is exactly what I need. How can I upgrade my Zynthian with that plugin, can you post code and instructions for that please?
I only modified a few files in /zynthian-ui/zyngui. I’m currently refining it and fixing some bugs. However, I’ve only tested it with the version that uses 4 encoders and no pad buttons. I’ll do more testing, and if there are no issues, I’ll push it to GitHub.
The standard way to accomplish that is by making your changes not break anything and against a local copy of the repo, then when you feel it’s ready you submit a ‘pull request’. The Zynthian developers will then evaluate your changes and either give you feedback if it’s ready, or accept it, so your changes become part of Zynthian.
It’s a nice interface. Congratulations for your work! I like it and i understand it could be more user friendly for bigger displays. I fear it’s not going to work very well with smaller displays. Anyway, it would be a good starting point for improving our current bank/preset selection interface.
Please, send a PR against Vangelis so we can test and start working on it.
It’s my pleasure. I’ve also considered the issue with some small screens, so I think they should exist as an option in the settings for easier use. I’ll fix the remaining bugs and upload it for you to check.
FYI, i just implemented bank subfolders for FluidSynth engine in vangelis branch. With this you can now classify your SF2 files in different subdirectories.
Update: I’ve now almost completed my idea. I’m quite fond of the Yamaha MODX/Montage, so the layout is somewhat inspired by them. As shown in the video, the main UI is divided into three sections:
The top area (consisting of two rows) displays the root folders (SD>User, SD>System, USB, Favourite). Selecting a root folder reveals its subfolders. Selecting a subfolder shows the soundfonts in section 2 (the next three rows).
In the soundfont section, a rotary encoder is used to switch between tabs. Selecting a soundfont will display its presets.
Section 3 shows information including the number of soundfont pages, the name of the soundfont (small text below), and the name of the preset (large text above). Additionally, tapping the star icon will automatically add the selected preset to the Favourite section.
Currently, there are a few display-related bugs. I’m using Cursor to code. I’ll try to fix all issues before pushing it for the development team to review and test. I haven’t tested it with a keypad as I don’t have one, so for now, it likely only works with the rotary encoder and touch input.
Please, when preparing the PR, rebase your code with the latest Vangelis branch version. If possible, integrate the latest improvements regarding bank subdirs to avoid code duplication and ensure bank subdir is saved/restored in snapshots.
The video moves around too quickly. I am finding it difficult to follow. How do you change between banks of instrument? The dropdown (which may be controversial) only seems to show volumes and maybe (as you describe but not obvious from the video) folders. I think it may be better to make more space available for instruments rather than take almost half the screen with the top two (mostly empty in your video) rows with navigation. This could be done by dedicating the first four (maybe half sized) buttons as navigation:
Back / up tree
Tree selector dropdown
Previous page
Next page
then have ther remaining buttons all showing presets.
It also irks me that you first have a list to select from (banks?) and then enter the button based selection.
I really like the concept and we have discussed something similar in the past but have been too busy to implement so congratulations on taking the time to develop this. I find selection from the lists with touch to be error prone so would love to see a button based alternative for the whole interface but, we would want to consider such operations as preset preselect, which is not currently possible with touch. (As soon as you touch a preset, it is loaded - unlike if you cursor to it with an encoder or keyboard which (can) preselect the preset for preview.)
Thank you for your feedback. I have also considered that the boxes in the top row may be too large, but due to the font used (I think), they might appear quite small, so I will look for ways to optimize them. In the video, I demonstrated the use of both touch and rotary encoder. I plan to fully develop the features for both encoder and touch input to make the interface more convenient to use. Zynthian is a wonderful project, and I want to dedicate more time to studying and developing it further.
Update: I’ve reviewed Riban’s suggestions and found them very reasonable. I’ve made adjustments so that it now works with both the touchscreen interface and the rotary encoder. I also reduced the size of the folder section to make more space for displaying soundfonts. The purpose of the top two rows is to let you organize soundfonts into folders, and they will be displayed there for easier management. I realized that adding too many soundfonts on one page makes the layout quite cluttered, so I decided to limit it to 16 soundfont slots per page for better readability.
Currently, I’m facing issues with the other engines because I modified how presets are displayed, which has caused the other engines to either not show presets in list view or display unexpected errors. I’ll gradually fix these problems in the coming days. I’d like to ask for your opinion: Should I implement a grid view for all engines? I’ve looked through the source code but haven’t yet found where the presets for engines like Dexed are stored. Should there be an option to switch between list view and grid view, or should grid view only apply to certain engines?
Looking forward to your feedback.
Thank you and have a great day!