Wednesday, November 26, 2014

Matrix 1000 ROM only upgrade v116

It seems like my CPU upgrade for the Matrix 1000 doesn't work quite right except on my own hardware, plus it may have a design flaw so I decided to work on a ROM only upgrade until I can get something that works fine everywhere.

So you just have to burn that file on whatever 27C256 32KB EPROM flavor you have, plug it into the Matrix 1000 U804 ROM socket in place of the old one and all should be working fine, hopefully.

Here are the changes it brings:
- Bug fixes made by Nordcore.
- MIDI NRPN parameters editing fix.
- Faster processing of parameter changes that need a modulation matrix rebuild, there's still a small lag but it's much better than before.
- Unison detune, controlled by MIDI CC #94 (Celeste Level), value from 0 (no detune) to 127 (strongly out of tune). It is always active, even in poly mode. Values around 2-6 add a slow VCO-like detune that helps liven up the sound and keeps poly mode sounding in tune.

Keep in mind it's still an alpha version, but there's a much better chance it works everywhere the same, ie. fine as far as I know.

Edit: This version has now been tested on many M1000s, so I think it can be considered stable and production quality.

Download link: http://sfx.gligli.free.fr/zik/m1k/MATRIX_116.BIN

Sunday, October 12, 2014

New P600fw alpha (october 12)

Notable changes:
- Adding 2 track Roland JX3P style step sequencer.

Step sequencer usage:
- Press SEQx to activate the sequencer, it will wait for you to play a note to start playing.
- Press SEQx again to force start.
- Press RECORD while the sequencer is active to edit the sequence:
  - Highest C: add rest.
  - Highest B: add tie.
  - Highest Bb: undo last add.
  - Any other note: add to sequence.
  (the display shows the current step)

Feel free to comment, suggest improvements, ... :)

Download links:
http://sfx.gligli.free.fr/zik/p600/dev/2014-10-12/p600firmware.hex
http://sfx.gligli.free.fr/zik/p600/dev/2014-10-12/p600firmware.syx

Wednesday, October 8, 2014

New P600fw alpha (october 7)

Notable changes:
- Fix DAC issues from last build.
- Fix sysex MIDI dumps issues from last build.
- Major pots refresh rate improvement.

Download links:
http://sfx.gligli.free.fr/zik/p600/dev/2014-10-07/p600firmware.hex
http://sfx.gligli.free.fr/zik/p600/dev/2014-10-07/p600firmware.syx

Sunday, October 5, 2014

New P600fw alpha (october 5)

Notable changes:
- Adding center dead band for panel zero centered pots (value display accounts for it).
- Adding center dead band and guard bands for pitch wheel, to allow exact bending intervals.
- Adding transpose feature for internal keyboard and arpeggiator (using FROM TAPE + a key relative to C2).
- Sustain by footswitch now transmitted on MIDI out.
- When speed is set fullly counterclockwise, the arp now stops.
- Fixed "reset to basic patch" feature, now on FROM TAPE + 0.

Download links:
http://sfx.gligli.free.fr/zik/p600/dev/2014-10-05/p600firmware.hex
http://sfx.gligli.free.fr/zik/p600/dev/2014-10-05/p600firmware.syx

Tuesday, September 30, 2014

New P600fw alpha (september 30)

Notable changes:
- Allow MIDI notes < 24, to be able to go lower than the P600 keyboard through MIDI.
- Fixed tuning issues on some P600s that were caused by a side effect of august 28 tuning fix.
- Velocity from the internal keyboard now set at 64, so that it sounds closer to a velocity sensitive MIDI keyboard. Also, this way the "amp velocity" parameter can be used to adjust VCA strength when played from the internal keyboard.
- Support for a sustain pedal, either through MIDI or plugged in the P600 footswitch jack.
- Assigner fixes.
- Slightly less abrupt VCA envelope release end while in exponential mode, still not perfect due to how the VCA behaves when nearly fully closed.

Many of these fixes where made by Ricard Wanderlof, thanks to him for the time he spends improving this project!

Download links:
http://sfx.gligli.free.fr/zik/p600/dev/2014-09-30/p600firmware.hex
http://sfx.gligli.free.fr/zik/p600/dev/2014-09-30/p600firmware.syx

Saturday, September 6, 2014

New P600fw alpha (september 6)

Notable changes:

- Properly silence voices when switching to or from unison (bug introduced in last alpha).
- Much better keypad/keyboard debounce algorithm, it fixed wrong retriggers on key up on my own P600.
- Asssigner now cycle through voices instead of always resetting to voice #0. For debug purposes, switching unison on then off still resets to voice #0.

Download links:
http://sfx.gligli.free.fr/zik/p600/dev/2014-09-06/p600firmware.hex
http://sfx.gligli.free.fr/zik/p600/dev/2014-09-06/p600firmware.syx

Friday, August 29, 2014

New P600fw alpha (august 28)

Notable changes:

- Incorrect Osc B tuning problem fixed on at least one P600.
- Voices CVs are now updated even when the voice isn't playing (fixes wrong notes attacks after a while).
- Pot value display range is now 0..99 or -50..49 depending on the pot.
- Fixed problem with wheels resolution.

Download links at: http://sfx.gligli.free.fr/zik/p600/dev/2014-08-28/

Saturday, August 16, 2014

Matrix 1000 emulator

I just added a Matrix 1000 emulator I made on github: https://github.com/gligli/m1k-emu

It emulates enough of the hardware to be used as a development tool, of course it won't produce sound but it can read MIDI in, buttons and display CVs/7segment/LEDs/...

Here's the binary: https://github.com/gligli/m1k-emu/raw/master/usim.exe (it's a command line tool)
You'll need these DLLs besides the exe too: libgcc_s_dw2-1.dll libstdc++-6.dll

Tuesday, August 12, 2014

New synth hacking project: Faster CPU & firmware mod for the Oberheim Matrix 1000

(I already began posting about it in this gearslutz thread, this will only be a recap)

The Oberheim Matrix 1000, while being a proper 6 voices DCO analog synthesizer rack, has a pretty bad MIDI implementation (50Hz update rate, editing some parameters lock up the synth for seconds, some don't even work,...).
Considering MIDI is the only way patches can be edited, this makes it a serious drawback!

Recently, Nordcore, a guy from a german forum started disassembling the firmware ROM and publishing a few patches to make the MIDI better (see this gearslutz post).
My goal was to go further and replace the CPU by a faster and compatible one, so that it leaves room for speed improvements.
  1. Hardware

  2. So, I desoldered the old 6809, soldered a 40pin socket in its place, I also added a socket for the 8Mhz crystal.
    The CPU I now use is a HD63C09P, it is compatible with the 6809, but can run at higher clock speed.
    I clocked it with a 16Mhz crystal, so twice the original speed.
    I had to add a CD4040 on top of the CPU and solder a few wires to divide that clock by 2 for the peripherals (MIDI UART, DCO Timers).

    I also made myself a sort of devkit by replacing the firmware ROM by a RAM chip and a microcontroller to update it, the wiring is really ugly but it works fine so far.

  3. Software

  4. The whole synth engine is updated in an interrupt that is clocked by one of the external 8254  which is running at 50Hz stock.
    My first mod was to make it 4 times faster, process incoming MIDI all those 4 times but update the synth only once in the same period. That way the sound engine still runs the same (envelopes, LFOs, ... stay at stock speed) but MIDI is processed much faster!

    This allowed for much smoother MIDI, yet some parameters like VCA level or VCF envelope amount were still hogging the synth.
    It turns out each time a MIDI message is received, the synth is directly updated, and for some parameters it can take a few hundred milliseconds, so if the MIDI message queue has many pending messages, the wait can rapidly become seconds!
    Nordcore had the following idea: don't update the synth for each MIDI message, but instead raise a flag, and do the update only once per interrupt.
    I implemented it and it works quite fine, editing those parameters isn't perfectly smooth, but one can say it is realtime editing, at last :)

    Last but not least, 50Hz updates means the fastest envelope time is 20 milliseconds, which is quite bad. The CPU being at least twice faster, getting this to 10ms this was perfectly doable.
    I chose to implement it as a turbo mode (enabled by pressing '+' while powering the synth) that doubles the speed of everything (Envelopes, LFOs, ...).
    At first I wanted to have turbo mode always-on while maintaining patch compatibility, but it's not really doable, as there would always be some minor differences in sound due to the odd way the Matrix 1000 handles time based parameters.

Picture of the mod: http://sfx.gligli.free.fr/zik/m1k/m1k_new_cpu.jpg
Quick demo of realtime editing over an arp: http://sfx.gligli.free.fr/zik/m1k/m1k_midi_tweak_demo.mp3
Wiring diagram: http://sfx.gligli.free.fr/zik/m1k/m1k-wiring.pdf
My modified firmware so far: http://sfx.gligli.free.fr/zik/m1k/MATRIX_123_R2.BIN (this is a modified stock firmware, if Oberheim or anyone has a problem with it, I can publish a patch instead)

PS: The firmware was only tested on my own Matrix 1000 so it is alpha quality for now!

Saturday, July 5, 2014

New P600fw alpha (june 14)

I forgot to post about this one, made it almost a month ago.

Notable changes from stable 2.0:

- Enabled external filter CV input.
- Added "voice spread" feature, toggled with "from tape" + 9, it does two things:
     - Enables unison detune in poly mode.
     - Adds subtle per-voice envelope timings changes, to mimic tolerances of analog components.

Download links at: http://sfx.gligli.free.fr/zik/p600/dev/2014-06-14/

Sunday, May 25, 2014

P600fw 2.00 first release candidate

I made only one small change to the firmware since yesterday's alpha but this is the first release candidate for 2.00. That means if no major bug is reported in that release, 2.00 is out.

I finally took the time to update the manual myself, so it's also included for review.

Please report any problem you could find.

Download links at: http://sfx.gligli.free.fr/zik/p600/2_00_rc/1_99/

Edit: 2.00 stable is out! Check out http://gligli.github.io/p600fw/ 

Saturday, May 24, 2014

New P600fw alpha (may 24)

Notable changes:

- Fix modulation delay not modulating release stage.
- Fix no modulation delay still has a small delay.
- Fix last parameter not being stored in manual mode when switching to preset mode.
- CV update optimisations allowed me to add one more wait state, may fix some problems on lazy P600s.

Download links at: http://sfx.gligli.free.fr/zik/p600/dev/2014-05-24/

By the way, the only major thing preventing me from releasing a stable 2.0 version is the manual, as it needs to be updated to reflect changes in features / user interface.
So, if anybody is willing to spend some time to update the english master version, please contact me.

Sunday, May 4, 2014

New DIY project: standalone Juno-60 chorus clone

I sold my JX-3P a while ago, but I found out I missed its chorus.
So I decided to clone it, and since the Juno-60 one is often described as better, this is the one I chose as a basis.

All components are still available, except maybe the BBDs, but you can source them from chinese ebay sellers, and they seem to be genuine.
All I did was to change input & output stages, and use a LFO design inspired from the BOSS CE-2, the remaining parts stayed mostly the same.


Enough said, here's the finished PCB:


















And here's how it sounds (base sound from my Prophet 600):


Some more files: sfx.gligli.free.fr/zik/juno-chorus-clone/juno-chorus-clone.7z (pics, schematics, FLAC demo)
And, since it's a free/open source project, the project page: http://github.com/gligli/juno-chorus-clone

The debug phase went mostly well, but I still have to update the PCB from the fixes I made on the schematics, so better wait a little if you want to build one!

Edit:
PCB update done, should be ok to build!

Edit2:
I compared it with a Juno-60 recording and found out the chorus was a bit weak on mine. Turns out I copied a resistor value wrong in the BBDs output stages.
I fixed it and now it sounds really close to the original!

Edit3:
Some more changes to input and output levels.
Here's a second demo on polyphonic & arpeggio sounds:

Sunday, April 20, 2014

New P600fw alpha (april 20)

Notable changes:

- More tuner tweaks, filter tuning got much better on my P600 (to the point of having almost perfect filter unison).
- Modulation delay improvements: after the modutation delay, modulation increases exponentially over a period of time equal to the modulation delay.
- Added "whole tone" bender range (parameter value is "2nd").
- Assigner legato fixes.

Download links at: http://sfx.gligli.free.fr/zik/p600/dev/2014-04-20/

Monday, April 7, 2014

P600fw MIDI CC map as of today

Here it is: http://sfx.gligli.free.fr/zik/p600/midi_cc_map_2014_04_07.pdf

As usual, continuous parameters have both a coarse and a fine CC, to get full 14bit precision.

"Stepped" parameters work by dividing the 0-127 range is as many zones as there is choices for the parameter.
Eg: "Unison" is off for 0-63 and on for 64-127.

Monday, March 17, 2014

New P600fw alpha (march 17)

This one brings some nice improvements and a few bugfixes:

- When an extended parameter is selected, its current value is displayed.
- Modulation delay (eg. on vibrato) now has a progressive start (about half a second until full level is reached, seems nice and musical to me, but I'm open to suggestions).
- Many fixes to unison mode, should be much more stable now.
- Slowed down text scrolling a little, to help readability.
- Misc. other bugfixes.


Download links at: http://sfx.gligli.free.fr/zik/p600/dev/2014-03-17/

Sunday, March 9, 2014

New P600fw alpha (march 9)

This time I tried to get my frequency measurement routine for the tuner closer to the way it's described in the service manual, hoping that it would fix the remaining tuning problems.

If it gets better or worse, please let me know...

Download links at: http://sfx.gligli.free.fr/zik/p600/dev/2014-03-09/

Saturday, March 1, 2014

New P600fw alpha (march 1)

I didn't have much time to dedicate to my synthesizer projects these last months, but here's a new alpha of P600fw with the following changes:

- Fixed broken exponential envelopes interpolation (was causing stepping).
- Removed MIDI soft-thru (it wasn't an intended feature).
- Added 1/1 and 1/2 arpeggiator external clock ratios (usefull for tape sync).
- Made minor tweaks to the tuner.

Download links at: http://sfx.gligli.free.fr/zik/p600/dev/2014-03-01/