grimtraveller / amsynth

Automatically exported from code.google.com/p/amsynth
GNU General Public License v2.0
0 stars 0 forks source link

Add a preset browser with categories #58

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Now that amsynth ships with hundreds of presets, it can take a long time to 
find suitable sounds.

Allowing browsing presets by category would make this much more convenient.

e.g.

  Categories   Presets
+------------+----------------------+
| Bass     > | Dirty Pulsating Bass |
| Lead     > | Plucked Bass         |
| Pads     > | basss                |
| Strings  > | FullBass             |
| Brass    > | Techno Bass 1        |
| Chords   > |                      |
| Bells    > |                      |
| FX       > |                      |
| Organ    > |                      |
+------------+----------------------+

Original issue reported on code.google.com by nickdowell on 18 Aug 2013 at 5:22

GoogleCodeExporter commented 9 years ago
How about adding a 'category' tag to the preset?  The first line could look 
like '<preset> <name> Dirty Pulsating Bass <category> Bass'.  This would allow 
for user-defined categories, which might at first glance look like a bad idea 
given the possibility of people using slightly different words to mean the same 
category.  However, I don't think it would really be a problem for the reason 
that any given bank will likely be created by an individual following a 
consistent categorization scheme.

How were you envisioning it in the UI?  I picture it as a third combo box, next 
to the preset name box, which filters the set of presets listed based on 
category.  Selecting 'All' would show the full set, 'Bass' would reduce the set 
to only the bass voices, etc.

I would be happy to implement this feature (and to dig into Brian's banks to 
add the requisite tagging, which would be quite an undertaking).

Original comment by joshua.t...@gmail.com on 18 Aug 2013 at 11:19

GoogleCodeExporter commented 9 years ago
Yes that's exactly how I was thinking of adding it to the preset data. I was 
also debating whether a preset should be able to be part of more than one 
category.

A third combo box is not how I pictured it, but would be simpler to implement 
than what I imagined...

I was thinking that preset browser should show all presets from all banks, 
rather than filtering the current bank.

In terms of UI, I envisaged either a new window, or that the main window could 
switch from "edit mode" (showing the knobs etc) and "browse mode" where it 
shows the category / preset browser. The advantage of this over the combo boxes 
is that the preset list would not disappear once you select a preset, and so 
you could more effectively browse through them.

Original comment by nickdowell on 19 Aug 2013 at 8:32

GoogleCodeExporter commented 9 years ago
Presets can definitely belong to more than one category in my opinion, and it 
wouldn't be any extra trouble to make that happen.

If the preset browser is viewing all presets in all banks, what happens when 
one is chosen?  Is the bank containing the preset loaded, and then that 
particular preset loaded?

How about:
1)  Add an 'All' option to the bank selection dropdown, which would load the 
contents of every bank into one temporary bank.
2)  To make this possible, remove the size restriction on banks.  Do this by 
changing the dynamically allocated presets array to a vector and refactoring 
accordingly.  (I think that this would be a handy feature even without any of 
the other changes described here)
3)  Create a preset browser allowing users to filter presets on both bank and 
category.  For example, filtering on the bank 'All' and the category 'Bass' 
would result in the set of bass voices from all banks.  Filtering on 
'BriansBank03' and 'All' would result in the set of all voices from 
BriansBank03.  These filters could be combined in any way: multiple banks and 
multiple categories.
    This would definitely be best implemented as a new window, in my opinion.  Especially one that could stay open while the user is editing using the main interface.
4)  Make a keyboard shortcut for 'next preset,' and have it apply to either the 
original preset combo box or the preset browser, if it's active.  In the end, 
preset names can only communicate a very limited amount about a voice.  When I 
was first getting familiar with Brian's banks I just played through each voice 
one by one, and users are still going to have to do that.

I think that this is the best way to streamline the browsing process overall.  
Thoughts?  How would you like to go forward?

Original comment by joshua.t...@gmail.com on 21 Aug 2013 at 12:50

GoogleCodeExporter commented 9 years ago
Reflecting on that, I realize I wasn't quite clear/consistent with myself on 
how the preset browser would gather its information/which 'bank' it would use.  
To clarify: I feel that all of the available presets in all banks should be 
consolidated into a single temporary bank (while preserving the information 
about which bank any given preset comes from), and then any browsing should 
occur from within this amalgamated bank.  It should include any user-created 
banks within  ~/.amsynth/banks and /usr/share/amsynth/banks.  This bank would 
be loaded as soon as the preset browser is launched, and would remain the 
active bank for as long as it's open.

Would it be worthwhile to allow users to launch the browser on banks located 
elsewhere on the filesystem?  Personally I don't think it'd be unreasonable to 
require users to put their banks in either of the two directories specified in 
the readme if they want them to be browsable in this way.

Original comment by joshua.t...@gmail.com on 21 Aug 2013 at 2:25

GoogleCodeExporter commented 9 years ago

Original comment by nickdowell on 21 Apr 2014 at 12:30

GoogleCodeExporter commented 9 years ago

Original comment by nickdowell on 21 Apr 2014 at 12:30

GoogleCodeExporter commented 9 years ago

Original comment by nickdowell on 21 Apr 2014 at 12:31