Skip to content

Introducing new effects modules

Igor Zinken edited this page Feb 12, 2020 · 4 revisions

You can easily introduce a new effects processor though there are some steps to take before you have integrated it within Efflux. In order to make your new custom effect usable (and save-able) within the program be sure to follow the next checklists:

Update model

Keep legacy support and backwards compatibility in mind. Basically loading songs/instrument presets that were saved before your processor was introduced should initialize your processor automatically using default values (and in its disabled state).

  • Update instrument-factory.js to create the default properties for your processor
  • Update instrument-def.js (used for auto complete in IDE's)
  • Update song-validator.js to set the default processor properties when loading a legacy song (see transformLegacy()-method)
  • Update song-assembly-service.js to serialize and deserialize uses of your processor in the songs instruments, keeping legacy support in mind. Also increment the factory version to easier identify whether saved projects should be transformed to include the new processor.

Update audio renderers

  • Update audio-service.js to instantiate your processor for use with the AudioContext (see setupRouting()-method) and to create the node structure for your processor (see applyModules()-method and related module-factory.js)
  • Update module-router.js so your processor can be connected in relation to other modules within the instrument (see applyRouting()-method)

Create user interface

  • Add the processor controls to instrument-editor.vue (or its child components when appropriate). Create reactive properties that update the renderer layer on change. Also invalidate the current instrument preset when changes are made.

Making the processor an automatable module

In case your processors properties should be automatable during playback:

  • Define the parameters in automatable-parameters.js (also add/create list of short codes)
  • Update module-routes.js to apply the changes of your processor gradually (see applyModuleParamChange()-method)
  • Update module-param-handler.js so short codes can be used when writing directly in the track editor
  • Update module-param-editor.vue so the parameters can be automated in the module automation popup window