Changes since v1.08:
v1.09 - 12.02.2020
- Fix: If a corrupt .XM doesn't contain all the sample data at the end of the
file, try to load what is left instead of showing an "Out of memory!" message.
- Fix: Prevent upscaling factors higher than 2x on ARM devices. Fixes extreme
slowdowns on Raspberry Pi 4 with 2k or higher resolution screens.
- The .MOD importer has been slightly improved for oldschool 15-sample formats
- The .S3M importer has been slightly improved for certain effect cases not
compatible with FT2.
- Audio mixer: Internal voice volumes are now calculated with 256 times higher
precision than FT2. Some other changes were also made to make sure the audio
mixing is always done at max precision regardless of the "amp" setting in
the config screen. These are changes that most people won't ever be able to
hear, but the speed performance of the mixer is still the same, so why not.
- The audio dithering routine has now been improved (rectangular->triangular),
and it's now enabled by default on a fresh configuration, or if you reset it.
Changes since v1.07:
v1.08 - 08.02.2020
- Critical bugfix: Saved instruments (.xi) would end up being broken!
- Linux bugfix: Loading a song by passing it to the executable's argument from a
terminal wouldn't work in most cases...
- macOS/Linux bugfix: Don't show ".." directory when you are in root
- Code fix: We don't want our main instrument/sample structs to be packed, only
the ones used during saving/loading of songs/instruments. This doesn't change
the behavior of the FT2 clone, but it prevents unaligned pointer access in the
replayer and other routines.
- Small optimizations to pattern data rendering, those routines are quite slow!
- Updated HOW-TO-COMPILE.txt
Changes since v1.06:
v1.07 - 30.01.2020
- Bugfix: After deleting the very last vol/pan envelope point, the currently
selected point wouldn't be properly set. This is actually a behavior/bug
from real FT2, but I wanted to fix it anyway.
- Bugfix: Attempting to add a vol/pan envelope point to a completely empty
envelope would mess things up. Empty envelopes in an allocated instrument
shouldn't happen, but it happens when loading certain non-FT2 XMs.
- Bugfix: The envelope plotter could display garbage on envelopes with tick
offsets above 324. Now it just cuts off at the end instead. Also yes, such
envelopes can be made! OpenMPT, f.ex., has no 0..324 limit for envelope ticks
in XM mode.
- Bugfix: A couple of system request dialogs had the wrong button captions.
(Yes/No instead of OK/Cancel).
- When pressing Esc. and the song is unmodified/saved, you'll now get the
classic joke quit dialogs from FT2 asking if you really want to quit.
- Some minor optimizations and minor fixups. Nothing to write home about...
- Windows 32-bit: This version now requires your CPU to have the SSE2
instruction set. Intel CPUs from around 2000 (AMD around 2003) and later
have it. In other words, it's not worth my time trying to make the clone
run on such old machines!
Changes since v1.05:
v1.06 - 15.01.2020
- Bugfix: Scopes were not doing backwards sampling correctly on pingpong loops.
This would also affect the sample playback line in Smp. Ed. It was especially
noticable on very low sampling rates (note).
- For devs: Added HAS_MIDI compiler pre-processor flag. If not defined, MIDI
will not be used in the clone. Handy for situations where rtmidi and/or
libstdc++ can't be used/compiled.
Changes since v1.04:
v1.05 - 28.12.2019
- Bugfix: When copying marked text in a text box, too much data would be copied
- Changed default WAV rendering frequency (Harddisk recording) to 48kHz
- MASTER_SITES has been updated to Github since the author has moved to the
source there.
Changes since v1.03:
v1.04 - 17.12.2019
- Fixed rare crash (or strange behaviors) when changing pattern and/or pattern
length while the song is playing.
- Properly restore channel mute flags when loading a new song (fixes mute bugs)
- Fixed a few bugs with different pattern buttons (Ins./Del., Ln. up/down etc)
- Config: "Hardware mouse" was changed to "Software mouse" (and "Software mouse"
is now disabled in the default config).
- Added a routine to create scaled FT2 mouse cursors for software mouse mode,
though the "busy mouse" will stand still and not animate.
Hopefully the new default "hardware mouse" mode will satisfy some people!
- MacOS: Pass NDEBUG to clang preprocessor defines, to prevent debug code
from being compiled in release mode (performance increase).
- MacOS/Linux: make scripts had Windows linefeeds and would thus break!
* Note: I highly recommend that you go to "Config -> Layout" and disable
"Software mouse"! This will make the mouse way less laggy. However, it will
still be one frame delayed internally unless you disable VSync.
Changes since v1.02:
v1.03 - 28.11.2019
- A ton of radiobuttons in the GUI simply did not work anymore in v1.02.
I can't believe I didn't notice until now. Sorry!
Changes since v1.01:
v1.02 - 23.11.2019
- You can now select the audio input (sampling) rate in the config screen.
(44.1kHz, 48kHz or 96kHz)
- Fixed some misinformation in the "Known bugs" help text ("clear sample")
- Fixed some "original" typos in the UI texts (and also renamed stuff that
wasn't very understandable).
- Removed the "Very large" buffer size setting in Config -> I/O devices
- Increased the width of the Disk Op. filename text box
- Tweaked some other minor stuff
- Minor pkglint(1) fixes
Changes since b168:
v1.00 - 25.09.2019:
- This is now the first "stable" release, and it's not in beta anymore
- Some very small fixes to the scopes
- macOS: Added ctrl+cmd+f keybinding to toggle fullscreen (same as alt+enter)
- macOS: Fix huge delay before main window pops ups when opening .XMs associated
with the clone by double-clicking on them.
- macOS: Finetuned a couple of things in the .app package. Version string and
"document types" for file->program association.
- Renamed binary/folder/zip names
Committed during freeze as the software has taken up a stable release, also
leaf package. ok wiz@
Changes since b167:
Beta #168 - 04.09.2019
- Forgot to remove some Nibbles test code that resulted in your score being
set to 1234567 whenever you lost a life.
Removes outdated MASTER_SITES.
Changes since b166:
Beta #167 - 25.08.2019
- Crashfix: After loading a sample from a file, the tracker would start to
behave strangely and could crash in certain scenarios. This is yet another
bug from beta #163. Sorry for all the serious bugs after that version,
but I think I have fixed them all now!
- Bugfix: Custom user colors/palette wouldn't be saved to config at all
Changes since b165:
Beta #166 - 14.08.2019
- Bugfix: The clone would crash if you attempted to paste sample data to an
empty instrument (not allocated). This bug was introduced in beta #163.
Changes since b164
Beta #165 - 09.08.2019
- Bugfix: If all 22 character slots in a sample's name were used, weird things
would happen, and could very well end in a fatal crash where no backups
would be saved (!). I should get the "Most Stupid Bug" award for this one.
- Bugfix: Fixed a possible issue with Nibbles highscore name entering if you
used all character slots.
1. Should fix builds in Ubuntu / CentOS.
2. Rewrites the build system to use cmake.
3. Adds ALSA support in Linux.
4. Bumps PKGREVISION.
Thanks to nia@ for helping re-write the build system.
Local changes merged upstream.
Changes since b163
Beta #164 - 05.08.2019
- Applied some NetBSD/illumos/SmartOS code patches that got sent in (untested)
- Removed SSE macros to let the compiler optimize instead, and to make cross
compiling even simpler. We don't really need them anymore since most of the
speed-critical math in the clone is fixed-point these days.
- macOS: Fixed intensive CPU usage if another window is completely covering the
FT2 clone window.
- macOS: The SDL2.framework file in the FT2 clone app was larger than it needed
to be, which was fixed by the SDL team not long ago. It has been replaced.
- Small code cleanup
Changes since b162
Beta #163 - 29.07.2019
- SDL updated from v2.0.9 to v2.0.10
- Bugfix: Don't unmute channels when loading a new song (FT2 behavior)
- Bugfix: Disk Op. didn't list correct kB/MB/GB filesizes (1000 vs. 1024)
+ rounding upwards on kB/MB/GB sizes.
- The Trim screen is a bit cleaner looking now
- Instrument slots are now allocated as needed (FT2 behavior). This new
behavior means little to the user, but makes it easier for me to port the FT2
code more directly when it works like this. This also means that XMs are
now saved exactly the same way FT2 does it, except for certain uninitialized
instrument header fields (FT2 bug) being set to zero.
- Updated the help text
1. Adds the __sun / sun macro check.
2. libiconv is now explicitly linked to allow multi-platform builds.
3. Uses stat(2) in SmartOS for checking directory types.
Thanks to wilbury for testing.
Changes since b161
Beta #162 - 12.07.2019
- Added a "Hardware mouse" option in Config -> Layout
- Changed the help text a little ("Problems/FAQ" and "Known bugs")
Changes since b160
Beta #161 - 04.07.2019
- Bugfix: If you held down a sample data loop pin while a system request was
about to be shown, the loop pins would act strange lateron.
- Bugfix: Fixed a MIDI-related memory leak when pressing "Load config." in the
Config screen.
- Bugfix: The palette editor scrollbar thumbs would not draw properly when
dragging them.
- Bugfix: Attempting to sample in stereo (Smp. Ed.) at the last sample slot
would result in a crash.
- Bugfix: Using keyboard shortcuts to interact with a system request/message
could trigger an unwanted "note key up" event after the box closed. (déjà vu)
- The palette editor is now rewritten to behave exactly like original FT2
- Code cleanup
- Updated src\gfxdata\bmp\readme.txt
Changes since b159
Beta #160 - 19.06.2019
- Bugfix: Certain instrument properties could be modified even if the current
instrument was zero. This is a special ins. number for pattern editing, it's
not a real instrument. (You can set ins. #0 by pressing 0 on the numpad).
- Bugfix: It was impossible to select an instrument higher than 0x60 (100) when
using the numpad keys.
- Bugfix: "Srnk." (shrink pattern) would erase the last row after its operation
- Bugfix: When loading a floating point .wav, it would only load silence unless
the amplitude peaked at max (1.0).
- Bugfix: 16-bit mono .aiff files would not load correctly at all!
- When loading 24-bit .wav/.aiff files, properly normalize amplitude before
converting to 16-bit. This now takes up more CPU time and RAM, but it's worth
it.
- Default instrument envelopes were always read from preset slot #1. I don't
like this at all, as it could mess things up when loading sample-only songs.
It has now been changed to always use the stock envelope values when loading
such files or when a new project is started (or instruments zapped).
- Properly reject .it (Impulse Tracker) modules when attempted to be loaded
- Code cleanup. Proper space alignment for special tab indents, removed
extreme use of parenthesis, spaces etc.
Changes since b158
Beta #159 - 15.06.2019
- The audio sampling tool in Smp. Ed. now supports stereo sampling
- Several tools in Smp. Ed. (Mix, Resample, Echo, Volume) now accepts
pressing Enter on the keyboard.
Changes since b157
Beta #158 - 02.06.2019
- Removed the sample unrolling optimization from beta #157 because it had
problems with small pingpong looped samples... D'oh!
Changes since b156
Beta #157 - 27.05.2019
- Fixed: Songs passed to the binary as an argument had to include full path or
else it would refuse to load.
- Fixed: When loading unsigned 8-bit stereo .WAVs and reading the left or right
channel only, the very last sample point would be wrong (and cause a click).
- Fixed: Properly clamp Disk Op. filesizes to 2GB on non-Windows systems
- AIFF/WAV sample loading now takes up less RAM during loading. WAV loading is
also faster, especially when loading 24-bit samples.
- Never attempt to load files bigger than 2GB (not compatible), and also ask
the user before loading files over 128MB in size, in case it was by accident.
- Allow loading even more broken/quirky .MOD/.FT songs
- Pause audio mixer while hand drawing sample data with the mouse, this is
needed for safety reasons. (original FT2 does this too)
- Unroll tight sample loops to prevent the audio channel mixer from doing many
loop wrapping iterations (minor optimization). This is only applied if there
is no data after the loop end point. Also yes, this is done in real time
as you modify sample data or load new samples.
- Small code cleanup
Changes since b155:
Beta #156 - 19.05.2019
- Channel volumes are now internally calculated with four times more precision.
This means that you will have more volume details, but only noticable on very
low channel volumes (f.ex. global vol. or instr. vol. being close to zero).
Changes since b154:
Beta #155 - 18.05.2019
- The old dithered 4-color FT2 logo in the About screen has been replaced with
a true color version that I tried to somewhat replicate myself. The old one
simply didn't look very nice when upscaled...
Sorry for the lousy changelog for this version!
Changes since b152:
Beta #153 - 29.04.2019
- Fixed a bug where rendering songs to WAV at 192kHz with a low BPM could
make the program crash.
- Small audio code cleanup
Changes since b150:
Beta #152 - 27.04.2019
- Fixed a potential calculation overflow bug in the mixer code in beta #151.
This is a critical fix, so please update.
- Windows: Updated the Visual Studio project from 2017 to 2019
Beta #151 - 25.04.2019
- Fixed: The interpolation routine was slightly wrong when playing backwards on
pingpong-samples.
- Small mixer optimization for very tight sample loops
- Fixed yet a problem with the sample playback line in Smp. Ed. when flicking
through the instrument list.
- Fixed a bug where the scopes and sample playback line in Smp. Ed. would not
work correctly with the "Play Wave/Range/Display" function, when the currently
selected sample is not 0.
Changes since b149:
Beta #150 - 22.04.2019
- Less strict validation of instrument loading in XM files (fixes some quirky
.XM modules refusing to load).
Changes since b148:
Beta #149 - 18.04.2019 (updated the same day)
- Bug fix: If the window is minimized while you double-click on an associated
module in your OS, maximize the window before asking if you want to discard
unsaved changes.
>> Updates:
- Updated rtmidi to version 4.0
- Windows: Updated SDL to version 2.0.9 (finally found a way to prevent a
serious bug with 2.0.9, hence why I have been using 2.0.8 for a long time).
- Increased "volume toolbox" (Smp. Ed.) range from -200..200% to -500..500%
- Windows: Default Disk Op. directory is now "\Users\username"
Changes since b142:
Beta #147 - 08.04.2019
- Fixed a bug from beta #146 where the sample playback line in Smp. Ed. could
wrongly be rendered if you switched samples after using the
"Play Wave/Range/Display" function.
- Updated some of the help text in "Known bugs"
Beta #146 - 02.04.2019
- Fixed a bug where you couldn't select envelope points appropriately
(bug present since beta #140).
- Fixed a problem where the pattern data scrolling would start to stutter more
if you left the song playing for a minute or so.
- Fixed a problem that made the scopes slightly delayed to the music. Most
people won't notice a difference, though.
- Fixed a scope bug where it could display one frame of bogus data before a
new sample trigger.
- More fixes to .MOD/.STM/.S3M import
- Made some changes to the help text
("How to use FT2", "Problems/FAQ", "Known bugs").
Beta #145 - 31.03.2019
- Fixed some bugs in the .MOD saving routine
- Slightly improved the .STM loader
Beta #144 - 30.03.2019 (updated 30.03.2019)
- Further fixing to prevent more possible stutter with vsync (60Hz monitor)
on some monitors (rare case).
>> 30.03.2019:
- Sometimes the mouse would be off center when toggling fullscreen mode
- Forgot to round when doing mouse scaling
- 1.5-bit dithering wasn't implemented properly
Beta #143 - 29.03.2019
- Scopes have been lowered from 60Hz to 55Hz to prevent random stutters
on some systems because of timing interference. If your monitor is not
running at 59Hz/60Hz, they will stutter anyways.
- Fixed a bug where the pattern delay (EEx) effect was not reset every time you
press Play.
Changes since b141:
Beta #142 - 18.03.2019
- XM loader: fixed a bug where XMs with stereo samples would display a
warning message box for every stereo sample loaded, instead of just one.
Changes since b140:
Beta #141 - 13.03.2019
- Fixed compiler errors when compiling for non-x86 platforms
- Fixed some fullscreen-bugs with the mouse when using two or more monitors
with different screen resolutions.
Changes since b139:
Beta #140 - 08.03.2019
- The 32-bit Windows version of the FT2 clone no longer requires the SSE2 CPU
instruction set to function, but still takes advantage of it if it's present.
- Fixed a bug where the sample data scrollbar was broken on very long samples
- Fixed a bug where you could interact with the scopes while certain types
of tool boxes were shown (Smp. Ed.).
- Fixed a bug where the "Add memory to sample" checkbox in the Echo tool
(Smp. Ed.) was always unchecked the next time you opened the tool.
- Fixed a bug where "Get maximum scale" in the Volume tool (Smp. Ed.) could
return bogus values on *very* silent parts.
- Fixed a bug where sample data could be incorrectly drawn when zoomed in as
far as you get while scrolling, on a very big sample.
- Bug fix: Make sure a sample never exceeds max sample length while editing it
- Lowered max sample length from 2GB to 1GB to prevent crashes
- Some missing keyboard bindings were added to the "Keyboard" section in the
help text.
- Some potential time-consuming tasks were put in threads to not temporarily
halt the program (Smp. Ed. functions).
- The Echo tool in Smp. Ed. will now listen to mouse button down/ESC/SIGTERM
as a way to force-quit it. This tool can take literally forever if abused.
- Code cleanup (now using "bool" type, etc)
Changes since b138:
Beta #139 - 06.03.2019
- The mixer interpolation routine would overflow if a sample's pingpong
loop length was 1.
- Removed the 32000Hz audio frequency setting (kinda pointless these days)
- Small optimization on scope rate calculation
Changes since b135:
Beta #137 - 14.02.2019
- Mouse scaling was 100% broken on Macs with retina displays (high-DPI).
Sorry! This is fixed now.
Beta #136 - 14.02.2019
- French keyboard layout users can now enter numbers in the pattern data
with the left SHIFT key (like normal for the FR layout).
- You can now toggle extended pattern editor mode with the print screen key
(like in real FT2. You can also use CTRL+Z as always).
Changes since b132:
Beta #135 - 12.02.2019
- Click delay on repeated buttons is now lowered to better match real FT2
- Certain up/down buttons now inc/dec just like real FT2, e.g. if you hold it
down it will inc/dec semi-fast for a little bit, then faster (two-phased).
- Some scrollbars were supposed to scroll instantly with no delay
- No need to do 64-bit calc. in the scrollbar routines, reverted to 32-bit
- No need to do floating point operations on mouse coord scaling!
- Some minor things were changed to better match real FT2
- Code cleanup
Beta #134 - 11.02.2019
- Mouse position was incorrectly scaled in fullscreen mode (the coursor wouldn't
move in the correct speed in some cases).
- Code cleanup (now using assert.h macro, removed some unused variables/code)
Beta #133 - 08.02.2019
- Very minor optimization to the replayer rate calculation routine
- Code cleanup
Changes since b130:
Beta #132 - 29.01.2019
- Fixed a bug where the sampling position line in smp. ed. could be drawn
wrongly for a split second when switching between samples you're jamming.
(samples, not instruments).
- Code cleanup
Beta #131 - 26.01.2019
- The linear interpolation routine in the audio channel mixer has been
replaced with quadratic interpolation. This shouldn't cut off as much treble
in the sound as linear interpolation. Though it comes with a price:
The audio channel mixer requires slightly more CPU power, but it's still a
relatively fast mixer. If you listen closely to songs with a lot of treble,
you'll (hopefully) hear that they feel more life-like than before.
Please note that this makes a minor difference, don't expect a lot!
- Fixed a bug where the mouse cursor could be stuck in busy mode (thus
blocking the program) when certain errors happened during loading/saving.
- Saving an instrument now uses half the amount of RAM as before.