Project-jos-320c-2021

From CCRMA Wiki
Revision as of 14:11, 16 May 2021 by Jos (Talk | contribs) (GUI Prototype: Add PGM GUI and give progress update)

Jump to: navigation, search

JOS 320C Project

Goals

  • Make my first "meta plugin" that writes out files for other plugins to read
  • Learn how to make better GUIs for plugin Editors

Plan

  • Look at some 220C projects for general orientation on project reporting
  • Read ahead in the course schedule to learn about GUI options
  • Decide on a file format: XML? Plain text? Encrypted?
    • I am starting with plain text, and planning to include a hash string generated by a secret algorithm to detect modification if/when needed
  • I am now reading all GUI-related JUCE tutorials that are new since I last looked

GUI Prototype

  • JUCE GUI Editor used (very quick)
  • Band-setting sliders will be programmatically laid out dynamically
    • Later planning to draw the T60 curve directly, like many EQ interfaces these days
  • Configured for waveguide string loop filter
    • Can also be used to design late reverb
  • Update 2021-05-06:
    • Changed name T60Designer to LoopFilterDesigner
    • Letting go of Reverb case for now (planning a separate plugin)
    • Created LoopFilterDesignerGUI from T60DesignerGUI and added a Tabbed Component
    • Moved T60DesignerGUI to Tab 1
    • Created a new IRDesignerGUI for Tab 2
  • Revised GUI prototype with Tab 1 and 2 selected, respectively:

T60Designer.png IRDesigner.png

  • Update 2021-05-08:
    • Started prototyping the GUI again, this time in PGM
    • PGM a little harder to work with at this point, but run-time editing is huge, and XML GUI description much better
  • Update 2021-05-16:
    • Remade GUI in PGM and changed its layout a bit:

LFD-GUI-2021-05-16.png

    • The reason for making the plot more prominent is to facilitate direct manipulation, as in the EqualizerExample
    • Now there is no need to show all the band design parameters (which requires programmatic layout)
    • Due to bug(s), I cannot create Classes in PGM (for editing groups of widgets all at once)
    • I am suspending efforts on GUI development and moving to implementations under the hood
    • I reported the bugs and may eventually work to debug PGM in order to resume GUI development

Project Source

See the jos directory of the 320C-2021 GitLab project which can be cloned as follows:
git clone git@cm-gitlab.stanford.edu:jos/320C-2021.git

T60 Designer Help

  • T60 Designer is an audio plugin that designs, tests, and exports digital filters to other compatible audio plugins.
  • The filter design is specified as the desired decay-time in each frequency band.
  • Decay time is specified by T60, which means "time in seconds to decay by 60 dB" (a term commonly used when studying reverberation).
  • Presently two filter types can be specified:

Test Pluck Help

When T60 Designer is configured to design a "String Filter", then the "Tester" panel in the lower-right corner provides a Pluck button for hearing the sound of a plucked waveguide string using the loop-filter designed by T60 Designer. When you like what you hear, you can Save it out as a Preset that any compatible plugin can use.

Audio Plugin Development Workflow Summary

  1. Throw together a first GUI using the JUCE GUI Editor (design step)
  2. Implement the plugin
  3. Recreate the GUI using Plugin GUI Magic
  4. Develop final image assets for a professional GUI appearance and drop them in