Releases: git-moss/ConvertWithMoss
Releases · git-moss/ConvertWithMoss
Release list
ConvertWithMoss 20.1.0
- Many thanks to Douglas Carmichael for plenty of contributions and fixes!
- New: Added support for the FL Studio DirectWave format (reading of DWP programs with their key/velocity ranges, gain, panning, loops, amplitude envelope, filter and the pitch and volume LFOs, including monolithic programs which carry all their samples inside of the file; the mapping of DWB banks and of sampled plug-ins is reconstructed from the names of their sample files; written programs are always monolithic, i.e. one self-contained file per instrument which stores all of its samples as FLAC compressed audio).
- New: Added support for the Teenage Engineering OP-XY multi-sample preset format (reading and writing of the *.preset folders with their patch.json description file, including the loop with its release behavior and cross-fade and the velocity sensitivity of the engine).
- New: Added support for the Casio FZ-1/FZ-10M/FZ-20M format (reading of floppy disk images (IMG, HFE) and bare dump files (FZF, FZV, FZB - including the head-less layout of the 'fzdump' utility, in which the circulating libraries like the factory library come) with banks, voices, loops, envelopes and filters; writing creates a ready-to-use floppy disk image with a full dump, e.g. for a Gotek/HxC floppy emulator - not yet verified on real hardware).
- New: Added support for the Audiomodern Soundbox format (reading and writing of sound packs (SBPACK): every preset of a pack becomes one multi-sample with the key/velocity ranges, root notes, sample start/end, loops with cross-fade (also ping-pong), reverse flag, volume, panning and tuning of its sounds and the volume, panning, tuning and amplitude envelope of the layers folded in; round robin layers are read as round robin groups and round robin groups are written as round robin layers; a filter in one of the effect slots becomes the filter of the zones and the voice mode and glide become the polyphony and portamento; writing creates one pack with one preset per source and stores identical samples only once - import the written pack into the plug-in, verified with Soundbox 1.2.1).
- User Interface
- New: The folder/file history does now remember the selected source format for the folder/file and restores it on selection.
- New: Contents dialog: The filter field can now be cleared with 'X' and has the focus when the dialog is opened.
- Fixed: Contents dialog: Using 'Select All' on filtered content did still select all presets not only the filtered ones.
- Fixed: Tabbing in dialogs did not work.
- Fixed: Processing dialog: the Enable option could not be reached with tab.
- Processing
- New: Added support to handle 32-bit float samples as input.
- Fixed: Upsampling the bit resolution from 8 bit resulted in silent samples.
- Fixed: Upsampling from 8 to 24 bit set the result to PCM_UNSIGNED instead of PCM_SIGNED.
- Fixed: Handling of 12‑ and 20‑bit samples was not correct when converting to mono.
- Fixed: Truncating the end did only check the 1st loop.
- Command Line Interface
- New: The new option '-P' additionally writes the progress of a conversion to the error output in a machine-readable form ('CWM_PROGRESS pct=<0..100> phase= detail='), so that an application which runs ConvertWithMoss as a child process can display it - the progress dots of the normal output cannot be turned into a percentage. The percentage moves with the finished source files and, inside of a source file, with its loaded samples, which keeps a single large instrument moving as well. Setting the environment variable CWM_MACHINE_PROGRESS to 1 has the same effect, for hosts which cannot add options to the command line. Without the option nothing is written and nothing is changed.
- 1010music bento
- Fixed: On macOS and Linux the patches of a performance were written into a single folder whose name literally contains the backslashes of the device path ('UserPatches\SampInst') instead of the nested UserPatches/SampInst folders; such a folder cannot even be copied onto the FAT32/exFAT card of the device. The paths inside of the project file were and are correct.
- 1010music blackbox, bento
- Fixed: The preset paths written into presets and performances used the multi-sample name as-is, but the actually created folders have illegal file name characters removed and a number appended when the name already exists. Such presets referenced non-existing folders (e.g. for sources with a ':' in their name, like Roland S-7xx patches). The written paths now always match the created folders.
- Fixed: blackbox: The silence workaround samples of a performance were referenced in the folder of the instrument but the sample is stored in the performance folder.
- Akai MPC60, MPC2000/3000, S-9x0, S-1000, Ensoniq ASR/EPS, Roland S-5xx, S-7xx
- New: Patches are now put in sub-folders with their image name. On the S-5xx, if it is a CD-ROM, the CD-ROM name is another sub-folder. S-1000 adds Volume names.
- Ableton
- New: Round-robin cycles which are stored as sample-select (selector) ranges - the only round-robin representation the Sampler of Live 10/11 has - are now read as round-robin groups instead of zones which all play at once. When writing, round-robin groups are stored as selector ranges whenever the native round-robin flag of Live 12 is not available (Ableton 11) or does not apply because only some of the groups alternate.
- Fixed: A preset whose samples were not found at the calculated root path failed with 'No presets were found in the source' although the samples were present. This happened e.g. for a preset saved inside of or next to a Live project folder which keeps its samples in a nested folder (the root path search only recognized a folder with a direct 'Samples' child). The root folder of a Live project (marked by its 'Ableton Project Info' folder) is now recognized as well, the absolute sample path stored in the preset is tried as a fall-back and finally the sample file is searched by its name starting from the folder of the preset. A sample which is still not found only logs an error and drops its zone instead of the whole preset.
- Fixed: A written preset was malformed XML when the preset name contains one of the characters '&', '<', '>' or a quote (the name is now escaped).
- DecentSampler
- Fixed: The folder name of a created DSBUNDLE kept characters which are illegal in file names (e.g. the ':' of Roland S-7xx patch names).
- E-mu Emulator III/IIIX/ESI
- New: Banks can now be written as a ready-to-use CD-ROM image (ISO) for SCSI CD-ROM emulators (e.g. ZuluSCSI), which is the only way to get a converted library onto these samplers since they read no file system of a computer. Each converted source becomes one bank of the image (at most 112), whose geometry, file entries and directory copy the Emulator IIIX library CD-ROMs. Written images have not been tested on real hardware yet.
- Fairlight CMI
- New: IMG, IMD and HFE files which contain several Voice files can be read.
- New: Voice files can now be written: either as a Series III voice (16-bit mono or stereo, up to 127 sub-voices with their key ranges, loops, tuning, gain and amplitude envelope) or as the fixed-size 8-bit voice files of the CMI I/II/IIx with their loop segments (one file per sample zone, e.g. for the QasarBeach recreation - the Arturia CMI V does not read voice files; the audio is re-sampled to the root frequency times 128, which is the pitch law of the CMI II - verified against QasarBeach; each voice comes with the control (CO) file it references, which carries the loop, attack, damping and level). Written files have not been tested on real hardware yet.
- New: Voices can also be written in the native 16-bit format of the QasarBeach recreation (QBV2), which carries the loop, release and level inside the file and therefore loads ready to play; such files are read as well.
- New: Voice files of the 8-bit CMI I/II/IIx dialect are now read as well, both with their full header and as bare 16 KB audio-only files. A control (CO) file present next to a voice wins over the voice header (as on the CMI itself) and also provides the attack and release of the amplitude envelope.
- Korgmultisample
- Fixed: The loop end was ignored when writing: the single end field of the format (which is the sample end and the loop end at once) was always set to the sample end. A loop which ends earlier now moves the end to the loop end - audio behind an active loop can never be heard anyway - so held notes no longer cycle across e.g. the faded-out tail of a pad sample.
- NI Kontakt
- New: The velocity to volume modulator is now converted with its response curve: Kontakt maps its normalized volume to decibels with 60*log10(x), so the amplitude follows the cube of the velocity. Destinations which can express the curve reproduce this response, e.g. SFZ receives matching amp_velcurve_N points.
- Fixed: Added a workaround for missing samples with Kontakt 2/3 Monolithic NKM files created with AWave Studio which falsely classify samples as NKI files.
- Fixed: The group and the instrument tune of a Kontakt 2 file were read as a linear offset in octaves although they are frequency ratios, like the already correctly read zone tune (and like all tune values of Kontakt 1 and 4.2/5+). Both are 1 - the neutral ratio - in a program whose tuning was never touched, and each contributed a full octave, so every converted program played 24 semitones too high. A tune of 0, which cannot be a ratio, is now taken as neutral instead of producing an infinite value.
- Fixed: The soloed groups of a Kontakt 4.2/5+ program were honored even when the program has group solo switched off. Kontakt keeps the solo flags of the groups when solo mode is left, so a program with such left-overs converted to those groups only and dropped every other group.
- Roland MC-707/MC-101
- Fixed: Projects which were created on the d...
ConvertWithMoss 20.0.0
- Many thanks to Douglas Carmichael for plenty of contributions and fixes!
- Many thanks to David García Goñi for providing specifications of the E-mu formats and refined Kurzweil specifications!
- Many thanks to Linus Wileryd for the improved icon set!
- New: Added support for the Arturia Synclavier V format (reading and writing of SYNX preset and bank exports; partials which play a sound file become sample zones).
- New: Added support for the E-mu Emulator III/IIIX/ESI bank format (E3B, E3X, ESI).
- New: Added support for the E-mu Emulator IV bank format (E4B). Banks can also be read directly from CD-ROM and hard disk images of the EOS samplers (ISO, IMG, HDA), including via the ISO/IMG source format. New: Writing creates a bank as a ready-to-use CD-ROM image for SCSI CD-ROM emulators (e.g. ZuluSCSI), which is the only way to load banks on units running EOS versions before 4.7. Written banks have not been tested on real hardware yet.
- New: Added support for the E-mu Emulator X format (EXB banks with their EBL sample pool).
- New: Added support for the Roland S-550 CD-ROM format.
- New: Added support for the Roland SP-404MK2 format (reading and writing of projects; each bank of pads becomes a multi-sample).
- New: When a converted preset plays its samples an octave or more from the middle of the keyboard (common for vintage phrase and vocal presets, which were triggered from drum machines rather than played on keys), a log line names the root it plays at, so the faithful mapping is not mistaken for a conversion error.
- User Interface
- New: There is now a toggle switch before the source field to switch between batch conversion (as it worked before) or only picking a single file to convert. Each mode keeps a history of its own, which is exchanged along with the entered path when the toggle is used.
- New: A source format where one file contains several presets - a bank, a disk image or a library - has a Contents... button, which shows all presets found in the source as a tree of their file and their containers. Each entry shows its number of zones, its key range and its category, so that an unknown bank can be explored, and only the ticked presets are converted. One note of the preset highlighted in the Contents... dialog can be played with the Play button or a double-click. It is rendered from the preset as it was read - amplitude and filter envelopes, filter, pitch and volume LFOs, velocity and panning - so it tells what the conversion will produce, which allows to pick the presets of an unknown bank by ear. This works for every source format, since it renders the model and not the format.
- New: The Play button plays the note of a sample root close to the keyboard middle, so that phrase and vocal presets are heard as they were recorded.
- New: Added tooltips to format lists to be able to see the full text of an entry.
- Command Line Interface
- New: One or more source files can be given instead of the source folder, which converts only these files (e.g.
ConvertWithMoss -s exs24 -d 1010music MySampler/Piano*.exs Output). The last given path stays the destination folder.
- New: One or more source files can be given instead of the source folder, which converts only these files (e.g.
- Backend
- New: Added support for a LFO (low frequency oscillator) modulating pitch (vibrato) with its rate, depth and delay: DecentSampler, DLS, Renoise, SFZ, SoundFont 2. Other formats pending.
- New: Added support for a LFO modulating the volume (tremolo) with its rate, depth and delay: DecentSampler, DLS, Renoise, SFZ, SoundFont 2. Other formats pending.
- New: The Korg KSC/KMP/KSF, Kurzweil K2x00, Roland MV-8000 and Roland ZEN-Core destinations have an option to shorten a name to its last separated segment for the short name field of the device (e.g. 'Greek Bazouki - Dark Tremolo' becomes 'Dark Tremolo'), which otherwise cuts off exactly the part that tells the presets apart. Disabled by default.
- New: Added more instrument names to the category detector.
- Fixed: A destination which cannot write what was asked for wrote nothing at all: the sources were read, collected and then silently dropped, since creating a library or a performance is an empty operation for a format which does not support it. E.g. converting 175 Elektron Tonverk presets to Waldorf QPAT with '-l MyLib' finished with an empty output folder, and Kontakt multis to QPAT with '-t performance' did the same. The command line now fails with an error message before the detection starts. The user interface is not affected, since it only offers the output types which the destination supports.
- Fixed: Detecting a source which contains many presets was dominated by a fixed 10 millisecond pause taken after every single detected preset. A CD-ROM image of an E-mu sampler with 812 presets needed 11 seconds, of which 8 were that pause; two of them with 2339 presets needed 36 seconds. The pause is now taken every 64 presets, which keeps a cancellation responsive but takes the two images down to 1.4 seconds.
- 1010music blackbox / bento
- Fixed: The loop cross-fade of a blackbox pad was read from the loop-end attribute instead of the fade-amount attribute - virtually every looped pad got a cross-fade spanning the entire loop, which destinations that bake cross-fades into the audio smeared audibly.
- Fixed: A performance instrument on OMNI was written into a bento project with MIDI input channel 'Off', so the track received no MIDI at all - the same defect was fixed for the blackbox in 19.1.0.
- Fixed: The loop type and cross-fade of a bento cell were assigned from themselves instead of the cell's default loop - a ping-pong loop read as a forward loop.
- Fixed: The sample length attribute of a bento cell was treated as an absolute end position although it is the play-back length (the blackbox reading is correct) - a cell with a moved sample start lost that many frames from its end.
- Fixed: The root velocity written into a bento project was half of the velocity range's width instead of its mid-point, which for a layer of 80..127 lies outside of the layer.
- Ableton
- Fixed: An unset envelope start or end level was written as 1.0 although Live's default is silence - a slow-attack pad converted with no swell at all (the envelope ramped from full to full), and unset pitch-envelope levels became a full-depth offset. Unset start/end levels are now written as 0, unset hold/sustain levels as 1.
- Fixed: The sign of the filter and pitch (aux) envelope amounts was stripped when reading, so downward sweeps inverted - converting an ADV with a negative filter envelope back to ADV flipped it to positive.
- Fixed: The detune of the sustain loop was read from the multi-sample part (which is the zone tuning, already applied) instead of the sustain loop element, so the zone detune was applied twice after a round trip.
- Akai AKP/AKM
- Fixed: The pitch bend range was passed as semitones into the model's cents field, so the bend wheel effectively did nothing on converted programs.
- Fixed: The volume of a multi part was multiplied onto the dB gain of the zones (a no-op for 0dB zones) instead of being added as a dB offset, and the part panning was scaled twice as wide as the field allows.
- Akai MPC
- New: The destination can now write MPC 3 track files (*.xty) with their '_[TrackData]' sample folder as an alternative to MPC 2 keygroup folders (new 'Output Format' option, issue #117). The files replicate the complete track structure of MPC firmware 3.7 from a template - the firmware's own reader is strict about its serialized object tree - and only the multi-sample fields are patched in.
- New: The volume of a MPC 3 layer (an object holding the linear gain coefficient) is now read.
- Fixed: The pitch bend range of a MPC 3 track or project was read as cents but the file stores semitones, so the default of 2 semitones became 2 cents. The fraction of an octave stored next to it confirms the unit.
- Fixed: The tuning of a MPC 3 layer was read from the coarse and fine tune of its instrument, which the caller had already applied - the instrument tuning was doubled and the layer's own tuning was lost.
- Akai MPC2000/3000
- Fixed: The tune of a program pad and of a SND sample were read unsigned - every negatively tuned pad of e.g. the factory library CD came out drastically sharp (a -0.05 semitone pad read as more than +600 semitones and was clamped to +12).
- Akai MPC60
- Fixed: The 12 bit sample data was unpacked with the low nibble at 1/16 of its weight and the result byte-swapped, which reduced the audio to roughly 8 bit quality with a signal-correlated error. The 12 bits are now left-justified as in the reference implementation.
- Akai S900/S950
- Fixed: The fractional part of the nominal pitch was applied with an inverted sign: a sample recorded e.g. a quarter tone sharp was played another quarter tone sharp instead of being corrected. Also the loudness offset was read unsigned, so any attenuation became a boost.
- Akai S1000/S3000
- Fixed: The pitch bend range was passed as semitones into the model's cents field - the bend wheel effectively did nothing.
- Fixed: The program volume (a 0..1 value) was written directly as the dB gain of every zone, overwriting the per-layer loudness set before - the velocity-layer balance of every program was discarded.
- Fixed: The fraction byte of the keygroup and keygroup-sample fixed point tunings was treated as signed, so negative fine tunes came out about a semitone flat (e.g. -0.05 semitones read as -1.05). The sample header tuning in literal cents is no longer rescaled.
- Arturia Synclavier V
- New: Added an option to write the samples additionally as plain WAV files in the layout of the sample pool ('User/<preset>'): the application's import loads the embedded samples but does not copy them into its sample pool, so imported presets loaded in a later session report them as missing. Merging the written 'User' folder into the pool m...
ConvertWithMoss 19.1.0
- Many thanks to Douglas Carmichael for plenty of contributions and fixes!
- New: Added support for the Kurzweil K2000/K2500/K2600 format (KRZ, K25, K26). Known issue: Envelopes are not always read correctly.
- User Interface
- New: The Settings and Processing dialogs opened with a bright white frame and, on macOS, repainted whenever the main window was clicked. Since there is no nice fix for this, the dialogs have now been replaced with pseudo dialogs which are part of the main window.
- New: Removed the hover highlighting from the titles in the Processing dialog.
- Backend
- New: Added support for the one-shot playback mode (a note-off is ignored and the sample is always played back to its end): Ableton, Akai AKP, Akai MPC, Akai MPC1000, Akai S900, Akai S1000, Kontakt, Korg multisample, Logic EXS24, 1010music blackbox/bento, Polyend Tracker, Renoise, Roland MV-8000, Roland S-5xx, Roland S-7xx, Roland ZEN-Core, SFZ, Synclavier, Synthstrom Deluge, Tonverk, TX16Wx, Yamaha YSFC. Formats previously collapsed this into "has no loop" or guessed it from the envelope.
- New: Added support for exclusive ('choke') groups, which stop all sounding notes of the same group when a note of that group starts, e.g. a closed hi-hat cutting off an open one: Akai MPC1000, Akai MPC60, DLS, Kontakt, Logic EXS24, 1010music blackbox/bento, Renoise, Roland MV-8000, SoundFont 2, TAL Sampler, Yamaha YSFC.
- New: Added support for a random play logic next to round-robin: Ableton, Akai MPC, DecentSampler, Logic EXS24, Renoise, Yamaha YSFC. Formats which cannot express a random selection now fall back to round-robin instead of playing all layers at once.
- New: Added support for amplitude keyboard-tracking, the counterpart of the filter cutoff keyboard-tracking: Akai S1000, DLS, Logic EXS24, Roland MV-8000, Roland S-7xx, SFZ, Synthstrom Deluge, Yamaha YSFC.
- New: Added support for envelope time keyboard- and velocity-scaling, which scales the envelope times by the played key and velocity (as opposed to the already supported slopes, which describe the curvature of a segment): Akai S1000, Ensoniq EPS/ASR, Ensoniq Mirage, Logic EXS24, Reason NN-XT, Roland S-7xx, SoundFont 2, Yamaha YSFC.
- New: Added support for per-instrument voice settings (polyphony and monophonic legato): Akai S1000, DecentSampler, Disting EX, Ensoniq Mirage, Logic EXS24, Reason NN-XT, Roland S-7xx, SFZ, Synthstrom Deluge, TAL Sampler.
- New: Added support for group volume, panning and tuning offsets: Kontakt, DecentSampler, Logic EXS24, Synclavier, TX16Wx, Waldorf Quantum/Iridium.
- New: Source folders and files are now processed in a stable alphabetical order instead of the file-system enumeration order, so consecutive runs behave identically (and e.g. the QPAT import numbers are assigned in a predictable order).
- New: Improved logging if WAV file could not be written.
- New: Keep dots when making file names safe.
- Fixed: Two filters which differed only in their cutoff envelope were treated as equal, so zones which are not identical could be combined into one; a filter with a cutoff envelope but without a cutoff velocity modulation could additionally throw an exception.
- Fixed: Copying a sample zone did not copy the sequence position belonging to the play logic and did not copy the velocity modulator of the amplitude.
- 1010music bento
- Fixed: With the "Trim start and end" processing option enabled the loop points were left at their untrimmed positions - the sample length was already corrected - so a trimmed sample with a non-zero start got a displaced loop.
- 1010music blackbox
- Fixed: The choke group attribute of an unused template slot was written as "okegrp" instead of "chokegrp".
- Fixed: The MIDI channel of a performance was written one channel too high and MIDI channel 16 was turned into "Off". The value is the MIDI channel 1-16 (where channel 1 doubles as the OMNI mode) and not an additionally offset one; OMNI is now written as channel 1 instead of switching MIDI input off.
- Ableton
- Fixed: The warning that the round-robin configuration could not be translated was logged when it could be translated and not when it could not. The written file is not affected.
- Fixed: No preset was written at all (the conversion failed with a "sample file not found" error) when a zone name contained one of the characters & . ' : / \ * ? " < > | - the sample file is written with those characters replaced by an underscore, but the preset looked it up and referenced it under the unchanged name.
- Fixed: The upper velocity crossfade was calculated from the lower velocity crossfade value.
- AIFF
- New: Added support for reading AIFC files with un-compressed PCM sound data, e.g. the little-endian ('sowt') files written by the Elektron Tonverk or the Teenage Engineering OP-1. Compressed AIFC files are still rejected with an error message.
- Fixed: Converting an AIFF file with the file ending '.aiff' (instead of '.aif') deleted the source sample file: an internal workaround copies such files to a temporary file but the cleanup deleted the original instead of the temporary copy.
- Fixed: Reading the sound data chunk of an AIFF file returned only the first few bytes (the bit resolution was mistaken for the data size), which corrupted the fallback conversion path for AIFF files that the Java sound system cannot read.
- Akai MPC500/1000/2000(XL)/2500/3000
- New: Always create filter, even when cutoff is at maximum.
- Bliss
- Fixed: The loop mode was only written when a zone had a loop, but a missing loop mode is read back as a forward loop, so zones without a loop turned into fully looped ones.
- Fixed: The samples in a written preset or bank (.zbp/.zbb) were stored as raw source audio under a ".flac" name instead of being FLAC encoded, so neither Bliss nor ConvertWithMoss itself could read back a written file. The zone start/end trimming was skipped for the same reason.
- CWITEC TX16Wx
- Fixed: Ignore modulation slots which are switched off.
- DecentSampler
- New: Added a source option "Create one multi-sample per group": creates a separate multi-sample for each group (disabled groups included), e.g. for presets which contain several alternative kits as groups and switch between them via their user interface.
- Fixed: Disabled groups were only skipped when written as enabled="0" but not as enabled="false". Presets that switch between several kits via a drop-down in their UI (each kit is a group and only one is enabled) were converted with all kits stacked on the same keys and playing at once.
- Fixed: A loop which is explicitly disabled with loopEnabled="false" was still created when loop points were present; loops from the sample file chunks were imported as well in this case. Presets without the loopEnabled attribute are not affected.
- Fixed: The panning of a group was not scaled, so any group with a panning moved all of its zones fully to one side.
- Elektron Tonverk Preset
- New: Read the Grainer generator machine (granular playback of a single sample). Since grains cannot be represented in the multi-sample model, the sample is converted like a One-Shot and the granular engine parameters are not converted.
- Fixed: An envelope hold time was dropped when writing a preset. It is now added to the decay time - the hold phase only exists in the device's AHD mode while the written envelope is always ADSR - the same way all other formats without a separate hold stage handle it.
- Fixed: Writing a Tonverk preset failed in the packaged application with "Resource '.../tonverk/multi-template.tvpst' not found.
- Expert Sleepers Disting EX
- Fixed: The amplitude envelope was only written when the internal hash code of the envelope value happened to be positive, so about half of all converted presets silently kept the factory default envelope instead.
- Fixed: The envelope sustain level was never written and stayed at its maximum, so a percussive source (sustain 0) held at full level forever.
- Korg KMP
- Fixed: Detector did hang on first found KMP file.
- Logic EXS24
- New: Implemented Velocity -> Filter Cutoff Modulation (read/write)
- Fixed: The panning of a group was read as an unsigned value and was not scaled, so a group panned fully left moved all of its zones fully right.
- Fixed: The attack time at the lowest velocity was never written and stayed at 0, which gave all written presets an instant attack at low velocity.
- Polyend Tracker
- Fixed: The filter cut-off envelope amount was written from - and read back into - the modulation depth as if that depth were a frequency in Hertz, but it is a normalized [-1..1] value. The written amount collapsed to nearly zero, so the filter sweep disappeared; both directions now use the normalized value.
- Reason NN-XT
- Fixed: All loops were lost when reading a preset: the loop was created but never added to the zone. Writing loops was not affected.
- Fixed: The pitch key tracking was never read, so zones with a reduced key tracking (e.g. fixed-pitch percussion) were imported as fully tracking.
- Fixed: The depth of the filter envelope was written into the field of the pitch envelope, so the filter modulation was lost and the pitch modulation was overwritten with it.
- SFZ
- Fixed: The velocity range was taken from the cross-fade opcodes, so it grew by the width of the cross-fade with every conversion (e.g. lovel/hivel 40/100 became 30/110 and then 20/120). The same was already fixed for the key range.
- Spectrasonics Omnisphere 3
- Fixed: Envelope stages which are not set were written as "not a number" (attack, hold, decay and release) or as a negative sustain level. Unset times are now written as zero and an unset sustain level as the full level.
- Fixed: The zone tuning was written and read as cents although the model value is in semi-tones, so the tuning was off by a factor of 100 ...
ConvertWithMoss 19.0.0
- New: Added support for the Polyend Tracker (PTI) instrument format (thanks to Douglas Carmichael).
- New: Added support for the Renoise instrument (XRNI) format (thanks to Douglas Carmichael).
- New: Added support for the Synthstrom Deluge instrument format (thanks to Douglas Carmichael).
- New: Added support for the Elektron Tonverk preset (TVPST) (thanks to Douglas Carmichael).
- New: Added support for the Roland MV-8000/MV-8800 patch format (MV0) (thanks to Douglas Carmichael).
- New: Added support for the Roland ZEN-Core sound format (SVZ) (thanks to Douglas Carmichael).
- New: Added support for the Synclavier Regen timbre/library format (SFLC) (thanks to Douglas Carmichael).
- New: Added support for the Roland MC-707/MC-101 project format (MPJ) (thanks to Douglas Carmichael).
- New: Added support for the Fairlight CMI 3 - read only (thanks to PythonBlue).
- New: Added support for the Downloadable Sound format (DLS) - read only.
- User Interface
- New: Improved user interface for long lists of formats.
- New: Added menu item when right clicking a log message to open the mentioned folder (if there is one).
- Fixed: The source format list showed a stray comma before the file extensions (thanks to Douglas Carmichael).
- Backend
- New: Added support for sustain / 'loop until release' loop mode (the loop runs while the key is held and then plays the remainder of the sample on release, as opposed to a continuous loop) - Ableton, Ensoniq EPS/ASR, EXS24, NI Kontakt, Renoise, SoundFont 2, SFZ, SXT, Tonverk (thanks to Douglas Carmichael).
- New: Added support for filter cutoff keyboard-tracking: Ableton Sampler, Akai AKP/AKM, Akai S1000, Bliss, Ensoniq, EXS, Omnisphere, SXT, Roland, SFZ, Synthstrom Deluge, TAL Sampler, TX16W, Waldorf, Yamaha YSFC.
- New: Added several new tags for category detection.
- New: Added an opt-in metadata option "Category tag at name start declares the category" (off by default): many commercial libraries prefix each preset name with its category (e.g. 'PAD Solina', 'BASS Growler'). When enabled, such a prefix takes precedence over keyword matches elsewhere in the name, which could otherwise win accidentally (e.g. 'BELL Vibrato Strings' was detected as Strings instead of Bell), and common abbreviations (BRAS, DRM, FLUT, GRAN, ORG, PERC, PHYS, PLUK, POLY, REES, STRG, SWEP, VOC) are recognized as well. Also added 'Reese' as a Bass category tag (thanks to Douglas Carmichael).
- New: Added an opt-in Snap loops to zero-crossings processing option.
- New: Added a Transpose processing option (-24 to 24 semitones, CLI -Zp): moves the root notes of all samples so the presets play higher or lower without changing which sample is mapped to which key (thanks to Douglas Carmichael).
- Fixed: Ignores hidden files/folders and the known Windows system folders when checking for empty-folder (thanks to Douglas Carmichael).
- Fixed: A library name typed with its file ending (e.g. "MyLibrary.xrni") produced a doubled-up file name ("MyLibrary_xrni.xrni") - the ending is now recognized for every destination format (thanks to Douglas Carmichael).
- Fixed: The "Trim start and end" processing option cut the audio to the zone's start/end but left the loop points at their old positions, so a trimmed sample with a non-zero start got a displaced loop - the loop end could even point past the end of the trimmed audio. The loop points now move with the cut (thanks to Douglas Carmichael).
- Fixed: Fixed some potential NullPointerExceptions.
- 1010music (thanks to Douglas Carmichael)
- Fixed: The amplitude decay and release times were written with a different time scale than the one used when reading them back (25 seconds instead of 38 seconds full-scale), so a converted blackbox/Bento preset played its decay and release noticeably shorter than the source. The write scale now matches the read scale.
- disting EX (thanks to Douglas Carmichael)
- Fixed: A misplaced parenthesis in the amplitude decay conversion divided only the decay time (not hold plus decay) by the time constant, so any hold time was effectively dropped from the written decay.
- Elektron Tonverk Multisample (thanks to Douglas Carmichael)
- New: Relabelled "Elektron Tonverk Multisample" to not confuse it with the new "Elektron Tonverk Preset".
- Fixed: Loops were dropped when reading the multi-sample mapping (.elmulti/.eldrum) format - the loop was parsed but never attached to the sample zone, so converted instruments lost their loop.
- Fixed: A mapping slot without explicit sample-trim points read a sample start and end of -1 instead of the whole sample (e.g. a converted Waldorf QPAT then showed a sample start and end of -1 on the device).
- EXS24
- New: Read/write filter envelope depth from/to modulation matrix.
- Fixed: Loop type was not applied.
- Fixed: Envelope times were converted from the EXS24 parameter linearly, but the device applies a fourth-power curve, so short times were greatly overstated - and the attack stage additionally skipped even the linear scaling, coming out about 12.7 times too long on top of that. A quick attack (e.g. 7.5 ms) was read as over a second, so plucked and struck instruments faded in too slowly to be heard and appeared silent. Envelope times are now converted with the hardware-calibrated curve seconds = 10 * (parameter / 127)^4, matching Logic to within one percent (thanks to Douglas Carmichael).
- FLAC/OGG
- Fixed: FLAC or OGG samples stored inside a ZIP archive (e.g. discoDSP Bliss or DecentSampler libraries) could fail to decompress.
- Fixed: Stereo (multi-channel) samples stored in a compressed format were truncated to half their length when decompressed while writing to an uncompressed destination.
- Fixed: Implemented workaround for converting 32-bit FLAC files (might not always work).
- Fixed: The number of sample frames (and the bit resolution) of an OGG file was reported as -1, since Vorbis does not store them in its header. Every destination format that works with the sample length wrote corrupt values for OGG sources - e.g. a Waldorf Quantum/Iridium preset converted from an SFZ with OGG samples wrote its loop points as large negative numbers instead of [0..1] fractions, so the device could not resolve the sample maps and showed the "Locate Samples" screen. The frame count is now read from the granule position of the last Ogg page (thanks to Douglas Carmichael).
- Fixed: Decoding an OGG file dropped the final Vorbis block (about 10ms for a 44.1kHz file): the Java Sound wrapper around the decoder stops draining it at the last whole block and ignores the end-of-stream length trim. Every converted sample came out slightly short and sample loops ending at (or near) the end of the file lost their loop end. OGG files are now decoded with a direct decoder that drives the same underlying engine but emits all sample frames - the output length matches the granule position of the last Ogg page, so sample positions and loop points are sample-exact (thanks to Douglas Carmichael).
- Maschine 1
- Fixed: File version number was always written as 0.
- Maschine 2/3 (thanks to Douglas Carmichael)
- Fixed: The modulation (filter/pitch) envelope times were converted incorrectly. When reading, the attack and decay were left in milliseconds instead of seconds (a thousand times too long) and the release skipped the time-curve mapping entirely; when writing, the release skipped that mapping as well. The modulation envelope now uses the same conversion as the amplitude envelope.
- MPC
- Fixed: Program in XTY file was not read.
- Omnisphere
- New: Added support for reading envelope slopes.
- New: If the required folder structure is not found when reading an Omnisphere preset, the files are now also searched in the same folder as the preset file.
- Fixed: Reading an Omnisphere preset with multiple sample voice elements did only return the samples of the last voice.
- Fixed: Save formatting of ampersand character when writing.
- SoundFont 2 (thanks to Douglas Carmichael)
- New: A note is logged when the analyzed sample pitches of a preset consistently contradict its root keys by whole octaves, so presets that will sound octaves off are visible before converting (several E-mu E4 Producer Series presets carry roots one octave above the samples' true pitch) - the new Transpose processing option can correct this.
- New: Added a "Keep mismatched stereo samples as mono" source option (off by default). Some SoundFonts - notably commercial E-mu banks - carry unreliable stereo links that flag two unrelated mono samples as a stereo pair; if their left and right halves also differ in length they were welded into a single stereo sample. When the option is enabled a length mismatch keeps the two samples separate as mono (a pitch or sample-rate mismatch always does). It is off by default because some banks contain genuine stereo pairs whose channels differ slightly in length.
- Fixed: "Marker" presets that reference no samples (commercial SoundFonts often include one or two named after the vendor or copyright, e.g. "E-mu Systems 2007") were converted into empty instruments. Presets without any samples are now skipped.
- Fixed: Marker presets whose samples contain only digital silence are now skipped as well - the E-mu E4 Producer Series banks mark their vendor presets with half a second of dithered silence instead of no sample at all.
- Fixed: Stereo pairs with one channel that simply carries extra frames at its start (its loop and its length are offset by the same amount, e.g. every right channel sample in the DigitalSoundFactory E-mu E4 banks is 1 frame longer and loops 1 frame later) are now re-aligned when the channels are combined, instead of writing a skewed stereo file and warning about a loop mismatch.
- Fixed: The "left and right samples do not match" notices (differing pitch, sample rate or length)...
ConvertWithMoss 18.1.1
- New: If the source does not contain pitch bend values, the default is now 2 semi-tones (instead of 0).
- Ableton
- Fixed: Created files could not be opened if the source file did not contain a loop.
- Akai MPC
- Fixed: Root note was not read from WAV file when missing in XML.
- Ensoniq EPS/EPS16+/ASR-10
- Fixed: Samples had appended silence which doubled the length of the sample.
- Omnisphere 3
- Fixed: Pitch-bend was scaled wrong.
ConvertWithMoss 18.1.0
- New: Added CLI parameters ProcessAlwaysResample and ProcessLoopCrossfade.
- New: Added processing option to set a fixed loop cross-fade.
- New: Redesign of processing dialog.
- Elektron Tonverk (thanks to Douglas Carmichael)
- New: Sample chunks are only written when a loop is present and instrument/broadcast audio chunks are off by default since the Tonverk WAV parser is strict (factory files only contain 'fmt ', 'data' and 'smpl' chunks).
- Fixed: The preset file is now written with the correct '.elmulti' extension (was '.emulti') which the Tonverk requires.
- Fixed: Samples are now physically trimmed to the zone start/end instead of writing 'trim-start'/'trim-end' which the Tonverk only supports for single-file multi-samples and rejected the preset otherwise.
- Fixed: Loop positions written to the preset file were not updated for re-sampling and trimming. Loops are also clamped into the sample boundaries and short single-cycle loops keep their exact length when re-sampling to prevent pitch drift.
- Fixed: A velocity layer with velocity 0.0 made the Tonverk reject the whole preset and import the WAV files as loose samples. The factory default velocity is used instead.
- Fixed: The key-center was written with an inverted tuning direction.
- Fixed: Sample file references in the preset file could differ from the written WAV file names if a zone name contained characters which needed to be replaced. Samples are now named following the Elektron factory convention 'Name-VVV-NNN-note.wav'.
- Fixed: 'keep-looping-on-release' is now written for looped samples (the Tonverk otherwise stops looping on key release).
- Fixed: Preset names containing a single quote produced an invalid preset file.
- Ensoniq EPS/EPS16+/ASR-10
- New: Added a 'P' in front of the Patch-number for better readability.
- Fixed: EFE files which use "Instrument" instead of "Instr" as the file type identifier could not be loaded.
- Omnisphere 3
- Fixed: Samples with a delayed play-back start were not written (empty db-file).
ConvertWithMoss 18.0.0
- Added support for Elektron Tonverk emulti.
- Added support for Omnisphere 3.
- Added support for reading Roland S-50, S-330, S-550, W-30.
- Added support for reading Roland S-750, S-770, S-760, DJ-70, DJ-70 MkII, and SP-700.
- Added support for loop tuning: Ableton ADV/ADG, EXS24, Korgmultisample, Kontakt, SFZ, YSFC (partially).
- New: Processing can now up-sample as well (option: 'Always re-sample').
- New: Removed renaming feature.
- New: Made settings and processing dialogs non-resizable.
- Fixed: Processing did not work when Normalize was not enabled.
- Fixed: Processing did not work for 12-bit samples.
- 1010music samplers
- New: If there are overlapping sample zones which so far cannot be handled by the 1010music samplers, the overlapping ones are removed to create limited but working output files.
- Akai MPC
- New: Combined "Akai MPC Keygroup" and "Akai MPC Project/Track" detectors to "Akai MPC Modern".
- New: Added support to read JSON based .xpm files.
- Akai S1000/S3000
- Fixed: Loops were not imported.
- ISO File
- New: Added detection of Ensoniq EPS/ASR ISOs.
- New: Added detection of Roland images.
- Kontakt 4
- Fixed: Added some workarounds for malformed umlauts in author field.
- Korgmultisample
- Fixed: Sample files are now already checked for existence during scanning the sources. If the sample file is not found, it is searched in the same folder as the korgmultisample file.
- NI
- New: Renamed "Kontakt NKI" to "NI Kontakt".
- New: Renamed "Maschine Sound" to "NI Maschine".
- SFZ
- New: Improved layout of metadata header with long description texts.
- WAV
- Fixed: When writing WAV files the padding byte was counted as content.
- Fixed: When writing WAV files preserve the chunks 'meta', 'atem' and 'ID3 '.
- Fixed: Don't overwrite WAV samples multiple times if they already exist
- Fixed: Failed resolution conversions are now logged properly.
- Fixed: Conversion from 32-bit float to 16-bit PCM did not always work.
ConvertWithMoss 17.1.0
- Added support for reading Ensoniq Mirage disks (*.hfe, *.img, *.edm).
- Added support for reading Ensoniq EPS/EPS16+/ASR-10 disks (*.hfe, *.img, *.gkh, *.ede, *.eda, *.efe).
- Ableton Sampler
- New: Read/write of round-robin setting (requires Ableton 12).
- New: Add a creator option to either write files for Ableton 11 or Ableton 12.
- New: Constant Power XF is set now to true (instead of linear crossfade).
- Fixed: Transposition was off by 1 octave when writing.
- EXS24
- Fixed: Group volume was not decoded correctly.
- Yamaha YSFC
- Fixed: Samples need to be fixed to 44.1kHz (includes up-sampling).
ConvertWithMoss 17.0.0
- Added support for reading Akai MPC60 programs.
- Added support for reading Akai MPC500/MPC1000/MPC2500 programs.
- Added support for reading Akai MPC2000/MPC2000XL/MPC3000 programs.
- Added support for reading Akai S900/S950 programs.
- Added specific entry for Akai S1000/S3000 (and not only generic ISO). Searches for IMG files as well.
- New: Source formats show their file endings with a tooltip.
- ISO File
- New: Added support for MPC2000 format.
- New: Shows an info text if it is a plain ISO 9660 file which can be accessed with OS functionality.
- Korg KMP
- Fixed: Velocity layers need to be stored in separate KMP files.
- Yamaha YSFC
- Fixed: Libraries are now limited to a max. of 128 performances.
- Fixed: The performance names are now limited to 20 characters.
ConvertWithMoss 16.5.1
- Fixed: Processing: Sample reduction did not always work and improved logging.