Showing posts with label Tetra. Show all posts
Showing posts with label Tetra. Show all posts

Sunday, September 19, 2010

Tetra Beta OS 1.2.3b

Tetra Main OS 1.2.3:  Tetra_Main_1.2.3.syx
Tetra Voice OS 1.2.0: Tetra_Voice_1.2.0.syx

Some cool new stuff in this release, details below:
  1. Sequencer Slew added - Slew has been added as a Sequencer destination in Sequences 2 and 4 controlling the slew in Sequences 1 and 3 respectively
  2. Additional Arpeggiator Modes added: Now has Up, Down, Up/Down, Assign (hold the keys down), and Random for 1, 2 and 3 Octaves
  3. Individual Voice Volume control
  4. Multi Mode can now be controlled in full on the Tetra (details below)
  5. New clock mode: V1 Master
    • Voice 1 Tempo is used as the master, similar to MIDI IN
    • In Combo mode with V1 Master on, when you switch the program assigned to Voice 1 several parameters (Unison, A/B mode, Split, Arp and Seq settings and Play Button mode) are kept the same to keep the feel of the combo the same as you select new sounds
  6. New Global: Mode Lock = {Off, Program, Combo}
    • Locks the Interface to either Program or Combo mode so you don't mistakenly switch to the other mode using the program/combo switch.
    • When Mode Lock = Combo, the Tetra will start up in Combo mode
And some bug fixes:
  1. Mopho Keyboard programs now handled correctly
  2. USB Code improved, should help stability and jitter with newer Operating Systems
  3. Arpeggiator can now be turned On and Off via NRPN
  4. LFO Sync to MIDI clock fixed
  5. Inc/Dec buttons keep pitch offset
  6. Pots act correctly in Passthru and Relative modes when the value they are controlling is changed by another source (eg., MIDI or an AP Encoder)
  7. MIDI Clock now being sent at all times in Combo mode using the Voice 1 Clock
  8. In Combo mode, play button behavior when one or more voices was in Normal and the rest in Toggle mode fixed

 UI Details and Changes per mode:

Program Mode (Multi On):
  1. Current Voice displayed on the screen as M# in the upper right, similar to Combo mode
  2. Edit B now selects the next voice and cycles between voices 1 to 4
  3. All controls on the Tetra are locked to the active voice, including the play button
  4. The Global 'Write Basic Patch' writes the basic patch only to the active voice
  5. The Volume Pot controls the Preset Volume on the active voice. The Global Pot Mode setting controls this behavior, as per the Cutoff/Resonance pots
Combo Mode (Multi On and Off)
  1. The Tetra UI acts the same now whether Multi is on or off
  2. You can now change the program on each voice to other combo parts, which is the default behavior. When you are editing a single part of a combo on the name screen, the select encoder will change through combos 1-128, parts 1-4 incrementally. 
    1. Changing a program will not stop the other voices from playing, but will stop the active voice
    2. You can change between the combo and program banks by holding down the inc/dec buttons
  3. Select Encoder and Inc/Dec buttons control whatever is on the screen. If you just changed the Pitch, Attack or Dec/Rel encoders and multiple parameters are displayed, using the Select encoder or Inc/Dec buttons will change all parameters
  4. Name editing has been added for individual parts in the combo
  5. While editing all voices, the volume pot controls the Master volume (MIDI CC#7). While editing a single voice, the volume pot controls only the preset volume of the active voice. The Global Pot Mode setting controls this behavior, as per the Cutoff/Resonance pots.
  6. Voices are no longer turned off when switching to and from global, or when switching between voices
  7. While in Single Voice Edit, the play button controls only the active voice. In V1-4 Edit in Unison, if any voices are playing, the play button turns them all off. If no voices are playing, it starts them all normally.
Combo Mode (Multi On) MIDI Behavior as follows:
  1. Main Combo Editing V1-4
    1. Global Send set to NRPN
      1. Assigned Parameter Encoders send out NRPN on a single MIDI channel (AP 1 sends on the MIDI channel selected in the global settings, AP 2 sends on MIDI channel + 1, etc)
      2. Volume pot sends out CC#7 changes on all 4 channels
      3. All other controls send out a single NRPN on the main MIDI channel, per the Quad section in the manual
    2. Global Send set to CC
      1. Assigned Parameter Encoders send a CC out on a single MIDI channel
      2. Volume pot sends out CC#7 changes on all 4 channel
      3. Other controls send out 4 CC messages for each parameter changed
  2. Single Voice Editing
    1. Global Send set to NRPN
      1. Volume Pot sends out 1 NRPN for Preset Volume
      2. All other controls send out 1 NRPN as normal, on the MIDI channel of the active voice
    2. Global Send set to CC
      1. Volume Pot doesn't send anything
      2. Other controls send 1 CC if the parameter they are controlling has an assigned CC # on the MIDI channel of the active voice

Thursday, March 18, 2010

Prophet '08 Encoder Issues

Figure we'll start this blog off with the big issue, I'll see if I can explain the problem a little more clearly so people know what's going on and what the solutions are right now and what's coming up:

Physically the encoders work by several small metal "brushes" attached to the rotating shaft. Each one of these brushes slides over several spaced out metal plates as you turn the encoder. When a brush hits one of the plates it connects one of two signal pins coming out of the encoder to a high voltage, then when it slides off the plate, the voltage drops back to zero. The plates that the brushes slide over are spaced in such a way that when you turn the encoder it sends out pulses on the two pins that are phased either +90 degrees or -90 degrees depending on the direction you are spinning. This is known as a quadrature or incremental rotary encoder (http://en.wikipedia.org/wiki/Rotary_encoder#Incremental_rotary_encoder)

Anything interfering with the connection from the brush to the metal plate is going to cause the electrical connection to drop to zero very quickly. Instead of a nice clean pulse wave, we get a pulse with a lot of holes. Depending on the timing, this will look to the processor like a very quick direction change, a slightly longer direction change (about one full pulse length) or just totally invalid data. On the Prophet '08, as many of you well know, usually when this happens you seem to get stuck between two values and can't go up or down further until you slow down the turn. We'll call the interference between the brush and the metal plates 'noise' for now.

So we know that a noisy encoder will cause those jumpy values; the more noise, the more jumpy. To solve this problem let's start by having a look at what can cause that noise:
  1. Oxidation of the metal causes a jumpy electrical connection when the brush passes over due to patches of low connectivity on the metal surface.
  2. Turning the encoder faster causes the brushes to bounce up and down slightly as they hit the turn, if they bounce too high they lose connection with the plate and breaks the electrical connection.
  3. Pulling up on the encoder shaft can cause the brushes to hit less solidly as well because of the slight give in the housing.
  4. There is a lubricant/grease inside each encoder that helps the brushes connect. If this is removed or washed off it can have severe effects on the output. It also slowly wears off due to oxidation and just drying up as the encoder ages.
So what can we do to solve this? We want to do anything we can to improve the electrical connection of the spinning brushes. Going backwards from what causes the noise we have two main hardware solutions: bend or push the brushes down harder against the plates as they turn (but not too hard to cause more bouncing) or add connectivity in the form of a lubricant that will prevent the brushes from bouncing and improve the electrical conductivity when they do pass over the plates.

This is why we started sending out Deoxit tubes to anyone who had the encoder issues. We found that applying a couple drops of deoxit to all the encoders fixes close to 95% of the boards we've seen. It does a good job of removing the oxidation and keeps the brushes sliding over the surface smoothly. It's likely that a batch of encoders had the lubricant washed off and putting a little additional on will get it running smoothly again.

However there are the more extreme cases where deoxit does not fix the problem. Since we test the encoders before sending the instruments out it's likely they looked OK during testing but after a little oxidation in the real world and some mild usage and the problem reared it's ugly head. Maybe the metal of the brushes is a bit weaker in that batch, maybe the deoxit isn't strong enough to take all the oxidation off, we don't know. At this point we have only a couple options... replace all the encoders or look a bit deeper and figure out how to compensate in software.

I've been working on a software fix for the encoder issues, both preventing a low to mid grade of noise from causing the encoders to get stuck on values or change direction and a more general revamp of the encoder processing to improve the responsiveness. I'm a knob tweaker at heart and not being able to do a filter sweep with a flick of the fingers on a Prophet '08 breaks my heart. Sadly, It has turned out to be a much more complicated issue than hoped so it's taken a while to iron out. But do not lose hope! The Mopho Keyboard will have greatly improved responsiveness on the encoders which will be ported back as best I can. The response needs to be calibrated for the non-detented encoders and I'll run it against bad boards I've received to see if I can get them responding at least in a stable way.

I'll post an update here as soon as I have a beta Prophet '08 and Tetra OS ready with some encoder improvements to get a little feedback on the responsiveness.