HS Expander version 2

Make sure to read up on the HS Expander v1 first.

Now that you know all the nitty-gritty details (you did read it, right?) lets take a look at the much bigger version 2.

 

THIS PAGE IS A WORK-IN-PROGRESS!

(Ab)using the Popcorn Hour C-200's front panel

Look at this beauty. Supposed to be a multimedia thing of sorts. I'm more interested in that pretty 192x64 LCD, buttons and USB ports.

The hardware inside is actually hackable by the way, you can put Linux on this thing, even! Check this blog out for more info.

But that was a bit out-of-scope for me personally.

What caught my eye on aforementioned blog is that the hardware used for the front panel is very bog-standard I2C and IR stuff, meaning that controlling the big LCD and fetching button presses only requires 3 connections on an Arduino.

Here's the front panel hardware liberated from its enclosure. On the back they've put all the connection on the silkscreen!

So here's what kind of hardware we are dealing with:

- LCD screen is a cheap clone of the Orient Display AMG19264C

- MAX7325 I2C I/O Expander as the LCD interface,

- LM27966 I2C LED driver for the LCD backlight,

- PIC16 unmarked chip that translates button presses into NEC IR codes, transmitted through the RC_OUT pin.

- A power button with integrated LED,

- 7 navigation buttons,

- Two USB ports. These have their own connector and cable, could be handy for reprogramming the Expander without taking it apart!

Important to note is that the POW_ON_LED pin simply controls a white LED within the power button, but the STB_LED pin activates an amber LED, and also resets the MAX7325 and LM27966, switching off the backlight.

Pondering on the design for this new iteration of the Expander. To the left you can see some designs for the 192x64 LCD.

I think I want to use this big LCD to give an overview of settings.

And use a second 16x2 LCD above the 3 encoders to show what parameters are currently assigned to them for editing along with their values. This LCD is much faster to update, which will be nice for fast editing.

I also want to do a new approach to the parameters themselves. On version 1 all parameters were always exposes, even if they were not active. Some parameters also could be merged together.

A great example of this is the operator tuning:
- COARSE TUNE (MUL): sets the octave (16 in total),
- FINE TUNE (FT): sets the semitone,
- DETUNE 1 (DT1): fine detune of steps of ~1.6 cents,
- DETUNE 2 (DT2): coarse detune of 600, 781 and 950 cents.

Then there's the tuning mode as well:
- RATIO: sets frequency according to the note assigned to this voice, modified by the values of COARSE/FINE TUNE, DETUNE 1 and DETUNE 2,
- FIXED: sets frequency according to the formula: (2^DT1) * (MUL * 16) + FT . As you can see DETUNE 1 now acts more like a tuning rather than a detune.

Just exposing all these parameters means the user has to keep all this in mind whilst changing values. This is incredibly un-intuitive.

Instead I'm planning to show simplified parameters, depending on the tuning mode set.
- In RATIO mode: shows OCTAVE and SEMITONE as one parameter and DETUNE as another. Most FM synths show the actual multiplier, but I feel its more straight forward to just show the musical values instead.
- in FIXED mode: just shows the FREQUENCY.

Similar things can be done for other parameters. This makes for less editing steps, with the steps themselves being much more easy to use.