Audio effects support in most audio editors suck. The actual quality of the effects is not a problem, in fact, the effects bundled with Cubase SX 3.0 are incredible. The problem is in terms of the user interface and integration. The value of effects is critical in a studio – it is effects that add subtlety, professionalism and the feeling of a great recording. Take an electric guitar for example. If you record a dry electric guitar and don’t add any effects, it sounds rather plain and boring. If you pan it in stereo, add compression, a little reverb and work the EQ, you have an entirely different sound. Clearly, effects are important, and users need to be able to get to them easily.
This week I have been thinking about how to best represent effects in Jokosher. Before I started to think about a design, I first looked at the existing problems with effects support in competing multi-trackers. They are:
* Effects are typically assigned independently to independent tracks, with no knowledge of the physical world. There is no way of figuring out which effects make sense with which types of tracks. As an example, I want to know which effects make most sense with a guitar and which with drums, cello, bass or vocals.
* The order of the effects is essential. Most multi-trackers make effect ordering difficult.
* Effect support in other multi-trackers often suffers from ‘button overload’, with stacks of buttons, controls and other clutter filling up windows.
* Many effects in competing applications use unusable controls such as rotary dials and knobs. These are difficult to control with a mouse.
* Templates are often limited, badly documented and difficult to use.
While thinking about these problems, drawing some sketches and applying some information flow, I have developed what I consider to be a fairly solid design:
When thinking of a proposed UI, my first consideration was to lay out the effects chain from left to right. Many people (in left-right writing countries) think in this way, and it also maps to stomp boxes that are a familiar sight within guitarist’s bedrooms everywhere. When the user wants to apply an effect, they apply it to a specific instrument, and the above dialog pops up. With the Jokosher design thinking in terms of *instruments* and not tracks, it gives us a number of benefits that can be used to help choose the right effects. In the above design I have made the assumption that the user is adding effects to a guitar, and you can see the guitar on the left side of the box.
To add an effect, the user selects it from the top-left combo box and clicks the + button. the effect is then added to the right of any existing effects in the center of the dialog box. The user can then re-arrange the order of the effects by dragging the boxes from the left to right. If the user wants to configure a specific effect, they click the effect button in the middle of the dialog and the settings window for that effect pops up.
One of the main problems when designing the UI was making the process of selecting a specific effect and placing it in the right order simple. On one hand you could select the location first and then add the effect, or you could select an effect and add the location afterwards. After fighting with these issues for a few hours I came to the conclusion that most musicians don’t actually care about the ordering of the effects. The user will simply want to (1) pick an effect and (2) hear it. This is why in my current design, the new effect is automatically added to the right of existing effects. This way, as soon as you see the dialog, you can select an effect and add it to the chain – if you want to re-order the effects, you just drag them left and right and the other effects re-order automatically.
Another problem I faced was making it easy to apply similar effects to lots of tracks. As an example, when I record LUGRadio, I apply compression and EQ to all five tracks. Currently I have to apply this manually, and it is a pain. Unfortunately, there is no easy way to do this from a specific instrument’s effect dialog (I spent hours trying to solve this), so I have deferred this as an issue that effects *presets* solve.
Speaking of which, let me explain how effects presets will work in Jokosher. One of the problems with effects plug-ins is that there are tonnes of effects, but its difficult to know which ones to choose, and how to combine them to solve a particular audio problem. It is like having a collection of paints and not knowing how to make the right shade that you want. This has been in the forefront of my mind since the original design, and this is part of the reason why I wanted to ensure that we don’t use tracks and instead use *instruments*. When the user selects an instrument, it not only maps the physical world to the virtual world (a guitar in the physical world is recorded in Jokosher as a guitar instrument), but it also limits the scope for that instrument. This means that we make reasonable guesses for the types of effects used on that instrument.
As an example, lets say I add a guitar to the composition. In the effects dialog above, the top right of the dialog would then contain a series of presets for guitars. As an example, one preset may combine certain compressor, EQ, delay and chorus settings to make a great metal guitar sound. We could also have presets for rock, blues, acoustic, and others. Sure, it means we depend on certain LADSPA plug-ins, but I am more interested in delivering a solid user experience than worrying about dependency issues. Presets will make Jokosher simple to use, and a suitable preset infrastructure will make people able to distribute presets easily. This is all planned for 0.2.
In the above dialog design, the presets combo is on a shaded area. I wanted to ensure that presets are ‘part of the furniture’ when it comes to dialogs and not a specific control to that particular window’s context. This is why I used the shaded area, and it is why it is in the top right part of the box – this makes the weighting of the dialog make sense when it comes to diagonal reading patterns. The presets will be across a number of different dialogs where it makes sense.
One of the issues in terms of dealing with LADSPA plug-ins is that the GUI for each plug-in needs to be auto-generated, and [I have already got some code up and running for this](https://archivedblog.jonobacon.com/?p=724). Although this will be the case for the vast majority of plug-ins, certain specific plug-ins, namely compression and EQ will have custom UIs designed for them and be built into Jokosher not as plug-ins, but as features (they will still use the LADSPA plug-in though). This is because (a) virtually all users will use those features, and (b) EQ in particular does not map well to horizontal sliders and instead needs vertical controls. All LADSPA plug-ins that are used in Jokosher will be hooked into the preset engine so that LADSPA plug-ins can have sensible presets shipped with Jokosher.
With the UI side of things solidified in my head, I am going to start coding it up. I will keep you posted. 🙂