A Dual/Stereo 6 Operator FM Synthesiser.

If you have original Yamaha 6-operator hardware, or other software,
you may still need this, probably a lot more than you think you do., Version 2.4, Size: 89,938 bytes.
CRC32/MD5 codes: 2964711D/5DD016CE4558CAAADCBC30F00D35E1C9

Compatibility and context:

PhaseMod is a synthesiser with two 6-operator 'FM' instruments, like Yamaha's DX5. It is also a MIDI System Exclusive patch editor aimed at fast transcription from old paper records, and is easy to use when creating new sounds. It is fully compatible with Yamaha's original DX7. It works with these Yamaha instruments: DX7, TX7, DX5, DX1, TF1 (TX816 module), DX7 II S, D and FD, TX802, FS1R. It works with Native Instruments FM7 and with anything that uses standard DX7 MIDI SysEx data. Its data can be converted for the Yamaha SY77, SY99 and TG77 if you have a way to do it.

This program needs audio and MIDI hardware with good driver support. It also needs a CPU with SSE instructions, but there is no need for anything more exotic. It will run on any 32 bit version of Windows, and will probably run on WINE in Linux. It will probably run on 64-bit Windows too, but this has not been tested. Unzip PhaseMod.exe to wherever you want it, and run it. If it hasn't got a required file, it will make one with default data. More than one copy of PhaseMod can be run at the same time if each has its own base directory and data files. This HTML page is the manual. After using PhaseMod a few times, a lot of this stuff will come naturally, and you'll need this manual only to help you understand why stuff was done. If that's really baking your noodle, read the long bit at the end when you're ready for it. You won't regret it.

Audio and MIDI setup:

Start with the defaults in the Config file that is created when the program first runs, 16-bit audio at 44.1 KHz, and 16-note polyphony for each of the two instruments. Use the program's Config panel to set audio and MIDI ports. As with any audio software, latency reduction should be tried for the fastest clean response to your action. Results will depend on the quality of the hardware and the driver code that is supplied for it.

Editor controls:

PhaseMod is easy and fast, closely following the structure of the SysEx data while grouping things on pages for visual navigation. There are few buttons, but they do a lot. There is tooltip and status bar help for each of these, so after a few minutes of use you'll know what everything does. There are keyboard shortcuts for most operations, to help people who like speed in repeated tasks.

If JavaScript is enabled, clicking a page button will show its control page.

A parameter has a variable control, selected by clicking its buttons or its display, or by keyboard shortcuts. Its value is changed by using its buttons, the up/down arrow keys, a scroll wheel, or by double-clicking text for keyboard entry followed by the Tab or Enter key. Unlike the standard Windows controls which they resemble, PhaseMod's controls can be adjusted by clicking and holding in the edit field or the buttons, and sweeping the mouse forward or backward. This isn't 'paint by poking numbers', it's like flying. It's luxurious, like the controls found in high quality workstation software. You can aim for a number on a scale of 100 as easily as you can glance at a spot on the wall.

When a parameter is selected, the Tab key will move to the next control in a loop that follows the order of parameters in a DX7 SysEx patch, moving to a new control page if it needs to. It will also select the text. Press the ESC key if you want to cancel an edit in mid-entry. To initialise a single parameter, double-click either of its buttons. Entering '*' or '-' will set the value to the upper or lower extreme of its range. Additional keyboard shortcuts are described on the inbuilt help pages, and are especially useful if you prefer keyboard access for speed instead of a using a mouse. These methods allow very fast data entry.

Some controls convert numbers to a more complex form as the DX7 does. For those controls, a direct text entry must be its numeric value. It is not always obvious what that is, but a bit of trial and error is harmless. This is useful when entering scaling break points from a paper data sheet, for example... Remember that text entry must be followed by pressing either the Enter or Tab key, or by clicking in another control. All other data entry methods directly update the stored value. Note! The Oscillator Tuning display is different, compounded from three controls, Tuning Mode, Tuning Coarse, and Tuning Fine, and although the Tuning Mode control is fully accessible, the other two are only reached through buttons or Tab order, the display between them is read-only. In a selected control, including the hidden tuning inputs, Ctrl+A will select all content to allow clean text entry.

Another way to help with paper data sheets is to re-arrange the envelope generator controls.

DX7 envelopes are not easy to understand. They can be arranged in two ways. One is to think of temporal progression of each rate to its associated level. This is useful when thinking about how they work, and is ideal for making sounds, but it's not the only way. Patch sheets usually follow the SysEx data structure, putting rates together, then levels. This is awkward for programming from scratch, but ideal when entering existing data by hand, so you can choose which way you need to see them. (Another quirk, not adequately covered in any texts I've seen, is that rates are not times. It takes less time for a fixed rate to go between closer levels. If levels are equal, the rate is often left at the default of 99, but that causes audible glitches in older instruments. To remove them, set the intervening rate to 72 instead of 99. This cleans the sound up a lot on slow envelopes.)

Files, patches and banks:

It's easier to load existing data than to edit from scratch. The toolbar's Load button will do this for a single patch file, but holding Shift while clicking it, or double-clicking it, opens the bank's Load panel. A single click, or pressing Esc, will go back to the editor, but repeating the last action will open a file dialog to find a bank file. If you select a patch file instead, it will tell you, but not load it. Both files have the extension '.syx' but a DX7 bank file has 4104 bytes, and a single patch file has 163 bytes. PhaseMod has several ways to be sure it gets the right file type, and that the data is valid.

PhaseMod protects other files as well as its own. When saving, a file must be absent, empty, or the right format. Overwriting inappropriate files will be denied. This prevents very nasty accidents!

Yamaha 6-operator DX patches or banks in other programs, saved as files with extension '.syx', will probably work with PhaseMod. If not, transfer their data by MIDI as described later.

Each '.syx' file is saved with a second file with extension '.xdx', meaning Extended DX. This data is what Yamaha called 'Performance data', and the DX7 only had one store for all patches, and a TX7 was needed to store them for individual patches. It was NOT convenient, but it worked. The Controls page in PhaseMod holds these parameters. The DX7 standard patch and bank does not hold these settings, nor was there ever a standard method to hold all the settings in one SysEx message! The XDX files are PhaseMod's method of solving this problem.

Each of the two editors in PhaseMod is intended to control half of a stereo instrument, but two mono instruments can be used. Each half can be independently panned. Each has its own bank, patch selection, and edit state. Each editor is protected. Yamaha default to protecting bank data when starting, and PhaseMod is the same. To change data in a bank, the 'Protect' setting on the Controls page must be switched off. The original DX7 cartridge 1, bank A, is shown here. Instrument 2 could hold bank B, but that's best for stereo sounds, one bank for each audio channel.

The 'Bass 1' patch is very good (and famous). Clicking on it selects it, and the patch number LED's light up. If MIDI is set up on the Config panel, it can be played. Clicking Load or pressing Esc will restore the existing edit state. To copy the bass patch to the editor, press the Enter key, or double-click the patch selection area. The Edit button will be disabled, but the first edit will enable it again for Compare mode, and an 'E' appears on the first digit of the instrument LED's. Clicking the Edit button or pressing Ctrl+E will switch to Compare mode, indicated by a 'C'. This makes it easy to listen for changes caused by multiple edits at once. Repeat the action to go back to Edit mode.

If enough edits are done, comparisons may be needed between the current state and some new minor edits. In this case, open the bank's Load panel and close it. The existing edit will be copied for Compare mode. New edits can be compared with it. To compare with another patch, select it on the bank's Load panel with a single click, then return to the existing edit. The DX7 would allow this trick, but only by using the Recall buffer after loading a saved patch.

The first edit blanks the patch number LED because the data is not the same as the original. Even if it becomes so, the link is broken. The patch number indicates that the data IS the same, and has not been touched, by you, by MIDI, or anything else. If the bank itself has been changed by storing a patch, a small LED to the right of the patch number will stay lit until the bank is saved manually to an external file. The bank is saved as local data, but the LED warns that backup is wise.

The 'Ref's Whistle' was particularly feeble... Best replace it with a bass! This lights that bank edit LED. Single clicks on the Save panel will audition patches as on the Load panel, but double-clicking commits to saving data. There is no 'Undo' here! This is why backup is wise. It always is! The different colours help to warn that this is where dangerous work may be done. Editing the Config file can change the colours, but they exist for good reason. Back it up, then explore at will.

The Save panel, unlike the Load panel, does not modify Compare mode data. Complex edit sessions may need multiple saved patch variants for tests. All Save methods protect the editor.

One last detail on Bank mode panels... Selecting patches may be done without clicking. Arrow keys will scan rows or columns, or scan the entire bank if Ctrl is held while using the Left/Right arrow keys. MIDI Program Change messages will also select patches, but only the lowest five bits of the number are used. Rather than use larger banks, it is easier to manage patches in different instruments, or load new banks. This is another good reason to get into the habit of saving them.

Program configuration:

Changes to the config are always saved, so what you see is what you get, there is no 'save' or 'cancel' here. Close the Config panel (or any panel) by pressing Esc, clicking its toolbar button, or clicking the Close (X) button at top right on the title bar, or by using Alt+F4.

Each setting is explained by text in its own control, but a summary of purpose is as follows:

Bank panels group patches in rows or columns. Envelope pages group controls by stage or type. MIDI status is indicated by LED at the top right corner, MIDI monitor on the status bar, or both. Auto-send mode reduces delays by selecting how to send data according to hardware ability. MIDI Src and Dst are source and destination ports. MIDI input channels are one of sixteen, also accepting all (as 00). SysEx channels direct data to instruments at the far end of a MIDI output connection. Data Entry sets the 'control change' number for MIDI editing. Wave destination is one pair of outputs, as defined by the system and any wave drivers installed. Wave stream allows latency reduction, by selecting the length of each buffer (in samples) for a double-buffering relay of data to the audio driver. Set this as low as you can get it, without resulting in broken sound. Voice mode can be set for programming, where any edit must be heard immediately whenever possible, or for performance, where sound must be sustained while you change a control or call a new patch.

The toolbar:

Some detail is explained elsewhere, but this section covers the purposes for all buttons. Most programs can't use double-clicks on tool buttons. This one can, for three standard buttons for New (Initialise), Load and Save, and also for the two with antenna symbols. The purpose of double-clicks, or single-clicks while holding the Shift button, is to act on a bank instead of a single patch.

If at any time a button is useless or confusing, it is inactive to prevent harm to data.

New will load initialised patch data from 'INIT.syx' in the Data directory. PhaseMod generates this file with Yamaha DX7 data, but you can make your own initialised data and save it in this file.

Load will import a patch file, or load a patch from the bank. If the Load panel is open, a second bank load call will open a new bank file after warning if the current bank has been changed.

Save exports the editor's data to a patch file, or saves it in the bank. If the Save panel is open, a second bank save action will save the bank to a file, and the bank edit LED, if lit, goes out.

Recall restores the last edit session. A DX7 saves to the recall buffer if you load a new patch. PhaseMod allows editing of the new patch, recall is still possible if the new edit is not yet replaced.

Transmit sends a whole patch, or bank, on demand. Auto-send may be slow, especially if hardware can't use individual parameter SysEx. If Auto-send fails to work as expected, this won't.

Receive will request a patch or bank. Requested data always comes to the instrument that asks for it if it arrives promptly, even if the remote instrument is set to send it on a different channel.

Edit will close a Bank mode panel and return to the editor's previous state, then, if in Edit mode, it will alternate with Compare mode, which is always protected from direct input, and MIDI.

Algorithm displays a selector of DX7 algorithms which define the routing of signals in the synthesizer core and have more effect on sound than anything else, so these small maps are useful.

Config opens a panel of program settings which are self-explained in its controls, but colours can be edited if you close the program and edit the 'PhaseMod.cfg' file (carefully) in a text editor.

Help opens a reference system. It is minimal, with tables of vital information like control label meanings and details of keyboard actions aimed at fast editing or bypassing a broken mouse.

There is also the instrument selector. This is not a standard method for a toolbar, but it's a very good place to put it. At any time while the edit control deck is visible, this will select the current instrument for display or editing. It has three digits to allow for future plans, but the one to watch is the first. It is either blank, or will be an 'E' or a 'C' during an edit to indicate Edit or Compare mode.

Operator copy and muting:

There are six numbered Operator buttons arrayed on the left side of three of the editor's pages.

Each 'operator' in a DX7 is a sinewave oscillator with its own tuning, envelope generator, level scaling, etc. There are six, linked in ways much more complex than most earlier synthesizers which rarely went beyond something called 'cross modulation'. The DX7 starts with such complexity as a minimum for most sounds. Problems that big are best considered in modules. This is why PhaseMod has no standard Undo/Redo controls. They make little sense if you need to mute whole structures or move and copy them between parts of one or more instruments!

The DX7 can mute operators so we can hear what's left and edit it without distraction. Mutes are reset when power is switched off and on again. PhaseMod is the same, but is much more useful...

The DX7 is complex. An editor must not be! It should not make things worse than they are already. Eye candy for envelope and level scaling display rarely helps more than ears and sounds and fingers. It actually maintains the illusion that DX7 editing is complex, instead of helping to simplify it. Clear, compact groups of controls help to guide thought better than graphs. As with a real musical instrument, PhaseMod allows motor memory (muscles, nerves, etc) and good practise to make the most of them. The one exception is FM algorithm selection, because algorithms are hard to remember and because forcing changes of algorithm is a neat way to come up with new sounds.

A stack of operators in one algorithm will usually make the same sound in another but it will often use different numbered operators. Manoeuvring a stack that makes up one element of a sound, importing it to another algorithm that allows a better way to do other things, is extremely useful. A major obstacle in a DX7 was that it could not use its muting for accurate comparison, nor could it copy data between operators, which made the problem extremely awkward to solve.

PhaseMod was specifically designed to solve this problem. These are the ways to do it:

Double-click the operator button to toggle the mute state. A DX7 mutes in Edit mode, not Compare mode. PhaseMod does both. Different mutings can be set in each mode.

Left-click the operator button to copy the operator's data. The copy is available while the text persists on the status bar. It survives a change between Edit and Compare, or between instruments.

Right-click moves copied data for the current page to the selected operator, or all three pages if Shift is held. Copies can move from Compare mode but not to it. Compare mode can't be edited.

If an operator is muted while receiving new data, it will automatically be unmuted on the basis that it is important to hear what changed. When replacing Compare mode data with the existing edit (by open/close of the bank Load panel), its mute state will also be copied. If a patch had been selected for the replacement, the Compare mutes will be cancelled because the patch has no mutes.

MIDI, and the protected editor:

PhaseMod doesn't only protect files, it protects an editor from MIDI. SysEx bulk data never changes an edit session unless it arrives without delay after a direct MIDI request for it. SysEx data normally arrives at the instrument whose number matches the data's SysEx channel, but an answer to a request comes to the instrument that asked for it unless it arrives too late to be redirected.

Standard MIDI data messages are relayed from input to output to allow musical control. Some of these can be intercepted to edit specific parameters under direct user control.

A way to mimic the DX7 data entry slider is to click on a control with one hand, then use the arrow keys with the other, but a real data entry slider, or any MIDI controller from 0 to 95 (set by Config panel), can edit any selected control. If its parameter specifies a note value, it can take direct input from a MIDI keyboard. Hold the Ctrl key while playing the note you want it to use.

Some DX7-compatible instruments may not use single parameter messages. PhaseMod sends all specific control data as individual 7-byte SysEx messages if Auto-send mode is set to 'Fast', but this is always done for the '.xdx' (Extended DX) data on the Controls page, except when data is to be sent only when asked by the toolbar's 'Send' button.

Two PhaseMod programs can even control each other. This looks cool, if a tad pointless on the same machine, but as PhaseMod is ideally hosted on a dedicated machine, it really does help because it may be linked only by MIDI, like any dedicated hardware synthesiser. The bank's Protect switch will work for a remote instrument on the selected MIDI output channel.

When an instrument is not in Edit mode it will take any MIDI SysEx messages addressed to it by MIDI channel, as expected of any instrument capable of remote configuration by patch data. This is one way to overcome bank size limits for those who insist on large sources of patch data.

The status bar can display a MIDI monitor, enabled by Config. This may hide other status text but the monitor takes precedence on the assumption that if you want to see it, you probably need it. It shows standard MIDI messages and 7-byte SysEx data. What you make of it depends on how well you know MIDI. This is a diagnostic tool for raw data, best switched off if your greatest need is low CPU usage and clear sighting of ordinary status messages.

Muting sends a message that a Yamaha DX synthesiser should understand if it is enabled for System Exclusive reception. It will do this even if Auto-send has disabled parameter messages.

Performance notes:

On studio grade hardware with a WDM driver (on XP or later), it is likely you'll get glitch-free performance with latency as low as 1 millisecond. (This was found to be true using WXP running on a 1.2 GHz Mini-ITX machine with the original 20-bit Echo Layla PCI-based hardware, using its WDM driver and the 'PureWave' driver setting enabled). This performance uses standard Wave Out API calls, but is better than ASIO or DirectSound. Do not rely on fancy extras that claim to get good results, go with good hardware, good drivers, because the foundation must be solid. If you get that right, the system will do the right thing when using standard API calls, because that's its job. You just need to stay with hardware that does it well. If you do this, PhaseMod will work as well as any hardware synthesiser, and at a much lower cost!

If you want to run it on W98 SE, that will work too, but it may restrict hardware and driver quality. Even so, you might get clean action with latency as low as 40ms, which is acceptable for many sounds, especially those with long attacks, and you can reduce the sample rate by directly editing the config file, to maximise polyphony for an older and slower machine. Just make sure it has SSE instructions, and it will work. If you can tweak the system for dedicated audio and MIDI purposes, W98 SE may get clean latency as low as 24ms if the hardware drivers are good.

PhaseMod is designed to emulate hardware oscillators which are free-running for as long as they have power, which is critical for correct sound when gating closely detuned oscillators, especially in monophonic mode with key sync switched off. There will be a steady load on the CPU, whether all notes are played, or none. This is ideal because if it sounds good, you can play as many notes as it is set to use, as hard as you want, and know it will give you what you ask for. If performance is critical, run it on a dedicated machine that has no other demands, especially any that vary enough to cause glitching.

The config file can be edited directly while the program is shut down, to alter the 'NotePoly' setting, changing the polyphony to as many notes as the computer can handle. Both instruments will have the same setting, because it's designed to work with stereo sounds. You can also enable 24-bit audio by setting 'Audio_24' to 1, which gives a huge improvement in the quality of long fading sounds, even with very high polyphony, because the dynamic range will be 256 times greater than with 16 bit audio. The sample rate can be set by altering 'Sample/s', either for finest quality, or to reduce it to get higher polyphony for the same demand on CPU time. If you are using 'pad' sounds with huge chords and sustain with slow release rates, this is likely to help.

In a live performance, it may be critical that notes will start and end with whatever patch was set at the time they were played, even if you call a new patch or edit a control before releasing notes. Using a sustain pedal can leave both hands free to set patches or controls with no change in the sound till you start to play new notes. Changing the voice mode setting on the config panel will change between immediate and deferred response to changes of patch settings.

Programming notes, and a bit of extra commentary:

Data is saved and verified during every edit. Like Yamaha's hardware, the program will shut down and re-start with the current patch or edit state. This includes its on-screen location. If you want it re-centred after moving it, put its top left corner beyond the top left corner of the screen before closing it. It will be centred next time it's used.

Anyone familiar with a DX7's edit, init and recall buffers for copy and compare techniques will find those working as expected here, with extensions to mute, compare and copy sub-structures between different instruments, patches and algorithms. PhaseMod can copy operator data from the compare buffer too, and select a different patch to compare with the current edit. Double-clicking any parameter control will restore it to its initialised value, and the INIT data file can be overwritten with your own choices for default values for initialising any or all parameters at will. These details make it extremely easy and powerful to do complex editing based on your own starting conditions, and to manage the detail needed to make good stereo patches.

PhaseMod is accurate wherever possible, but exact emulation of the DX7 is impossible without precise copying of every data type and instruction in the DX7, so exact copies of the ROM, OPS, EGS and DAC IC's would be needed.

The original had plenty of flaws that are not desirable, like strong levels of HF noise from digital artifacts, mainly because of the low bit depths. The DX7 can sound very bright because its sample rate is higher than standard digital systems, at 49096 Hz, but the resolution is only 12 bits. Many more flaws exist, like discontinuities in the look-up tables and scaling that creates rising envelope curves, and LFO speeds and modulation onset delays, and audible glitches when moving from one EG stage to the next. PhaseMod does these things more gracefully because a 32-bit system allows the precision needed to calculate them very accurately.

The pitch EG is especially weird, and the strangest thing of all is some very low-level random behaviour that affects long slow rates between very close low levels. The Yamaha patch called "WATER GDN " on ROM cartridge 4B is an example of this. It's one of the very few patches that will show any real weakness in PhaseMod, but it's a very marginal case, few sounds ever used that technique, and the majority will sound identical to the original hardware, unless you do a strict 'ABX' comparison, i.e. a 'blind' test where the aim is to prove you can hear a meaningful difference when you don't know which source you're hearing. Most development was done with a Yamaha TX7 tone generator feeding one stereo channel, and PhaseMod feeding the other, controlled by the same MIDI signals, so that any aberration was explored and reduced whenever possible. Swapping the audio between each side of a pair of Sennheiser HD-25 headphones makes sure that illusions are quickly cured, especially when the tests are tiring!

One quirk of the original hardware is that with envelopes appearing to offer 100 different levels, there are usually identical results between two sequential values, so only 50 effective levels exist. In PhaseMod, there really are a full 100 distinct levels. This matters because with sounds that use a very high modulation index, it is easier to detect differences between PhaseMod and original hardware, for a specific level. Having a real shift in level, to about twice the resolution offered by original hardware, over the same range, you can fine-tune level settings in rare cases where the sonic precision isn't perfect.

A more noticeable flaw in the original hardware is the behaviour of closely detuned operators, where the detuning can suddenly collapse to nothing! It just stops happening at some point on the keyboard scale, and it's very annoying. PhaseMod has four times the tuning resolution of the original hardware, mostly so things like this can be prevented, and while settings are carefully arranged to get very close to the character of the original for any given detuning value, the result is likely to play better, by far. One particulary egregious flaw in the original hardware is the failure of full-depth squarewave pitch modulation to reach a full octave up and down! You won't be hearing any of that nonsense from PhaseMod...

Similar care was taken with the exponential level scaling, where high modulation indexes really showed up flaws in the original. This matters in sounds like pianos and clavichords, and it matters in principle because the DX7 was intended as a dramatic step toward better emulation of real musical qualities. Despite all its flaws, it's a masterpiece of programming. Its use of nonlinear curves based on its inbuilt conversion of logarithms to linear output, allows emulations of analog electronic behaviour as well as physical systems like strings and pipes. It's how the DX7 was so good at these sounds. It affects all aspects of the engine, LFO's, envelopes, scaling, tuning, it's fundamental to how and why the DX7 did it better than the rest, and influenced everything that came afterwards.

Another detail in PhaseMod that improves on most MIDI instruments, not just the DX7, is an internal interpolator that prevents 'zipper noise' and other glitches in pitch bends and EG bias control by MIDI. The result is as smooth as a clean analog potentiometer, but there is no restriction on speed of response, unlike many systems, even Yamaha's own, as those with an SY77 or SY99 may be aware. Unlike systems based on a desire to replace MIDI, PhaseMod was designed to make the best of it. A good master keyboard will let you know the difference. You can play with PhaseMod, and it is free, so why not? It's the fastest way to understand that it is also a tool that a musician can depend on when they need to earn a living using it.

Like the original hardware, PhaseMod does not use any floating point arithmetic. It does not need to, because fixed point arithmetic methods are more than accurate enough when you have up to 32 bits available! This also means that so long as the CPU has SSE instructions available, the program will always work, and on a slower or older machine, it will almost certainly work faster than one that uses 64-bit integers on a 32-bit CPU, or uses floating point. PhaseMod will probably allow a lot more polyphony that 16 notes for each of its two instruments, even on older machines.

This a degree of detail that goes far beyond merely 'persnickety', but some people care about this stuff, even though many others will never notice! While it is said that there is no point trying to please all people, all of the time, PhaseMod, unlike many other instruments, honoured Yamaha's original intent and action. Like the DX7, it was researched and built during more than TEN YEARS before making it available, so it might please anyone who ever learned enough of the DX7 to respect its methods, in sound creation, and in its use of edit, recall and init buffers as an editing system. There will probably never be an update, but the amount of care taken was to make it unlikely there will ever need to be one. Its version number is based on the matching DX7-Edit program that led to PhaseMod's development. (See the extra files at the end, if you want that one).

The standard DX7 patch is a form of sonic currency that will never be eliminated now, any more than MIDI itself, no matter how many idiots write new obituaries! It was worth taking ten years to support something like that. Yamaha thought so. Martin Russ thought so, when he wrote the best articles on audio synthesis and MIDI that I have ever seen, in Sound On Sound magazine during the late 1980's and early 1990's, and I hope many other people do.

I am working on a much larger scale of synthesiser based on PhaseMod, a true hybrid of phase modulation, wavetable synthesis, and analog simulation, with over 700 parameters per patch, that remains compatible with the standard DX7 patch as well as extending to several techniques I have never seen done anywhere, and some very old ones, like the extremely versatile LFO's, the likes of which mostly vanished with the giant Roland A100 analog modular synthesiser, and a modulation system that makes the Native Instruments FM7 look less than half-baked. This beast may never be ready to release, but it is possible that if I discover that PhaseMod makes its way in the world without me having to push, I may be motivated to finish the task. It's a lot more complete than I make it sound, but Covid, and some other unpleasant changes in the world, have caused me to lose the time and opportunity for an early finish. Right now, the project hasn't even got a name because I just decided to use its name for this one! :)

Extra files:

These are editors with no synthesis engine. DX7-EDIT is smaller, and has no SSE requirement, so will run on very old machines with low power demands, which may be useful to edit banks of hardware and act as a centralised editor and library system. The third file is a set of original Yamaha data for the DX7. This is important for testing any synthesiser which emulates original hardware., Version 2.4, Size: 55,353 bytes.
CRC32/MD5 codes: 9D24C6AC/3EF56CDD1DD0097AA4E5EEAD53262D88

The old single-instrument wxLua editor 'DX7-Edit' can be found here., (Original Yamaha data), Size: 18,256 bytes.
CRC32/MD5 codes: F0EAB7A5/55955619D60AFEE850753A9DEEF0A109

Last words:

There are no more words. Unless you really don't understand, in which case you need this.