U-he preset randomizer tool (open-source CLI)

Official support for: u-he.com
RELATED
PRODUCTS

Post

Update: v0.13.0 is now basically feature complete. It can filter by folder or by uhe-fav file:

2024-05-17 06_11_40-README.md - Untitled (Workspace) - Visual Studio Code.png
Now it's just stomping out bugs and then I hope a 1.0 release.
AtomOfScent wrote: Wed May 15, 2024 3:28 am Depending on how easy it is to support, maybe if the script finds Favourites.uhe-fav in the preset root folder Favourites could be an option at the "Which presets to load for consideration" step (only those would be loaded.)
This is now also supported.
You do not have the required permissions to view the files attached to this post.
Find my (music) related software projects here: github.com/Fannon

Post

Fannon wrote: Fri May 17, 2024 4:16 am Update: v0.13.0 is now basically feature complete. It can filter by folder or by uhe-fav file:
Now it's just stomping out bugs and then I hope a 1.0 release.
Author working well. The only minor thing is if you choose author + category and it turns out the author presets aren't categorized you end up at a dead end. IIRC, the script can't continue but also doesn't end. Not a big deal and likely infrequent, but perhaps it could ignore any filter that leads to no results.

I'm excited to test with the Favourites option. :ud:

Since the parameter exclusion update I've been getting noticeably better results (I've been using Diva mostly.) Even when something sounds really off it's usually down to a few settings I can fix quickly and salvage a good preset from one I would've instantly deleted before.

In most cases the offending settings are tuning modulation depth and FM. A tiny amount can go a long way, but usually needs tuning by ear. I don't necessarily suggest excluding them, but helpful to be aware of.
Diva (other synths likely have similar settings)
#cm=OSC
Model=0/1/3/4
TM1Dpt=
TM2Dpt=
FM=
Also, what do you think about an option to include or exclude previously created random presets? They take little effort to generate, but a lot of time to preview and curate so there could be many 'junk' ones you wouldn't want influencing new ones.

The default exclusion could either be by location or metadata and good results included by moving them from RANDOM, or dragging to a different author name 'Random Good' or whatever.

Post

AtomOfScent wrote: Sat May 18, 2024 2:14 am IIRC, the script can't continue but also doesn't end. Not a big deal and likely infrequent, but perhaps it could ignore any filter that leads to no results.
Yep, makes sense. I'll fix that. You're a good QA person, to notice such things so quickly :)
AtomOfScent wrote: Sat May 18, 2024 2:14 am Also, what do you think about an option to include or exclude previously created random presets? They take little effort to generate, but a lot of time to preview and curate so there could be many 'junk' ones you wouldn't want influencing new ones.
Good point. I even wonder if the randomizer should ignore those by default. They probably don't hurt the randomization much, but if you get ever more of them the randomizer feeds on its own output. I cannot imagine that being healthy :D

Edit: Both fixed with u-he-preset-randomizer@0.13.4
Find my (music) related software projects here: github.com/Fannon

Post

I'd say it's working quite well at the moment, it's hard to pull myself away from Diva to test other synths and I've learned a lot tweaking the results. :tu:

-Regarding favourites, I've never developed any coherent system for u-he's generic Fav 1-8 (just let me rename them :dog: ), so when using favourite as a filter I'd prefer all favourites included. Right now the selection is for an individual fav sections and I think if you narrowing down to one could leave too few results with other filters.

Maybe I'm at outlier and the most users know exactly what every color means so including all as an addition to the current breakdown could work for everyone.
i.e.

Code: Select all

> Presets/Diva/Favourites ALL (464)
  Presets/Diva/Favourites 1 (338)
  Presets/Diva/Favourites 2 (23)
  Presets/Diva/Favourites 3 (16)
  Presets/Diva/Favourites 4 (24)
  Presets/Diva/Favourites 5 12)
  Presets/Diva/Favourites 6 (22)
  Presets/Diva/Favourites 7 (29)
  Presets/Diva/Favourites 8 (21)
Unfortunately, trying to fix the previously mentioned issue with = in the folder names I renamed the folders and that caused me to lose most of my existing favourites. I did save a uhe-fav file prior, and since I'm guessing the script is matching only the filename (since the fav file paths are relative) it might still work with the old fave file?

-When using folder as a filter ideally it would include sub-folders. At the moment a parent folder will return no results.

For example these will all show up as folder selection entries, and when choosing option 1 I'd like to have everything included. Similar with option 4, some banks have category sub-folders so there's no way to choose all of it as sub-folders are ignored.

Code: Select all

\[author]\ (no presets)
\[author]\[pack 1]\
\[author]\[pack 2]\
\[author]\[pack 3]\ (no presets)
\[author]\[pack 3]\[category 1]\
\[author]\[pack 3]\[category 2]\
\[author]\[pack 3]\[category 2]\
-A minor detail, but similar to randomizing a single preset or by category, it would be helpful if author was used as a sub-folder. \[Fully Random]\[Author]\...

-A possibly more serious quirk is sometimes presets don't load correctly (it seems like they're retaining settings from the last one.) It might be related to presets without binary loaded after ones with binary and hard to solve. I can try to confirm with more testing.

Usually finding a preset that does load right and going back to the other one will make it sound as expected. I haven't tested if re-saving fully fixes it, but it's possible the synth will write proper binary data for the preset when saved. Worth being aware of when a preset sounds like the last one as to not prematurely delete it as a dud or dupe.

(I always use stable and never binary, but there could be early random ones in there)

Post

AtomOfScent wrote: Mon May 20, 2024 6:32 am I'd say it's working quite well at the moment, it's hard to pull myself away from Diva to test other synths and I've learned a lot tweaking the results.
Same here :) I'm also using it almost exclusively for Diva, as it's my favorite synth and the random generator works rather well with its simpler preset structure.
AtomOfScent wrote: Mon May 20, 2024 6:32 am -Regarding favourites, I've never developed any coherent system for u-he's generic Fav 1-8 (just let me rename them ), so when using favourite as a filter I'd prefer all favourites included. Right now the selection is for an individual fav sections and I think if you narrowing down to one could leave too few results with other filters.
That's a good idea: I've now made the favorite file selection a multi-select, that makes more sense to me than just offer to pick one. Yeah, I also wish they would support renaming, but I got my system (based on colors) that I'm now used to.
AtomOfScent wrote: Mon May 20, 2024 6:32 am -When using folder as a filter ideally it would include sub-folders. At the moment a parent folder will return no results.
Strange, this should work. I've just tested it locally. The folder selection will always include all presets in the chosen folder directly and all presets in all its subfolders.
Find my (music) related software projects here: github.com/Fannon

Post

Fannon wrote: Mon May 20, 2024 7:12 am Same here :) I'm also using it almost exclusively for Diva, as it's my favorite synth and the random generator works rather well with its simpler preset structure.
Diva seems ideal. Repro should work well too, I think it's when things get modular or involve wavetables it's likely to be more hit or miss.

Btw regarding the presets I mentioned that 'weren't loading right.' I haven't checked them all, but at least a few are basically blanks, which is much less of a problem than I was fearing.

Code: Select all

*/
#AM=Diva
#Vers=10001
#Endian=little
/*=undefined
	Modulator Reference Table=undefined

// Section for ugly compressed binary Data
// DON'T TOUCH THIS
That's a good idea: I've now made the favorite file selection a multi-select, that makes more sense to me than just offer to pick one. Yeah, I also wish they would support renaming, but I got my system (based on colors) that I'm now used to.
Multi-selection is much better. Feel free to share your favourites system, mind changes with the weather.

One thing that irks me is how the browser categories work in the synths. For example "Pad" is in the sub-menu of "Pad", but if you select it all other selections in that sub category are removed, where as the rest are additive. In my opinion, parent categories should include all children, and the sub-categories used to refine.

If I'm not mistaken you've made a change and it now works like that so "Keys" = Keys:ALL, whereas before there were only individual sub-categories like "Keys:Keys"?

Instead of one long list of every category what do you think about an approach like this:

Code: Select all

Category:
Bass
Pads
Leads
Keys
FX
Drums
Seq+Arp
Other
After choosing a parent category there's a multi-select list. A for ALL would be like "Pad" now, but you could also narrow down to complementary categories like Drones AND Evolving AND Soundscape etc. rather than choosing between ALL pads and Drones OR Evolving OR Soundscape?
Strange, this should work. I've just tested it locally. The folder selection will always include all presets in the chosen folder directly and all presets in all its subfolders.
It might've been a fluke as I didn't repeatedly test it.

Post

AtomOfScent wrote: Tue May 21, 2024 12:50 am Btw regarding the presets I mentioned that 'weren't loading right.' I haven't checked them all, but at least a few are basically blanks, which is much less of a problem than I was fearing.
Are those older presets? This is something to keep a look at. I'll add some warning if a preset has "undefined" values.
AtomOfScent wrote: Tue May 21, 2024 12:50 am Multi-selection is much better. Feel free to share your favourites system, mind changes with the weather.
I basically use the gradient from grey, yellow, orange, red for rating my presets. Not sure grey brings much value, though. Then there's green for INIT / template patches. I was using blue for some interesting, crazy stuff, but not sure I really need more than those few categories. Problem is that the colors are exclusive. So I use file name suffixes, to mark presets and setup a "smart search", e.g. for Presets that I've explicitly made MPE optimized (-MPE), or presets that were modified by me in new variants (-SHV).
AtomOfScent wrote: Tue May 21, 2024 12:50 am After choosing a parent category there's a multi-select list. A for ALL would be like "Pad" now, but you could also narrow down to complementary categories like Drones AND Evolving AND Soundscape etc. rather than choosing between ALL pads and Drones OR Evolving OR Soundscape?
Not sure, that would make it more complicated and to me it already feels good enough. Now with uhe-fav files, you can actually use the u-he browser to multi-select, tag and export presets and then use that as a selection in the generator. Since that is possible now, I don't see so much point in making the CLI more complex (there will always be something more).
Find my (music) related software projects here: github.com/Fannon

Post

Are those older presets? This is something to keep a look at. I'll add some warning if a preset has "undefined" values.
I can't say for certain if they're all old, as they often end up in common folders but I'll pay attention with new generations.
I basically use the gradient from grey, yellow, orange, red for rating my presets. Not sure grey brings much value, though. Then there's green for INIT / template patches. I was using blue for some interesting, crazy stuff, but not sure I really need more than those few categories. Problem is that the colors are exclusive. So I use file name suffixes, to mark presets and setup a "smart search", e.g. for Presets that I've explicitly made MPE optimized (-MPE), or presets that were modified by me in new variants (-SHV).
Interesting. Sometimes I'd use colors based on the intensity, blue for mellow sounds, yellow to red for more distorted/aggressive sounds, but never stick with anything and a few times all my favourites would revert to gray.

I'd love to test Diva's MPE and I could see merging/randomizing MPE optimized presets being really useful, but I can't stand my MPE controller (terrible feel/calibration) so it collects dust.

It's really limiting that user tags/categories can't be added and search is global without using long custom search strings. Hopefully Zebra3 brings some browser updates.
Not sure, that would make it more complicated and to me it already feels good enough. Now with uhe-fav files, you can actually use the u-he browser to multi-select, tag and export presets and then use that as a selection in the generator. Since that is possible now, I don't see so much point in making the CLI more complex (there will always be something more).
That's understandable. When categorizing generated presets I usually stick to Pads:Pads, Keys:Keys etc. to not end up with diluted categories since only one can be selected.

I think I get what you're saying. You can easily copy a variety of presets into a separate folder and use the folder option, or keep an individual favourites section for that.

I don't know if this is a script bug or u-he thing, but for categories some are named Bass: and others Basses: so theres Bass ( ) and Basses ( ) with 3 and 4 sub-categories each. Similar with Seq+Arp and Seq & Arp. This might be because the internal naming scheme changed in the past.

Eventually, I think I'll mostly be pasting in full commands. Being able to list multiple categories there could add support without changing the CLI, but I doubt it's much less work on the back end and I agree it's good enough as is.

For the final release a tips and tricks section in the the readme might help. I'm pretty used to it, but I could imagine it being intimidating to CLI noobs without the benefit of getting accustomed to each feature as it evolves.

RE: Favourites
Instead of looking for favourites.uhe-fav what about *.uhe-fav?
That way they could be descriptively renamed, avoid clashes, and allow unique sets for different use cases. For example add a bunch of presets to Fav-8, drag it to the preset folder and rename so you can easily go back to it or include in the future. Or have individual files named fav 1-8 (or based on your color scheme.)

Also when selecting all favourites I think the ( ) categories number might only be for one selected favourite, not all. When I select all favourites it returns the number 3888 in yellow and narrows down to 397 presets, but my total is over 1,000. (uhe-fav file should be current.)

If I select only Favourite 1, it returns the correct number in yellow (486) but narrows down to 397 as well.

Post

AtomOfScent wrote: Thu May 23, 2024 12:40 am For the final release a tips and tricks section in the the readme might help. I'm pretty used to it, but I could imagine it being intimidating to CLI noobs without the benefit of getting accustomed to each feature as it evolves.
That's a nice idea! If you have anything, I could create that section and copy it there. If you have a GitHub account, you could even propose it yourself!
AtomOfScent wrote: Thu May 23, 2024 12:40 am Instead of looking for favourites.uhe-fav what about *.uhe-fav?
That's how I implemented it actually. You could rename the files I think, you just have to keep it in the root folder of your synths .Data folder. E.g. I store mine here: [...] \u-he\Diva.data\Favorites
AtomOfScent wrote: Thu May 23, 2024 12:40 am Also when selecting all favourites I think the ( ) categories number might only be for one selected favourite, not all. When I select all favourites it returns the number 3888 in yellow and narrows down to 397 presets, but my total is over 1,000. (uhe-fav file should be current.)


That sounds like a bug or some problem with inconsistencies in your file / folder structure. Problem is, the tool filters out very precisely by the fav file (preset.filePath === (fav.path + '/' + fav.name + '.h2p')). If anything just slightly doesn't match up, you'll not get a match. It's even case sensitive (I could make it case-insensitive, though - as in Windows that wouldn't matter anyway).
Find my (music) related software projects here: github.com/Fannon

Post

Ok, since the tool seems to be complete and stable enough, I've made a 1.0 release today.

Also, I've collected 50 randomly generated Diva presets that I've curated, slightly adjusted and tagged and released it as a free soundset: Diva Generated Vol. 1.

Here is the link to the soundset: https://github.com/Fannon/u-he-preset-r ... .Vol.1.zip

And here is a short, quickly thrown together demo track (I'm not a pro-musician, so sorry if its a bit amateurish). The drums are Triaz, the rest is only presets from the soundset, without any effects or other alterations (except mastering and some volume / param automation).

http://www.youtube.com/watch?v=ouicLqilF9M
Last edited by Fannon on Sun May 26, 2024 2:50 pm, edited 3 times in total.
Find my (music) related software projects here: github.com/Fannon

Post

Congrats on the release! :clap:
There's some nice sounds in there.

Fannon wrote: Thu May 23, 2024 4:40 am
AtomOfScent wrote: Thu May 23, 2024 12:40 am ...When I select all favourites it returns the number 3888 in yellow and narrows down to 397 presets, but my total is over 1,000. (uhe-fav file should be current.)

That sounds like a bug or some problem with inconsistencies in your file / folder structure. Problem is, the tool filters out very precisely by the fav file (preset.filePath === (fav.path + '/' + fav.name + '.h2p')). If anything just slightly doesn't match up, you'll not get a match. It's even case sensitive (I could make it case-insensitive, though - as in Windows that wouldn't matter anyway).
It turns out it's something to do with using a single preset file. Once I dragged each one as a separate file it works as expected.

Image
I'm not quite what this is about. I'll check the metadata of the specific presets. Maybe they're old, and/or were imported from the Favourites.db.txt file. Ideally Seq+Arp:, Seq & Arp:, and Sequences & Arps: would be treated as a single category.

Repro-5 has the same 3 categories, and well as Bass: and Basses: (I haven't checked the others.)

I can't think of anything else at the moment, but will let you know if I come across any major issues with the other main synths for the next time you feel like working on the project.

Post

While jamming along with "RND Gay Tan Barrie" and "RND Big Bronze Tracee", :D I had an idea for the filenames.

Instead of [adjectives, colors, names] what do you think about a custom 'random dictionary' based on words in the titles of existing presets?

Basically just create a custom dictionary for uniqueNamesGenerator with every unique word in the filenames (>x letters, sensible exclusions like instrument names/types etc.)
https://github.com/andreasonny83/unique ... ctionaries

The script is already reading all the names and doing advanced parsing so this seems basic in comparison.

An alternative could be just checking \u-he for a custom dictionary file like customdict.txt in CSV or whatever format is standard and let the user handle it.

Maybe something like u-he-preset-randomizer --dictionary could create a custom dictionary file from every preset in \u-he, giving the most unique entries and save re-doing it each time the script is run?

Post

AtomOfScent wrote: Mon May 27, 2024 5:39 am While jamming along with "RND Gay Tan Barrie" and "RND Big Bronze Tracee", I had an idea for the filenames.
Oh.. yeah, I hope no one is accusing a random algorithm of political incorrectness then :D
AtomOfScent wrote: Mon May 27, 2024 5:39 am Instead of [adjectives, colors, names] what do you think about a custom 'random dictionary' based on words in the titles of existing presets?
That's a fun idea. I've just tried it and it was really simple to add. It's now available in v1.0.2. It results in some funny names, but sometimes it also picks up words that describe particular presets. In those cases, the names may lead to misleading expectations?
Find my (music) related software projects here: github.com/Fannon

Post

Fannon wrote: Sat May 25, 2024 10:33 am ...
Also, I've collected 50 randomly generated Diva presets that I've curated, slightly adjusted and tagged and released it as a free soundset: Diva Generated Vol. 1.
Here is the link to the soundset...
Of course I look with scepticism at randomly generated soundsets, but that's not to say the sounds can't be nice, they can, and the demo track is quite to my liking!

Post

Viktor [TUC] wrote: Thu May 30, 2024 7:29 am Of course I look with scepticism at randomly generated soundsets, but that's not to say the sounds can't be nice, they can, and the demo track is quite to my liking!
Thanks, that means a lot, coming from a professional preset author!

Regarding the quality of the randomly generated presets: I don't see them as something that could compete with a soundset created by a professional, not really. But it's nice for generating ideas and starting points, to come up with sounds that you may otherwise not have thought of. If you're really good with sound design, you can use them as starting point and make something good out of it. Or if you're not so skilled, you may have to generate more patches and do more selection and just know how to fix the problems that annoy you.
Find my (music) related software projects here: github.com/Fannon

Post Reply

Return to “u-he”