Difference between revisions of "Project-jos-320c-2021"

From CCRMA Wiki
Jump to: navigation, search
(GUI Prototype: Changed plugin name to LoopFilterDesigner, moved T60Designer to a Tab, and added an IRDesigner Tab)
(26 intermediate revisions by the same user not shown)
Line 1: Line 1:
== JOS 320C Project Goals ==
+
= JOS 320C Project =
 +
 
 +
== Goals ==
  
 
* Make my first "meta plugin" that writes out files for other plugins to read
 
* Make my first "meta plugin" that writes out files for other plugins to read
Line 6: Line 8:
 
== Plan ==
 
== Plan ==
  
* Look at some 220C projects [https://ccrma.stanford.edu/courses/220c/] for general orientation on project reporting
+
* Look at some [https://ccrma.stanford.edu/courses/220c/ 220C projects] for general orientation on project reporting
* Read ahead in the course schedule [https://ccrma.stanford.edu/courses/320c/] to learn about GUI options
+
* Read ahead in the  [https://ccrma.stanford.edu/courses/320c/ course schedule] to learn about GUI options
 
* Decide on a file format: XML? Plain text? Encrypted?
 
* Decide on a file format: XML? Plain text? Encrypted?
** I am now thinking plain text, including a hash string generated by some secret algorithm to detect modification if/when needed
+
** 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 [https://juce.com/learn/tutorials 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:
 +
[[file:T60Designer.png|600px]]
 +
[[file:IRDesigner.png|600px]]
 +
 
 +
== Project Source ==
 +
 
 +
See the <tt>jos</tt> directory of the [https://cm-gitlab.stanford.edu/jos/320C-2021  320C-2021 GitLab project] which can be cloned as follows:<br/>
 +
<tt>
 +
git clone git@cm-gitlab.stanford.edu:jos/320C-2021.git
 +
</tt>
 +
 
 +
== 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 [https://ccrma.stanford.edu/~jos/mdft/Audio_Decay_Time_T60.html T60], which means "time in seconds to decay by 60 dB" (a term commonly used when studying [https://ccrma.stanford.edu/~jos/pasp/Artificial_Reverberation.html reverberation]).
 +
* Presently two filter types can be specified:
 +
** String Filter (loop filter used in a [https://ccrma.stanford.edu/~jos/swgt/ digital waveguide string model])
 +
** Late Reverberator (feedback filter used to simulate [https://ccrma.stanford.edu/~jos/pasp/Air_Absorption.html air absorption] in an [https://ccrma.stanford.edu/~jos/pasp/Acoustic_Wave_Propagation_Simulation.html acoustic wave propagation model])
 +
 
 +
== 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 ==
 +
# Throw together a first GUI using the [https://www.youtube.com/watch?v=mJbXZgIW6xs JUCE GUI Editor] (design step)
 +
# Implement the plugin
 +
# Recreate the GUI using [https://foleysfinest.com/developer/pluginguimagic/ Plugin GUI Magic]
 +
# Develop final image assets for a professional GUI appearance and drop them in

Revision as of 18:22, 6 May 2021

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

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