-
Design of the Controller
09/02/2018 at 10:25 • 0 commentsSince my last log I've been busy coming up with the design of the device, in regards to both the layout of controls on the panel as well as the exact control components and microcontroller to use. In this log I'll describe and explain both of these aspects.
Here is a rough 2D sketch of the desired layout of the panel, where all dark grey item are controls (or an LCD in regards to the rectangle component):
Here's a description of each section:
1 - 8
Each of these sections are for controlling each of Turnado's 8 knobs, where each contain a pair of controls - a switched rotary encoder (top) and a single-axis bi-directional thumb joystick (bottom). Both controls are used to control the same software parameter, but together they provide a more intuitive and useful method of control.
The idea is that the pair of controls work together in the following way - you use the encoder to set a 'static' value, and then you use the joystick to 'momentarily' change the value relative to the 'static' value. For example, if you use the encoder to set the parameter value to 64, you can then move the joystick up to change the value between 64 and 127, or down for values 64 to 0. To understand the reasons behind this type of control and interactivity, please see the 'Control Types and Physical Interaction' section of my last log. The push-switch of the encoder will be used as a quick way to reset the parameter value to 0.
I've decided to use a thumb joystick as the momentary bi-directional control as this appears to be the only affordable, commonly-available and compact control/component of this type. However even thumb joysticks aren't completely perfect for this design, as they are dual-axis when I only need a single axis; however I'm just going to leave the second axis disconnected and see if there is a way I can physical disable it (so that the joystick will only move in the vertical axis). These controls also usually come with a push-switch, but again I'll just leave this disconnected here. Ideally I would have liked to use miniature springed wheel lever controls, such as the pitch-bend wheels you find on most MIDI keyboards, however there doesn't seem to be any off-the-shelf versions of these and the one's I did find were too big.
I've decided to use rotary encoders rather than potentiometers, primarily so that the controller will always adjust Turnado's parameter values based on their current values. Encoders essentially just increment or decrement a value, however as potentiometers set an absolute value they could be problematic here. For example, when changing Turnado's preset the software parameter values will likely change - in this situation potentiometers would now be out-of-sync with the software and any adjustments to them will cause the parameters to jump back to the previous preset's value. A couple of other advantages of using encoders - they can include a push switch, which I'll be using for this device; and encoders allow the implementation of acceleration, where the faster you turn it the greater the value change will be. The only disadvantage of using rotary encoders compared to potentiometers is that, as they are endless (they will turn continuousness), they can't visually display the currently value of the parameter they're controlling; however one of the primary reasons of including an LCD on the device is to display these values (see 'LCD' section below for more info).
Dictator
This section is for controlling the Dictator Mode fader of Turnado in the exact same way as that of Turnado's 8 knobs (see above).
Dry/Wet
This is a non-switched rotary encoder for controlling Turnado's dry/wet mix parameter. See the '1 - 8' section above for reason behind using a rotary encoder here.
Random
This is a momentary push-button for triggering Turnado's 'random' button that creates a random preset.
Preset Up/Down
This is a pair of momentary push-buttons for changing Turnado's loaded preset.
LCD (and Ctrl/Param/Value Controls)
The LCD will be used for two main things:
- To display the current values of Turnado parameters
- To configure device settings
As none of the device's controls are able to visually display the current values of the parameters that they are controlling themselves, using an LCD seems to be the best way to do this. The LCD will display the realtime values of Turnado's 8 knobs, dictator fader, and dry/wet mix; based on either the device's control values or MIDI-in values from Turnado itself.
The LCD will also be used to configure the controller's settings, such as MIDI channel and control MIDI CC numbers. To do this it will display a menu of options that will be navigated and set using three rotary encoders:
- Ctrl - selects the control you want to configure
- Param - selects the parameter you want to set
- Value - selects the value you want to set
The Ctrl encoder will be switched to offer a quick way of viewing the menu, but the other two encoders will be non-switched.
The exact LCD I am most likely going to use is a 2.4" 320x240 TFT LCD with a ILI9341 controller chip, which can be used with a Teensy-optimised Adafruit_ILI9341 library.
Layout
I have laid out the controls as such for the following key reasons:
- Related controls are grouped together - probably the most important principle of good user interfaces design
- The 1-8 joysticks are positioned as such for the following reasons:
- They are at the front as these will be the most used controls.
- I've put them all in a single row, rather than in two rows of four like within the Turnado software interface, so that it's easier to access them all at the same time.
- The particular spacing makes it possible for you to control four joysticks simultaneously from just the four fingers of a single hand.
- The Dictator Mode controls - probably the second most accessed controls - are on the top left as I am left handed (but I'm aware this probably won't be the optimum position for most people!).
- All 'preset' related controls - preset up, preset down, and randomise - are grouped together. As they are not likely to be used as often, and their effects are a lot more dramatic (e.g. pressing 'random' will completely change the effects you'll be controlling and be irreversible from the controller) they are places as far away from the commonly accessed controls as possible.
- The LCD is positioned top-centre so that it will be less likely covered by your hand/arm as you are using the controller.
- The LCD controls are positioned under the LCD so that:
- They line up with the menu columns on the LCD that they are controlling
- You'll never need to cover the LCD with your hand/arm whilst using them (which you may do if the controls were instead on the side of the LCD).
- The layout is symmetrical.
- The exact size of the panel is based on the enclosure I am looking at using - the Takachi Electric Industrial CF27-18BB sloped enclosure.
Microcontroller
As mentioned in my last log, I want to use a Teensy microcontroller. In order to connect all needed controls without having to use multiplexers I'm going to need to use the top-of-the-range Teensy 3.6.
The above set of controls and components require the following I/O to/from the Teensy board:
- 9 analogue inputs
- 40 digital inputs
- 4 SPI pins (for the LCD)
- To display the current values of Turnado parameters
-
Criteria for Designing the Controller
08/30/2018 at 18:52 • 0 commentsThe design of a dedicated hardware controller for Turnado depends on the following main set of factors:
- Which of Turnado’s parameters/controls are controllable via MIDI, as well as Turnado's MIDI output functionality
- Which of the MIDI controllable parameters/controls would I like to be able to access via hardware
- How I would like to physically interact with the parameters, and the available off-the-shelf components/controls that would allow this type of physical interactivity
- The needed configuration settings of the device
- The features, I/O, performance and compatibility of my chosen microcontroller
Considering all of these criteria at this early stage of development should help me design the optimum device without having to go through too many design or prototype revisions.
Microcontroller
For this device I'm going to use a Teensy microcontroller, as they're my go-to microcontrollers for any USB-MIDI projects (or almost any microcontroller projects, in fact) due to their strong USB-MIDI support. In particular, I'm most likely going to use a Teensy 3.6 - due to it's large amount of I/O and high performance - so that I'm not likely to run into any pin shortage issues when trying to connect all the needed controls, and so I'm less likely to run into any performance issues when attempting to run an LCD and process high amounts of MIDI data at the same time. The rest of the design of the device will be based off of this, e.g. the LCD I use will need to have proven Teensy compatibility.
Turnado's MIDI Compatibility
Turnado can be controlled by MIDI messages in the following ways:
- The 8 knobs and the bypass switch for each, the Dictator Mode fader, the wet/dry mix fader, the 'random' button, and a large amount of the effects 'expert' controls can be assigned to any MIDI CC controller number
- MIDI program change messages can be used to change presents
In addition to that, Turnado can also send MIDI CC messages for any changes made to the 8 knob values, which will allow both the software and the hardware controller to always be in sync with each other if needed.
Desired Hardware Access
These are the software parameters I would like to be able to have access to from the hardware controller:
- The 8 knobs
- The Dictator Mode fader
- The wet/dry mix fader
- The random button
- Presets changing
From looking at the Turnado MIDI compatibility info above, this should all be possible.
Control Types and Physical Interaction
The main thing I require from a dedicated Turnado hardware controller - which existing MIDI controllers don't provide - is the specific types of controls and physical interaction that the device offers.
The type of control I want to use for controlling Turnado's 8 knobs and the Dictator Mode fader - and what I think is the most novel element of this controller - is a self-centering continuous control (such as a joystick or the classic MIDI pitch-bend wheel) that allows 'momentary' two-way control of the software parameters. This is an essential element of the device, as I find when performing live audio manipulation it is usually done only in short bursts rather than constantly, where a control that 'springs back' is very useful. Also you are able to operate these types of controls with just one finger (compared to dials that usually need to two fingers), meaning you can operate multiple controls (and control multiple parameters) simultaneously with greater ease. While these types of controls aren't uncommon on MIDI controllers, having multiples instances (9 especially) on a single device is quite unique.
Beyond that, all other controls will be very standard (e.g. dials for continuous parameters, buttons for on/off and 'trigger' parameters), but laid out in an intuitive manner that makes sense to a Turnado user.
Device Configuration Settings
Beyond having controls for controlling the Turnado software parameters, there will also need to be a way of configuring settings such as the MIDI messages that each of the controls sends. For example, I'm considering allowing the hardware controller to control multiple instances of Turnado, where each instance listens for messages on a unique MIDI channel - in this case you'll need to be able to easily configure the MIDI channel so that the device can quickly switch to control another instance of Turnado.
Probably the easiest way to provide these types of options on the hardware controller is through and LCD for displaying a menu of options, coupled with some encoders and buttons for controlling the LCD. A second advantage of using an LCD is that it could also be used for displaying the realtime values of Turnado's software parameters.