Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Decompose Plug-in manager #1180

Closed
AnitaBats opened this issue Jun 28, 2021 · 4 comments
Closed

Decompose Plug-in manager #1180

AnitaBats opened this issue Jun 28, 2021 · 4 comments
Assignees
Labels
Planning Large tasks that need to get decomposed into smaller issues and tracking-bugs
Milestone

Comments

@AnitaBats
Copy link

AnitaBats commented Jun 28, 2021

  1. Details are TBD - needs meeting
  2. Decomposition needed

Design attached #999

@AnitaBats AnitaBats created this issue from a note in Release 3.1 (To do (Dev)) Jun 28, 2021
@AnitaBats AnitaBats added this to the Sprint 1 milestone Jun 28, 2021
@shoogle shoogle added the Planning Large tasks that need to get decomposed into smaller issues and tracking-bugs label Jun 28, 2021
@gera-gas gera-gas moved this from To do to In progress in Sprint 1 - Release 3.1 Jul 11, 2021
@gera-gas
Copy link
Contributor

gera-gas commented Jul 12, 2021

Description of task decomposition.
All estimation times have two borders: this is not 100% precision time frame, this is the approximate time window for solving task.

  1. Preferences for the custom plugin search path.
    1.1 Create the preference type, by analogy BoolSettings, but for describing plugins paths that will contain a wxArrayString objects, something like - ArrayStringSettings or using StringSetting for economy time.
    1.2 If we using StringSetting, the path will be separated by ;, and this is a not a problem to parse this by wxTokenizer.
    1.3 Second, need patch PluginManager::FindFilesInPathList() with additional search directories from settings.
    Estimate: 4 - 6 hrs.

  2. Check method.
    For each plugin type, needed a static method for validation each plugin instance of each plugin type, something like: VSTEffectsModule::Check() and VSTEffectsModule::DiscoverPluginsAtPath().
    2.1 Get information about Audacity CLI command (2,3 hrs).
    2.2 Run a new Audacity process with check command with output result to STDOUT.
    2.3 Catch and parsing STDOUT after this on success.
    2.4 Create this check method for each plugin type: VST (1 hrs), AU (4,5 hrs), VAMP, LV2, LADSPA (6,8 hrs).
    2.5 Call this methods at startup (for example in PluginManager::Initialize() or CheckForUpdates() for comfortable calling from dialog (when user press on Rescan plugins) and collect failed information (2,3 hrs).
    2.6 Output dialog with incompatible plugins list (3,4 hrs).
    Estimate: 18 - 24 hrs + possible time buffer for loss while switching and testing on all OS. (3,4 hrs).

  3. Remake PluginRegistrationDialog dialog.
    3.1 Remake wxListCtrl of PluginRegistrationDialog::mEffects to add "Version", "Type" and "Enabled" collumn (5,8 hrs).
    3.2 Remove extra functionality like: "State" collumn, "New" radio button, buttons "Select All", "Enable", etc (4,6).
    3.3 Add callback on button "Rescan plugins", "Done" (2,3) hrs.
    3.4 Final behavior tests (2,4) hrs.
    Estimate: 13 - 21 hrs.

Total estimate: 35 - 51 hrs.

@crsib @Paul-Licameli could you review, please.

@gera-gas gera-gas moved this from In progress to Review in progress in Sprint 1 - Release 3.1 Jul 13, 2021
@AnitaBats AnitaBats modified the milestones: Sprint 1, Audacity 3.1 Jul 13, 2021
@AnitaBats AnitaBats added this to To do in Sprint 2 - Release 3.1 via automation Jul 14, 2021
@AnitaBats AnitaBats moved this from To do to Review in progress in Sprint 2 - Release 3.1 Jul 14, 2021
@Paul-Licameli
Copy link
Collaborator

This looks like a good decomposition. But I think part 1 might make do simply with existing StringSetting, splitting the string on ; characters.

Questions.

  • Do you have at least one example of LADSPA, LV2, Vamp, VST2 plug-ins that you can test with?
  • This is still supposing only VST2 support -- not yet VST3. Correct?
  • I recall we said the new dialog also needs a "failed" state. Instead of one choice in a drop-down menu as now, perhaps a line of the list control is disabled. Do you account for that?
  • If the user interface specification is firm enough, perhaps you can attempt step 3 first, to get early feedback and testing. While you have not yet implemented validation for LADSPA, LV2, and Vamp, you might simply always make them "failed."

The user interface can be sent to review and testing, while you concurrently continue working on the AU, LADSPA, LV2, Vamp cases. And perhaps each of those becomes a separate PR.

@Paul-Licameli Paul-Licameli moved this from Review in progress to Reviewer approved in Sprint 2 - Release 3.1 Jul 27, 2021
@gera-gas
Copy link
Contributor

1 - I can download this plugins or at leat build empty plugins for AU, VST2, LV2 and LADSPA.
2 - yes, correct.
3 - yes, I remember that about "failed" state.
4 - okay
I agree about separate and move UI developing part to first order.

@AnitaBats
Copy link
Author

Decomposition is done

Release 3.1 automation moved this from To do (Dev) to Done Aug 17, 2021
@AnitaBats AnitaBats assigned vsverchinsky and unassigned gera-gas Oct 28, 2021
@AnitaBats AnitaBats added this to To do in Sprint 8 - 3.1 Stabilisation via automation Oct 28, 2021
@vsverchinsky vsverchinsky moved this from To do to In progress in Sprint 8 - 3.1 Stabilisation Nov 2, 2021
@vsverchinsky vsverchinsky moved this from In progress to To do in Sprint 8 - 3.1 Stabilisation Nov 9, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Planning Large tasks that need to get decomposed into smaller issues and tracking-bugs
Projects
No open projects
Development

No branches or pull requests

5 participants