User Tools

Site Tools


chaos_matrix

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
chaos_matrix [2009/12/13 12:16]
jackchaos
chaos_matrix [2016/06/27 20:18] (current)
psykhaze
Line 1: Line 1:
 +====== Chaos Matrix ======
 +
 ===== Introduction ===== ===== Introduction =====
 +
 Chaos Matrix is a programmer for an Oberheim Matrix 1000 analog synthesizer built by [[http://​www.midibox.org/​dokuwiki/​doku.php?​id=jackchaos|Patrick Manderson]]. It's capable of manipulating all 126 voice parameters including 10 programmable matrix modulations buses, ramp generators, 5 point tracking generator, 3 five stage envelopes, 2 oscillators,​ 2 LFOs, and much more. Chaos Matrix is a programmer for an Oberheim Matrix 1000 analog synthesizer built by [[http://​www.midibox.org/​dokuwiki/​doku.php?​id=jackchaos|Patrick Manderson]]. It's capable of manipulating all 126 voice parameters including 10 programmable matrix modulations buses, ramp generators, 5 point tracking generator, 3 five stage envelopes, 2 oscillators,​ 2 LFOs, and much more.
  
 It features edit buffer synchronization for visual feedback and inspection of all Matrix 1000 voices parameters, patch compare, patch init, advanced performance options for some parameters as well as containing all 1000 original patch names. Seeing patch names instead of numbers alone, makes it a lot easier to remember your favorites. It features edit buffer synchronization for visual feedback and inspection of all Matrix 1000 voices parameters, patch compare, patch init, advanced performance options for some parameters as well as containing all 1000 original patch names. Seeing patch names instead of numbers alone, makes it a lot easier to remember your favorites.
  
-Chaos Matrix ​is currently a work in progress ​and is nearly complete. It was built with help from the MBHP (MidiBox Hardware Project) using the MIOS operating system. It uses 1 DIN module, 1 AIN module, 1 DOUT module and 1 core with a PIC18F4620 microprocessor along with a custom application built with the C skeleton interface. ​+Chaos Matrix ​was completed ​in March 2010 after installing the MIDI Merger unit, and building a rear panel with jacks power plug and switch. It was built with help from the MBHP (MidiBox Hardware Project) using the MIOS operating system. It uses 1 DIN module, 1 AIN module, 1 DOUT module and 1 core with a PIC18F4620 microprocessor along with a custom application built with the C skeleton interface. The internals of a MIDI-MAN MIDI Merger 2x2 were used to provide the 2 MIDI input merging.
  
  
-Forum announcement here: +Forum announcement here: [[http://​midibox.org/​forums/topic/13313-chaos-matrix/​|Choas MAtrix Announcement]]
-[[http://www.midibox.org/​forum/index.php/topic,​14240.0.html]]+
  
 [[http://​www.flickr.com/​photos/​19562549@N00/​4163202942/​|{{http://​farm3.static.flickr.com/​2596/​4163202942_47d93fd6f3.jpg}}]] [[http://​www.flickr.com/​photos/​19562549@N00/​4163202942/​|{{http://​farm3.static.flickr.com/​2596/​4163202942_47d93fd6f3.jpg}}]]
  
-[[http://​www.youtube.com/​watch?​v=PJMrMQk5lrk|YouTube video demonstration.]]+{{youtube>PJMrMQk5lrk?large}} 
 +{{youtube>​9JWWteQ1vSQ?​large}} 
 +{{youtube>​y3nSdrBT80M?​large}}
  
  
 +=== Current Status (updated 20100301) ====
  
 +  * Software complete. Beta source code available on [[http://​midibox.org/​forums/​topic/​13313-chaos-matrix/​|this post]]
 +  * How-To Build document still needs more content
  
-=== Current Status ​(updated 20091212) ====+===== Features ===== 
 +Almost all communication from the Chaos Matrix to the M1000 is made via MIDI system exclusive messages. Non-registered parameter numbers were not implemented in the Matrix 1000 firmware despite what the manual states. Some communication from the M1000 to the Chaos Matrix is necessary however. 
 + 
 +=== Real-Time Modulation Control === 
 +All button clicks and knob twists on the live panel send sysex voice parameter changes by default. Oscillator 1 and 2 frequency is controlled by rotary encoders to improve tuning accuracy. The rest of the knobs are potentiomenters. The pulse width potentiometers are dual purpose. In one mode, they adjust the pulse width to a fixed duty cycle, in another mode, the same potentiometer adjust the modulation depth of the pulse width controlled by LFO2. These two modes can be toggled by clicking on the pulse waveform button. The sync button cycles through 4 sync modes, LFO waveform buttons cycle through the 7 available waveforms. Oscillator click toggles click on/off as well as enabling the noise waveform. 
 + 
 +=== Patch Initialization === 
 +Voice parameters can be initialized to a default setting. Voice edit initialization is a good starting point to begin creating a new patch from scratch. The initialized parameters are sent to the M1000 so the display on the Chaos Matrix matches what is heard on the Oberheim. 
 + 
 +=== Edit Buffer Synchronization === 
 +When selecting a new patch, the edit buffer is requested from the M1000 and processed by the Chaos Matrix, updating the status of all LEDs and parameters in the soft panel. When the edit buffer is received, you can inspect the matrix modulation, ramps and tracking generator parameters for all the patches in the M1000. When you tweak any of the live panel controls, the original value as well as the newly adjusted value is displayed. 
 +This feature requires additional MIDI cables to route the MIDI out of the M1000 back to the MIDI in of the Chaos Matrix.  
 + 
 +=== Patch Compare === 
 +When editing patches, the patch compare feature lets you compare your current edit to the original patch.  
 + 
 +=== Saving Voices === 
 +In the edit menu, select the 2nd page and select a patch location ​(0-199to save your current patch. 
 + 
 +=== Voice Names === 
 +The M1000 doesn'​t handle voice names like the Matrix 6/6R, they are simply ignored and never stored. However, each and every patch name (published when the M1000 was released) was painstakingly included in the Chaos Matrix firmware and is displayed while browsing patches. Seeing patch names on the LCD instead of numbers alone, makes it a lot easier to remember your favorites. 
 + 
 +=== Enhanced Performance Options === 
 +Due to the M1000 processor lag when adjusting parameters by sysex, the filter frequency control can optionally send continuous controller messages which are then handled by a matrix modulation bus. When this feature is enabled, the first free bus is used to route lever 3 (breath controller) to filter frequency. The frequency knob will then send continuous controller messages on the current MIDI channel.
  
-  * The electronics need to be mounted inside the wooden enclosure. 
-  * Rear panel with MIDI & power jacks 
-  * A MIDI merge has to be built, its necessary for the edit buffer sync feature without the need of a PC. 
-  * The encoder setup isn't perfect, I still get occasional skipping. 
-  * Software 99.9% complete. 
  
  
Line 43: Line 68:
  
 After all my hard work, I didn't want to invest any more money and time on something that was ugly and costly and didn't work as intended. After all my hard work, I didn't want to invest any more money and time on something that was ugly and costly and didn't work as intended.
-For the next few years the prototype sat in my office. Occasionally I would turn it on and play it a while. Eventually I got tired of looking at an incomplete project and decided to give it another shot. This time, sticking to the basics... ​keep it simple, stupud!+For the next few years the prototype sat in my office. Occasionally I would turn it on and play it a while. Eventually I got tired of looking at an incomplete project and decided to give it another shot. This time, sticking to the basics... ​keeping ​it simple.
  
 ===== Panel Design ====== ===== Panel Design ======
Line 51: Line 76:
 [[http://​www.flickr.com/​photos/​19562549@N00/​4022577298/​|{{http://​farm3.static.flickr.com/​2567/​4022577298_566f1a60ea_m.jpg}}]] [[http://​www.flickr.com/​photos/​19562549@N00/​4022577298/​|{{http://​farm3.static.flickr.com/​2567/​4022577298_566f1a60ea_m.jpg}}]]
  
-The redesign of the panel began with inspiration from a few classic analog synths: The panel to the Oberheim OBX, Roland Jupiter 8 and Jupiter 6. I liked how simple the two rows of controls were laid out on the Jupiter 8 and how easy it was to see the flow of synth parameters. I knew that the Chaos Matrix would have to have no more than two rows of controls and they would have to fit in 24 inches of the "Live Panel" and the rest of the parameters would be menu driven from the "Soft Panel"​.+The redesign of the panel began with inspiration from a few classic analog synths: The panel to the Oberheim OBX, Roland Jupiter 8 and Jupiter 6. I liked how simple the two rows of controls were laid out on the Jupiter 8 and how easy it was to see the flow of synth parameters. I knew that the Chaos Matrix would have to have no more than two rows of controls and they would have to fit in 24 inches of the "Live Panel" and the rest of the parameters would be menu driven from the "Soft Panel". FrontPanel Express file is attached to [[http://​midibox.org/​forums/​index.php?/​topic/​13313-chaos-matrix/​|this post]]. Please note: I mistakenly didn't engrave the OSC-LFO pots with the negative, center and positive markings. The software currently treats those parameters in the positive ranges only. If you build one of these, let me know if I can assist in updating the firmware to accommodate both positive and negative. The cost of the panel through FrontPanel Express was approximately $175 with shipping in the USA.
  
 === Live Panel === === Live Panel ===
Line 73: Line 98:
 Pulse waveform can be enabled by toggling the pulse button and altering its shape with the "​Width"​ knob below it. Click the pulse button a 2nd time the button blinks and any adjustments to the "​Width"​ knob instead adjusts the pulse width modulation depth to LFO 2. Pulse waveform can be enabled by toggling the pulse button and altering its shape with the "​Width"​ knob below it. Click the pulse button a 2nd time the button blinks and any adjustments to the "​Width"​ knob instead adjusts the pulse width modulation depth to LFO 2.
  
-DCO2 Click/Noise button is a 3 state button allowing you to enable the noise wave without ​needed ​an additional button. When noise is enabled, the LED blinks.+DCO2 Click/Noise button is a 3 state button allowing you to enable the noise wave without ​the need of an additional button. When noise is enabled, the LED blinks.
  
 The Sync button toggles the 4 oscillator sync modes. The Sync button toggles the 4 oscillator sync modes.
Line 80: Line 105:
 === Filter Section === === Filter Section ===
  
-The filter to envelope modulation modulates the cutoff frequency to envelope 1 by default when editing preset patches. +The filter to envelope modulation modulates the cutoff frequency to envelope 1 by default when editing preset patches. ​The Matrix 1000 firmware has bug where envelope 1 sustain isn't handled over its individual sysex parameter message. The work-around simply sends a complete packet of parameters for the entire voice when sustain ​is adjusted 
-If user patch is initialized, ​the modulation ​is routed to envelope 3 instead.+
  
 Some of the parameters sent as system exclusive messages causes the Matrix 1000 to hang. If you're playing notes and change some of the parameters, the notes will hold for a brief moment. Most of the hanging is overcome by simply controlling the interval of messages being transmitted over MIDI for each parameter. Most behave fine and the message can be sent at normal speed, but for others, the transmit interval was reduced in order to compensate for the hanging. ​ Some of the parameters sent as system exclusive messages causes the Matrix 1000 to hang. If you're playing notes and change some of the parameters, the notes will hold for a brief moment. Most of the hanging is overcome by simply controlling the interval of messages being transmitted over MIDI for each parameter. Most behave fine and the message can be sent at normal speed, but for others, the transmit interval was reduced in order to compensate for the hanging. ​
Line 109: Line 134:
  
  
 +===== How to build a Chaos Matrix ======
 +I realize some people may not want to build theirs using the same panel layout, same pots, buttons encoders etc, but I'll document my construction as much as possible so it can be used as a reference for those who want to build their own custom programmers for the Oberheim Matrix 1000. I would categorize the construction difficulty as medium-advanced.
  
-===== How it Works ===== +=== Hardware ​=== 
-Almost all communication from the Chaos Matrix to the M1000 is made via MIDI system exclusive messagesNon-registered parameter numbers were not implemented in the Matrix 1000 firmware despite what the manual statesSome communication ​from the M1000 to the Chaos Matrix is necessary however.+ * 1 PIC based core with a PIC18F4620 
 + * 1 AIN, 1 DIN, 1 DOUT 
 + * MIDI merge. You can build one using the schematics found at ucapps.de. I simply extracted ​the internals of an old MIDI-MAN 2x2 MIDI Merger I got off ebayIt uses power from the midi cable and works fine. 
 + * 1 [[http://​www.crystalfontz.com/​product/​CFAH2002A-YMI-JT|2x20 CLCD]] with a 116 x 37 PCB and a 83 x 16.6 (or more) viewable area. If using a different size, changes will have to be made on the front panel. 
 + * 25 Alpha 10k linear [[http://​www.mouser.com/​catalog/​specsheets/​TW-700020.pdf|potentiometers]] 
 + * 3 Bournes detented [[http://​www.bourns.com/​data/​global/​pdfs/​PEC11.pdf|encoders]] 
 + * 16 [[http://​www.mouser.com/​catalog/​specsheets/​MS-100226.pdf|Mountain Switch]] buttons with LEDs  
 + * 1 small red LED T1 (.125" Dia) 3mm 
 + * 2 large stripboards (110 x 94mm) [[http://​www.futurlec.com/​ProtoBoards.shtml|STPBRD1]] 
 + * 5 small stripboards (94 x 53mm) [[http://​www.futurlec.com/​ProtoBoards.shtml|STPBRD2]] 
 + * 3 panel mount 5 pin common MIDI jacks from [[http://​avishowtech.com/​mbhp/​images/​MIDIJackPanelDS.pdf|avishowtech]] 
 + * 1 DC power jack 
 + * 3 24 x 5 1/2 x 3/4 oak boards from local hardware store [[http://​www.synthesizers.com/​diycabinet.html|for ​the cabinet]] 
 + * 8 L brackets with screws [[http://​www.synthesizers.com/​diycabinet.html|for ​the cabinet]] 
 + * 2 pieces of trim stock [[http://​www.synthesizers.com/​diycabinet.html|for the cabinet]] 
 + * wood glue 
 + * wood stain 
 + * poly coat for the wood 
 +
  
-=== Real-Time Modulation Control ​=== +=== Building the Modules ​=== 
-All button clicks ​and knob twists on the live panel send sysex voice parameter changes by default. +Follow the standard instructions for building the 4 Midibox components ​and getting them connected to the coreYou will also have to build a cable to connect ​the core to the character LCD module. I would highly recommend getting PCB kits from [[http://​avishowtech.com/​mbhp/​buy.html|avishowtech.com]] instead ​of building and parting out your ownThe PCBs are of excellent quality.
-Some parameters can optionally be adjusted by continuous controller messages directly from the front panel potentiometers,​ for example: +
-When filter cutoff is adjusted via sysex, the M1000 voice processor ​will hang briefly when making fast sweeps from minimum ​to maximum. Some of the hanging is minimized by slowing the transmission interval for this parameter, but sysex messages are only necessary ​to set the filter if you want to store its setting in a voice patchHowever for live performances where real-time tweaking is needed, a matrix modulation bus can be used to control filter cutoff using one of the available continuous controller modulation sourcesSweeping filter cutoff frequency with a continuous controller message works perfectly without hanging the voice processor.+
  
-=== Edit Voice Initialization === + * [[http://​ucapps.de/​mbhp_core.html|PIC based core]] 
-Voice parameters can be initialized to a default settingVoice edit initialization is good starting point to begin creating ​new voice from scratchThe initialized parameters are sent to the M1000 so the display on the Chaos Matrix matches what is heard on the Oberheim.+ * [[http://​ucapps.de/​mbhp_ain.html|AIN module]] 
 + * [[http://​ucapps.de/​mbhp_din.html|DIN module]] 
 + * [[http://​ucapps.de/​mbhp_dout.html|DOUT module]] 
 + * [[http://​www.midibox.org/​users/​jim_henry/​building_a_midibox_lcd_cable.pdf|wire up LCD cable]] 
 +  
 +The control surface components requires VSS and VDD power connections,​ I used one of the small stripboards as common power rail to connect these components to, by jumping VSS and VDD from the PIC coreYou may want to do it differently however.
  
-=== Edit Buffer Synchronization ​=== +=== Front Panel === 
-When selecting a new patch, ​the edit buffer is requested from the M1000 and processed by the Chaos Matrix, updating the status of all LEDs and parameters in the soft panel. ​When the edit buffer ​is received, you can inspect the matrix modulation, ramps and tracking generator parameters for all the patches in the M1000When you tweak any of the live panel controls, the original value as well as the newly adjusted value is displayed. +All the pots can be mounted directly on the panel. ​Here is a simple guide on wiring [[http://​www.midibox.org/​users/​tor_arne/​midibox64_walkthrough/​potsbuttons.html|pots]]
-This feature requires additional MIDI cables to route the MIDI out of the M1000 back to the MIDI in of the Chaos Matrix+
  
-=== Patch Compare === +AIN PIN wiring
-When making patches, the patch compare feature lets you compare your changes to the original patch. ​+
  
-=== Saving Voices === + * 0 LFO1 DEPTH 
-In the edit menu, select the 2nd page and select a patch location ​(0-199) ​to save your current patch.+ * 1 LFO1 SPEED  
 + * 2 UNUSED ​(pin to ground) 
 + * 3 OSC1 WAVE SHAPE 
 + * 4 OSC1 LFO1 MOD 
 + * 5 LFO2 DEPTH 
 + * 6 OSC1 PLSE WIDTH 
 + * 7 LFO2 SPEED 
 + * 8 FREQ -> ENV 
 + * 9 RESONANCE 
 + * 10 OSC2 LFO1 MOD 
 + * 11 OSC2 PLSE WIDTH 
 + * 12 FM -> PRESSURE 
 + * 13 FM AMOUNT 
 + * 14 OSC2 WAVE SHAPE 
 + * 15 FREQUENCY 
 + * 16 FILTER RELEASE 
 + * 17 FILTER SUSTAIN 
 + * 18 ENV ATTACK 
 + * 19 ENV SUSTAIN 
 + * 20 ENV RELEASE 
 + * 21 FILTER ATTACK 
 + * 22 ENV DECAY 
 + * 23 FILTER DECAY 
 + * 24 DETUNE 
 + * 25 OSC1<​-MIX->​OSC2
  
-=== Voice Names === +Finally, clamp the remaining unused AIN pins to ground. 
-The M1000 doesn'​t handle voice names like the Matrix 6/6Rthey are simply ignored and never stored. However, each and every patch name (published when the M1000 was released) is painstakenly included in the firmware and displayed while browsing patches. The patch names make it easier to remember your favorite patches instead of going by the patch number alone.+ 
 +The Mountain Switch buttons can be mounted on a small PCB. 2 of its pins are for the buttonthe other two are for the LED. 
 + 
 +DIN pin wiring for buttons and encoders 
 + 
 + * 0 LFO2 WAVE 
 + * 1 LFO1 WAVE 
 + * 2 DCO1 ENCODER 
 + * 3 DC01 ENCODER 
 + * 4 OSC SYNC MODE 
 + * 5 DCO1 PULSE 
 + * 6 DCO1 WAVE 
 + * 7 DCO1 CLICK 
 + * 8 DCO2 ENCODER 
 + * 9 DCO2 ENCODER 
 + * 10 EDIT ENCODER 
 + * 11 EDIT ENCODER 
 + * 13 DCO2 CLICK 
 + * 14 DCO2 WAVE 
 + * 15 DCO2 PULSE 
 + * 20 PAGE 
 + * 21 MATRIX MODULATE 
 + * 22 KEYBOARD 
 + * 23 ENVELOPES 
 + * 28 OSCILLATORS 
 + * 29 FILTER 
 + * 30 EDIT 
 + * 31 PATCH SELECT 
 + 
 +DOUT pin wiring for buttons 
 + 
 + * 0 DCO2 CLICK 
 + * 1 DCO2 WAVE 
 + * 2 DCO2 PULSE 
 + * 4 OSC SYNC MODE 
 + * 5 DCO1 PULSE 
 + * 6 DCO1 WAVE 
 + * 7 DCO1 CLICK  
 + * 8 ENVELOPES 
 + * 9 KEYBOARD 
 + * 10 MATRIX MODULATE  
 + * 11 PAGE 
 + * 16 PATCH SELECT 
 + * 17 EDIT 
 + * 18 OSCILLATORS 
 + * 19 FILTER 
 + * 21 LFO2 WAVE 
 + * 22 LFO1 WAVE 
 + * 23 MIDI ACTIVITY
  
  
  
  
chaos_matrix.1260706612.txt.gz · Last modified: 2009/12/13 12:16 by jackchaos