A lot of comments, cliche’s, criticisms and chit-chat exists about the original DX7 Velocity limitations. I will address a few of those, mainly from the perspective of someone looking at the underlying code. It’s another level of fun for someone sitting or standing in front of one and playing it.
NOTE: This is only about the MIDI-OUT, I’m not commenting here about the internal sounds. That’s another matter, albeit related somewhat.
Original DX7 Velocity Curve
The curve. This is what the DX7 MIDI-OUT Note-On velocity curve is supposed to look like and it does. Almost. The X axis (horizontal) is the time it takes for the key travel and the Y axis (vertical) is the resulting MIDI Note-On velocity. So, to the left we see very quick key travel meaning high velocity. As you go to the right you see slower key travel and lower velocity. It looks like a piece-wise approximation of a curve but I have not figured out the math for the curve at this point.
First thing you notice is 32 points. That’s it. That’s the resolution of the DX7’s MIDI Note-On velocity. And that also includes 0 (zero) AKA Note-Off. What’s interesting as I look at the BIN files for the various versions (I don’t have them all) is that the OS code is buggered. The $7F value cannot be accessed by the code. Impossible. It’s a glaring bug. I think the highest the code will allow is something like $7B, but in order to achieve that you need a hammer almost.
I can see this behaviour in firmware versions 1.7 and 1.8 of the Mark I DX7.
FWIW, I think the DX7S has a 64-byte table and the DX7II has a 128-byte table. I haven’t done a lot of work on those yet as I don’t have either keyboard.
I am planning on fixing this as much as I can in the expansions that I sell. Two of them, the DX7 4X EXP and DX7 8X EXP have a Velocity Offset setting that can add a value to the table value I’ve been discussing. This solves the major issue and the one most people are familiar with, that it’s hard to get the upper values. As they say, “you can’t get much above 100”.
While peeking around at the various DX7 firmware versions I was able to identify the code that is responsible for the DX7 transmitting $FE (MIDI Active Sensing) constantly. I did not have the time to look at adding a menu item for it, so I just disabled it. If anyone is disgruntled by the DX7 sending MIDI $FE (Active Sensing) then this will alleviate your pain.
This link points to the updated v1.8 firmware that I renamed v1.8a:
This link points to the updated Special Edition ROM firmware, SER7, that I renamed SER7a:
One other issue that kind of irked me about the DX7 is the burst of MIDI Note-Off events and controller settings that occur at power on. I haven’t had time to sort that out yet.
The Hitachi 6303 is a variation on the Motorola MC6800/6801/6803 Motorola microprocessors and microcontrollers from the late 70’s and early 80’s. I have an interest in reverse engineering embedded systems from that era. Previously I have created a 6809 EPROM Monitor program called Micro09 and later a variation call Micro11 for the Motorola 68HC11. The latter is still available on the web in a few places. This new one, Micro6303, is basically the same beast, except for the 6303.
Micro6303 Main Menu
In all cases the idea of a Monitor is to create a development OS of sorts that can run on a minimal hardware setup. A serial port is used for communication with the embedded system and a timer is used for single-stepping code. The HC11 and 6303 have the timer and Serial Communications Interface on the chip, so that simplifies the hardware required to bring a system “up”. But still quite a few components are required compared to today’s flash microcontrollers.
Micro6303 CPU Window
Anyway, without further adieu, here are some screen shots of the Micro6303 EPROM Monitor including the Cold Boot screen, the Main Menu and the CPU Window which is the facility for single-stepping and setting breakpoints. It is a work in progress and I will release binaries in the near future.
This is a kit loosely based on the R50iii that was a factory modified/upgraded R50 or R50e. The factory had the advantage of starting with new blank circuit boards which current R50 owners do not. Still, this expansion is pretty easy to install except for 3 wires that do need to be soldered by a steady hand.
MTG Kawai R50 3x
MTG Kawai R50 3x expansion board
The DX7 E! expansion is known for being very hard to use. The SuperMAX+ is easier, but still there are so many features that it can be hard to remember them all, … and not everyone needs them. So I’m working on yet another lost 80’s expansion, hereby dubbed “DX7 4x Expansion”.
This expansion provides the basic elements that any DX7 owner would want, without the power, complexity or price of E! or SuperMAX. In a nutshell you get:
- 128 patches all directly accessible using standard MIDI Patch Changes.
- Velocity offset to cure the DX7 velocity shortcoming.
- A bit more MIDI flexibility and keyboard split.
And you don’t need to remember any of it since it’s all adjusted by one simple panel button. Another nice thing is that it also contains the complete latest DX7 v1.8 factory firmware, including the built-in self test. So maybe not all the bells and whistles of a doctorate level SuperMAX+ or E!, but as I said, a DX7 expansion “for the rest of us”.
Here is a quick “freebie” of sorts. I’ve had this PCB for a while and used them now and then to fix dead 3v coin cell batteries on Yamaha DX7’s and other synth’s and drum machines. You can order the blank PCBs yourself or download the BRD file and get them made however you want.
The description is:
This item is a battery holder, coin cell and adapter PCB that lets you mount a standard CR2032 battery holder over top of a PCB layout that uses a soldered-in battery. It basically converts the pin layout from one of many odd 2-pin and 3-pin board styles into the common battery holder style. In the future, battery replacement will be a snap! Save your gear from leakage, damaged traces and lost sounds!
It will work with many synthesizers, drum machines or effects gear provided you have room inside the unit. The board can be mounted using wires, connector pins, component legs, connectors, etc. You can mount the board directly above where the old battery used to be or any convenient location as long as the board and battery are secure and absolutely insulated from any metal.
OSH Park Shared project MTG CR2032 PCB Saver, Rev A
It’s important to have a bunch of unfinished projects on the go 😉 so here is one more on my list. If you recall, I sell a PCB for the Kawaii R100 that has three EPROMs on it. This gives the R100 user access to all 3 Kawai factory sound ROMs. And the ROMs in question are pretty large (40 pins). Each sound ROM contains a full set of 24 instruments. I call this the standard 3x board and you can see it on a previous post here: http://musictechnologiesgroup.com/blog/wp-content/uploads/2013/08/P1030676.jpg
And now, the new 4x:
4x sound ROM memory expansion
I recently started playing with even bigger EPROMs (42 pins). This means I can put all 3 factory sound ROMs in one chip and still have a bank left over for more custom sounds. This board I’m calling the “QuadROM” 4x board. See above. It can hold 4 sets of 24 instruments in the one chip. Less soldering for me.
Of course in both cases the user can make their own EPROMs using my R100 Builder software, but for the 4x it means you need a pretty decent programmer since the cheapie programmers may not do the 42 pin EPROM; at least not without an adapter.
Also, because there are now 4 banks, it means a simple 3-position toggle switch won’t do. I have to invest in a quality 4-position rotary switch that is still small enough to fit in the R100. Anyway fun stuff on a Saturday. I will work on it more as time allows and see what comes of it.
Yamaha DX7 Cartridge guts
I needed to get the BIN data from some DX7 cartridges, but I don’t have them all. I only have ROM3. So I desoldered the EPROM in the ROM 3 and compared that to the .SYX files found easily on the web. So then I threw together a quick application where I could take DX7 bulk voice dumps and create an EPROM from that.
Note that the Bank B data actually appears in the ROM space before the Bank A data. That’s just because of the decoding on the Bank A/B switch.
Make a ROM cartridge from Sys Ex data
As I mentioned in the SuperMAX Redux post I also have the BIN data for the E! presets (256 of them are stored in half of the 27512) as well as the SuperMAX ones (64 of them in half of one of the 27128’s). So it would be possible to replace the data in those EPROMs if one wanted different presets in either of those expansion boards. Anyway that was my weekend.
Something else I’m working on…
SuperMAX+ LCD welcome greeting
The new circuit boards just arrived and the testing so far is good. The boards are a slight improvement over the original: I’ve increased the size to allow for a screw to hold the board down and I’ve added a battery holder (not installed) for folks that might want to make a better setup for the CR2032 RAM backup battery.
There are so many CPU upgrades now for our beloved synths of old, that I thought it would be nice to have a catalog of them all in one place. If someone else has done this already, please let me know. Here are a few I can think of. Add new ones below and I will incorporate them into the master list here.
- Korg DW8000: Turbo-DW … http://www.musitronics.org/products/dw8000_ex_e.html
- Korg Mono/Poly: Midipoly … http://midipolis.blogspot.com/p/midipoly-manual1.html
- Korg Poly 6: Kiwisix … http://kiwitechnics.com/kiwisix.htm
- Korg Poly 800: HAWK-800 … http://patrioticduo.tripod.com/hawk800/index.html
- Rhodes Chroma: The Chroma CPU Plus (CC+) … http://www.rhodeschroma.com/?id=cpuplus
- Roland Juno 6: Tubbutec Juno-66 … http://tubbutec.de/juno-66/
- Roland Juno 60: Tubbutec Juno-66 … http://tubbutec.de/juno-66/
- Roland Juno 60: Minerva… http://midipolis.blogspot.com/p/minerva-manual.html
- Roland Juno 106: Kiwi-106 … http://kiwitechnics.com/kiwi-106.htm
- Roland Jupiter 4: Io … http://midipolis.blogspot.com/p/manuals.html
- Roland Jupiter 6: Europa … http://www.synthcom.com/Europa/productEuropa.html
- Roland JX3P: Inque Organix MIDI Expansion Kit … (used market only)
- Roland JX3P: Kiwi-3P … http://kiwitechnics.com/jx3pupgrade.htm
- Roland JX10: Vecoven Super JX … http://www.vecoven.com/superjx/superjx.html
- SCI P600: Teensy P600fw … http://gligli.github.io/p600fw/
- SCI Pro One: MTG TurboCPU … http://musictechnologiesgroup.com
- SCI Pro One: Per Linné UC-1 … (used market only)
- Yamaha DX7: Special Edition EPROM … (eBay and other places)
- Yamaha DX7: GreyMatter E! … (used market only)
- Yamaha DX7: SuperMAX … http://www.musictechnologiesgroup.com/lcd_upgrades.htm#supermax
- Yamaha DX7 4x EXP … http://www.musictechnologiesgroup.com/lcd_upgrades.htm#dx7_4x_exp
And if I get the dashes wrong in the synth name, let me know.