EPSS Editor v1.17

The latest version v1.17 can be downloaded from the Downloads page.

The latest changes are:

  • Automatic detection of new version added. Link will direct you to the latest release page where you have to download and install EPSS Editor.
  • Adding of Program Change sounds for G2 patches now work.
  • Auto increase the Program Change number when adding a Program Change definition.
  • Retains the loop mode of sounds exported to WAV files when imported from SPI.
  • The G2 checkbox is disabled and is now auto detected. If any Program Change are defined, it will enabled and otherwise always disabled.
  • When importing SFZ, the Mapping mode switch is used. This then makes it possible to import SFZ as Program Change definitions.
  • Automatically increase Program Change or MIDI Channel after importing SFZ sound. Makes it possible to import multiple SFZ files at once and get them correctly mapped.
  • Midi player reworked so it is more accurate in timing when playing EPSS Songs.
  • Bar and beat counter now shows current song position when playing MID file.
  • Transport control implemented for MID player. Possible to start, stop, rewind and fast forward. Supports keyboard shortcuts (Space for start/stop, Numeric 0 for stop, Numeric Enter for start, Numeric + for fast forward, Numeric - for rewind).

Bug fixes:

  • Playing sounds mapped as Program Change now works. Caused crash as it was not implemented to be supported.
  • Checking correct note for overlap when adding a sound on Channel 10.
  • Can now build correct G2 SPI files.
  • When importing SPI G0G1, the Program Change are now indicated as '-' as there are only MIDI splits present in the file.
  • When importing SFZ from menu bar, the Sound and SPI Sounds are now updated correctly.
  • The imported SFZ file are saved in the defaults both for file menu load and drag&drop.
  • Save SFZ now saves non looped sounds with correct parameter (i.e. not single_shot which caused sounds to ignore MIDI Note Off).
  • Save SFZ now adds default ADSR values to correspond to how they are played in EPSS.
  • Sample names with spaces works to import for SFZ.
  • When playing sound on left pane with space bar, sounds are now played One Shot to avoid infinite looping of the sound.

Known bugs in v1.17:

  • Load sample does not work when initial directory is uninitialized. Will be fixed in next version. Workaround: Drag & Drop samples on left side.
  • Save SPI Sample does not work when initial directory is uninitialized. Will be fixed in next version. Workaround: Save as SPI and then import SPI and use the imported samples. They will be in the same quality (degraded to 8-bit 25kHz) as when using Save SPI Sample.
  • Total size is not updated with sample size information. Will be fixed in next version.

Playing EPSS songs without (!) EPSS

As I now implemented possibility to read SPI files as well as export SFZ files in EPSS Editor (see this post), the step did not feel too long to try to play the EPSS sounds with another sound engine. Especially since the new experimental MID player in v1.16 was so out of timing.

But how?

First obvious choice was to try Sforzando, as it is very good at understanding the SFZ file format. In my first tries I exported the instruments for all MIDI Channels in the Dynamite SPI (included in the EPSS for Atari releases) to one SFZ and then tried loading the MID file and play. Not that great of a success as everything played on top of each other, wrong sounds etc.

After some trial and error I found out that the only way I could get this working was:

  1. Export every MIDI Channel sound definition in the SPI as a separate SFZ file. One SFZ file can only define one instrument so there are really no way we could represent our SPI. An SPI file for EPSS could probably best be technically described as: EPSS is a polyphonic multitimbral instrument with multiple samples mapped on notes in multiple MIDI channels. So there were no way this was possible with just one SFZ file.
  2. Somehow combine the SFZ instruments into one polyphonic instrument (or multiple instruments, one per SFZ instrument).
  3. Ensure that the MID file is playing our MIDI channels on the right instrument.

EPSS Editor v1.16 now supports step 1 automatically so it is now just a matter of loading the DYNAMITE.SPI and then export it as a SFZ and we will then get each instrument created automatically as Channel 0.sfz, Channel 1.sfz etc.

Step 2 was solved by finding a SoundFont tool called Polyphone. This tool could load each of my exported SFZ files and then I could copy/paste between them to create one SoundFont containing the instruments as separate Presets, each corresponding to one unique Program Change number. Polyphone then exported it as a SF2 file, which can contain multiple present and multiple instruments.

Of course our MID files never knew anything about Program Change, as it worked on fixed mapped samples to each channel, so I had to fix that. I found MidiEditor (www.midieditor.org) which had exactly what I needed. I loaded our MID file and inserted one Program Change message on each MIDI Channel pointing to the Preset number created in Polyphone, i.e. MIDI Channel 0->Program Change 0, MIDI Channel 1->Program Change 1. The main Dynamite song only used three MIDI channels, so it was easy. Then saved the MID file as a new file.

After that I managed to load the SF2 and the MID into an web based SF2-player (SoundFont MIDI Player (thetimetube.herokuapp.com) and it worked and sounded closer to original, pitches were correct, sounds played in the right order etc. By some reason Polyphone added a Envelope release of 100.1s (see note below) which caused the sounds to overlap, but after manually changing all Release Envelopes to 0.001s, all sounded really good and quite close to the original actually!

Dynamite is a a bit of a technical demo so our GemTwo used our own developed effects, the VVFE, Velocity Variant Filter Emulation. It takes the velocity of the MIDI Note On message, inverts it and multiplies it with 32 (or other values in later versions of EPSS) and uses that as a start offset when playing the sample. So velocity 127 is 0 offset, velocity 64 is 32 * 64 offset etc. Doing that, it could simulate a phase shift of the sound or volume change of a faded off sound, which caused a nice sounding effect without actually having to do any processing of the samples.

EPSS's VVFE can probably be mimicked as well in SFZ/SF2 by creating velocity dependent ranges, each of them having different start offsets in the sample. Might generate too much data depending on how fine resolution is needed. Or maybe there are other techniques in SF2 that can be used? I don't know too much about SF2's advanced abilities yet...

When playing in a standard SF2 player however, the volumes are interpreted as volumes so that works as well but sounds slightly different from the original.

But all in all, Mission Accomplished with room for improvement!

Let me know if you want to try it out yourself to hear, and I can add the files I was testing with to the Download area.

NOTE: Found the cause of this: the loop_mode property was incorrectly set to "One Shot" when exporting the SFZ from EPSS Editor. This causes the sound to always play in full length and ignoring MIDI Note Off. In next version this will be adjusted to "No Loop" which corrects the issue.

EPSS Editor v1.16

The development of EPSS Editor has now been resumed and some major changes has been implemented and released in a new version.

The latest version v1.16 can be downloaded from the Downloads page.

The main changes are:

  • Import of SPI added. This supports both old generation (G0) and new generation (G1). G2 will not be supported as they can only be created from within EPSS Editor so there should always be a EPF (EPSS Project File) as a base for them. The main difference between G0 and G1 is that G1 contains more meta data about the samples so for example sample names can be extracted correctly. Loading a G0 SPI will name the samples Sample0, Sample1 etc. All details should be preserved if the Project is re-exported to SPI. See the EPSSTECH.TXT documentation for deeper information of the exposed details.
  • Import of SFZ added via menu (previously only possible via drag&drop). Also better compatibility with the SFZ file format where keywords and opcodes are placed on same line and also where lokey and hikey information is missing.
  • Export of SFZ added:
    • Exports every used MIDI channel as one unique file. The only realistic way to convert an SPI to SFZ is to see every MIDI Channel in EPSS as a separate instrument. One SFZ file can always only represent one instrument, i.e. one of the SPI:s MIDI Channels.
    • Exports information about loops
    • Note that it uses a standard Windows Save Dialog to select the location. The file name chosen/entered (minus any extension) will be used as a folder name when exporting the SFZ files.
    • The structure is as follows:
      • Folder: Name of the SFZ entered in Windows Save Dialog.
        • Folder: samples
          • File: sample0.wav
          • File: sample1.wav
          • ... If Generation 1 of SPI files is loaded, the samples maintain their original names
        • File: Channel 0.sfz
        • File: Channel 1.sfz
        • ...
  • Playback system rework:
    • Now using a "Sound Engine" approach where the sound system is started when EPSS Editor is started and not stopped until EPSS Editor is shut down and any sounds to be played are mixed in and mixed out. This avoids any clicking in beginning and end of playing sounds.
    • Possibility to play multiple selected sounds both for Sounds (left hand side).
    • Import of WAV files with loop point, when loop point is defined in an "smpl" chunk. Loop can be tested by holding down mouse button to play the sound looped. Due to the resampling of frequency, there might be clicks at beginning of loop for an SPI Sound but this is due to technical limitations when converting the sample from WAV to SPI Sound.
  • Basic MID Player implemented. Can now (sort of) play EPSS songs directly in EPSS Editor.
    • Loading a MID file starts to play it immediately.
    • Stop button stops playing.
    • VVFE on the SPI Sounds are used when playing the sounds.
  • MIDI Keyboard added by pressing the "Listen" button or double clicking on an SPI Sound.
    • Mouse click on the keys plays as long as the mouse is held down. Possible to hear looped sounds this way.
    • MIDI Volume is possible to change by the slider before playing the sound. Could be used to preview VVFE effects.
    • When playing a MID song, the notes played on the selected MIDI channel are shown.
    • When double clicking the SPI Sound, it will show its mapping if the MIDI Keyboard is open.
    • The centre note (original pitch of sound) will show highlighted in blue color.
  • EPSS have its own installer now and is not using the ClickOnce format any more. This will result in a new installation entry, so manually remove any old versions of EPSS Editor before installing the new version as you otherwise end up with two separate versions. Running a new version of the (new) installer it on top of any previously installed versions will update it to latest version. Last version of old installer was First version of new installer is 1.16
  • General UI fixes:
    • Expose more details for a SPI Sound.
    • Saves last position and size of dialog.
    • Icon added.
    • Ctrl-A as shortcut to select all sounds in Input Sounds or SPI Sounds.
    • Delete key deletes selected SPI Sound and reselects the closest.
    • Alt+click of sound in Input Sounds to select where the sounds are used in the SPI Sounds list.
    • MIDI Mapping reworked and more informative.
    • Center note added for custom mapping (ctr). If the center note is empty, the middle note between lo and hi is used.
    • Message shown when SPI and SFZ exported successfully.
    • Error messages for SPI import and export.
    • Rename of Input Sounds can be renamed. Selecting a sample and right click brings up a separate Rename dialog.

Bug Fixes:

  • Export of SPI gone through and fixed up after realizing that exported SPI files could not be loaded with EPSS Editor. Wrong offset was used for the extended main parameter block (see EPSSTECH.TXT from EPSS for Atari distribution for deeper explanation). Also wrong number of sounds were generated if one sound was used in more than one split area.
  • Creating a SPI Sound by selecting MIDI Channel and mapping mode was not really working other than for Multi samples. This has now been checked a bit and adding single sounds works more like it should. Possible to add custom mapping etc.
  • File size of SPI now corrected and updates correct after load operations.
  • If sounds not found when loading a project, user can choose an alternative folder where the sounds are searched for.

As usual with this amount of changes, things that worked before might have stopped working. Please submit error reports on Issues ยท copsonit/EPSSEditor (github.com) and they will be followed up and fixed.

Known issues in v1.16

  • Looped sounds are note preserved when importing SPI and exporting to WAV. This will be fixed in next version.
  • Not detecting overlap correct when adding sounds on MIDI Channel 10.
  • All non looped sounds are exported to SFZ with loop_mode : one_shot. This causes Note Off to be ignored. It will be corrected to loop_mode : no_loop in next version.
  • Import of SFZ with menu does not update the Sound and SPI Sound lists. Will be fixed in next version. Use drag&drop until fixed.
  • Do not try to use to map sounds as Program Change (i.e. create G2 SPI) as playing of sounds are not working and may crash the program. Full support for G2 SPI will come in next version.
  • Samples containing space does not import correctly when importing SFZ. Incorrectly report that only Wav is supported. Workaround until next version is to remove any spaces.
  • MID Player:
    • Timing between midi event not working as we are playing with Windows real time timers. This will be improved in next version.
    • Always playing the sounds in mono. This might cause it sound different from "original" stereo-separated songs as the sounds will be added on top of each other.
    • No Tempo support. Hard coded to 120bpm.