Changes since v1.40
v1.41 - 19.11.2020
- Code refactoring and code cleanup
- Fixed minor BPM duration issues when rendering song to WAV
- Fixed some mouse problems in fullscreen mode on multi-monitor setups
- Bugfix: Properly change pattern length after loading .xp pattern files
(FT2 doesn't do this, but I think this makes sense!)
Changes since v1.39
v1.40 - 14.11.2020
- Added the option to stretch out the image in fullscreen mode without having
to enable the blurry pixel filter. This is now called "Stretched", and can be
found in Config -> Miscellaneous. Keep in mind that this will result in uneven
pixel widths (aliasing), which is why the pixel filter exists. :)
- Removed the "Go fullscreen" button in Config -> Miscellaneous to make room
for the "Stretched" checkbox. To toggle fullscreen mode, press Alt+Enter
(Ctrl+Cmd+F also works on Mac).
Changes since v1.38
v1.39 - 08.11.2020
- Fixed yet another issue where junk could be drawn after the loop end point in
the sample data's waveform in the sample editor (if zoomed out).
- Fixed an issue with loading XMs with more than 128 instruments (OpenMPT etc).
This only worked if the extra instruments were empty. Now it will properly
load the extra instruments and discard them after the loading was complete
(since we only support up to 128 instruments).
- Small code cleanup
Changes since v1.36
v1.38 - 01.11.2020
- Fixed two possible pattern length bugs while switching to a new, shorter
pattern while the song is playing.
- Mixer code cleanup (generates smaller code now)
v1.37 - 29.10.2020
- The 4-tap cubic spline resampling interpolation has now been replaced with
8-tap windowed-sinc (polyphase) for better audio quality.
- The mixer is now using 64-bit float precision instead of 32-bit float
precision. We only mix up to 32 channels anyway, which is not very CPU
intensive.
- Volume/panning envelope interpolation is now using floating point precision
instead of 8.8 fixed-point precision.
- Fixed a bug where the scopes would not shut down if you triggered an
instrument that is not allocated (empty).
- Small code cleanup
Changes since v1.35
v1.36 - 05.10.2020
- Bugfix: The 'S' volume column effect (set vibrato speed) should be ignored if
the parameter is zero.
- Bugfix: The Kxx (key off) effect was not behaving like FT2 for values >$0f
- Bugfix: If attempting to WAV-render a song with an EEx (pattern delay) effect
on the first row of a pattern, the render would end too early.
- Bugfix: In Disk Op., when loading a new module/sample, change the loaded
filename extension according to save mode (f.ex. "test.xm" -> "test.wav").
- When changing the song position from the UI, reset global volume, and also
reset pattern delay and other possible conflicts. FT2 doesn't do this, but I
feel that this is a sensible thing to do.
- Made the About screen a bit more visually appealing
- Updated the "Known bugs" section of the help text
- Replayer code cleanup
Changes since v1.34
v1.35 - 27.09.2020
- Added an option to change interpolation mode to 2-tap linear, just to match
real FT2. This interpolation method is of worse quality than the current one
(4-tap cubic spline).
- Fixed some sample tap bugs with the cubic spline resampling interpolation
- Fixed an issue where unwanted sample data could be shown at the loop end
point of a looped sample in the sample editor.
- Updated some parts of the help text
- Small code cleanup
Changes since v1.31
v1.34 - 09.09.2020
- If trying to load an XM with >32 channels or >16 samples in an instrument,
discard the extra channels/samples and allow the loading to happen (but
warn the user about it).
- Same as above for .XIs (instruments) with >16 samples
- Fixed a possible crash after trying to load unsupported XMs
- Fixed loading of XMs with 256 orders and/or an orderlist padded with 0xFF
at the end.
v1.33 - 07.09.2020
- Right Shift key is now correctly used for "Record Pattern" instead of
"Record Song" (this was wrong).
- For Mac keyboards: Left Command key can now be used for "Play Pattern"
(since some Mac keyboards don't have a Right Alt key).
PS: You now need to use Left Ctrl (instead of Left Command) for
"select all/copy/paste" keys in the sample editor and for marked text in
the UI.
- Added some Mac-specific text to the "Help -> Keyboard" section
v1.32 - 05.09.2020 (updated 06.09.2020)
- Fixed crash in "Amiga frequency table" mode if period (freq) would reach 1.
Not sure if this is even possible, but better safe than sorry...
- Fixed a small initial resampling interpolation error on looping samples
whose loop start (Repeat) is above 0.
- Fixed a CUBIC_PHASES off-by-one typo, which could probably mess up the
resampling interpolation in very rare cases.
- Pre-calc cubic spline LUT on init, instead of including the table in the
binary.
- Fixed line-encoding on Linux makefiles
- Cleaned up some messy logic in tickReplayer() (behavior is the same)
>> 06.09.2020:
- Fixed a bug with playing empty patterns in v1.32
Changes since v1.30
v1.31 - 28.08.2020
- The audio channel mixer is floating-point based now, for a theoretical
precision improvement.
- Windows: The 32-bit version now has the same mixer as the 64-bit version
(e.g. you can use >48kHz rates).
- Fixed an issue where the channel panning could overflow if pan was close to
255 ($80) and you had a panning envelope going upwards.
- Fixed another issue with dithering in 16-bit audio output mode (d'oh)
- Dithering is now always enabled for 16-bit audio output mode, and the
"dithering" checkbox has been removed from the config screen.
- Disk op.: When listing modules, only list .wav files if "Save as:" is
set to "WAV".
- Fixed a misplaced pixel on the "Usable" mouse pointer type graphics =)
- Code cleanup (more sensible variable names in the audio mixer)
Changes since v1.27
v1.30 - 23.08.2020
- Fixed an off-by-one issue when dithering is enabled in 16-bit audio mode
- The WAV renderer now defaults to the same frequency/bitdepth as the ones
selected in the "I/O devices" config screen.
v1.29 - 18.08.2020
- Fix wraparound-issues when using Tab in the pattern editor
v1.28 - 16.08.2020
- Bugfix: Don't redraw the instrument switcher when pressing numpad keys
while certain screens (about/config/help/nibbles) are open.
- Slightly increased the volume precision in the audio channel mixer.
This is most likely not measurable.
- Fixed some errors in the help text
- Small code cleanup
Changes since v1.26
v1.27 - 24.07.2020
- Fixed a small stuttering issue in the audio/video syncing
- Bugfix: When rendering a song to a 16-bit WAV while having audio output
set to 32-bit, you'd never get dithering in the WAV render.
- Further optimization of the audio channel mixer (~5-16% perf. increase)
Changes since v1.25
v1.26 - 23.06.2020
- Song BPM is now more accurate (it used to be slightly off for some BPMs)
- Arpeggio is now 100% FT2-correct for ticks 31..99 (speed 31..99 is only
obtainable by hex-editing XMs).
- Fixed compiling error on ARM CPUs
- Code cleanup
Changes since v1.24
v1.25 - 12.06.2020 (updated 13.06.2020)
- Instrument envelopes now show x/y coords in the top right corner in Instr. Ed.
- The song tempo (BPM) is now *slightly* more accurate for certain BPM values
- Fixed a bug with the XFade function on 16-bit pingpong samples
>> 13.06.2020:
- Make the x/y instr. envelope coords text a bit cleaner
Changes since v1.23
v1.24 - 13.05.2020
- Fixed a bug with saving looping 16-bit samples as .RAW/.IFF/.WAV. Two sample
points somewhere in the waveform would be set to wrong values.
- Linux: Fixed the mouse not working with KMSDRM (hopefully)
Changes since v1.22:
v1.23 - 29.04.2020
- Bugfix: The "default dirctories" paths in the config only worked for
modules and not the other types (fixes GitHub issue #6).
- A much needed code refactoring of data structs. The code now also compiles
with GCC 10.
Changes since v1.21:
v1.22 - 27.04.2020
- Fixed crash when loading XMs with pattern lengths above 256. They are now
safely truncated, and the user gets a warning message about the truncation.
- Allow loading overflown BPM/speed values from quirky XMs, up to BPM 999
and speed 99 ("jk_error_txt.xm" is an example for quirky BPM/speed values).
- Tiny code cleanup
Changes since v1.20:
v1.21 - 22.04.2020
- macOS/Linux: The initial working directory would not get properly set when
opening Disk Op.
- Bugfix: The custom directory paths in the config could contain unwanted junk
at the end if the loaded config file was saved from real FT2.
- Bugfix: If you were skilled enough to beat the very last Nibbles level, your
potential entry in the highscore table would show garbled level graphics.
- Show a warning if either of the Buttons/Desktop palette colors are so dark
that you might have issues seeing the walls in Nibbles.
- "Space Pigs" palette replaced with a new (low contrast) "Dark mode" palette
- Some more small miscellaneous fixes not worth of a mention
Changes since v1.19:
v1.20 - 13.04.2020
- x86_64/amd64 users now get 32.32 fixed-point precision in the audio channel
mixer, an extra 192kHz mixing frequency mode (may only work with a larger
buffer size), and double the amount of phases in the cubic spline table. This
will only make an improved outcome in very few cases (like extremely high/low
channel rates), so don't expect to hear any difference. Non-x86_64 users now
lose 96kHz mode as it was a bit unsuitable with 16.16 fixed-point precision.
- The "Volume" function in Smp. Ed. now has more precision and takes less time
to complete. Not that it was slow to begin with...
- Increased the minimum .WAV rendering frequency from 8kHz to 44.1kHz, because
the mixer delta calculations could overflow on such low rates.
- Some more small miscellaneous changes not worth of a mention
- Code cleanup
Changes since v1.18:
v1.19 - 08.04.2020
- The "Trim" function had been 100% broken (and crashes the program) for a
very long time. Sorry for this! This happened after instruments were
changed to be allocated as needed.
- macOS: 48kHz is now the default audio output rate (instead of 44.1kHz)
- For x86_64/amd64 users: The audio channel mixer now has higher fractional
precision on mixing deltas, which is beneficial for 96kHz audio frequency
mode.
Changes since v1.17:
v1.18 - 06.04.2020
- Windows: Fixed files >2GB displaying bogus filesizes in Disk Op.
- Fixed a potential crash in the audio mixer on quirky modules (when a
channel's sampling rate is somehow set to 0).
- Fixed a bug with vertical scrollbars that have a very small thumb (v1.16)
Changes since v1.14:
v1.17 - 03.04.2020
- Fixed some bugs with sample data marking/hand-drawing and sample loop pin
dragging, which appeared in v1.16.
v1.16 - 02.04.2020
- The mouse system has been rewritten so that we don't need to do mouse
capturing while interacting with GUI widgets, which could be buggy sometimes.
- The different Disk Op. item paths (mod./instr./smp./pat./trk.) now behave
exactly like real FT2. I.e. if they haven't been initialized before, they
will be set to the current working directory.
- Scrollbar thumbs are now limited to minimum 9 pixels in length/height, to
prevent them from being difficult to click on.
v1.15 - 31.03.2020
- More improvements to S3M loader. Fixes "satellite one.s3m" and other S3Ms.
- Up/down pushbutton delay has been increased even more, to prevent accidentally
skipping too much.
- Some other small miscellaneous changes not worth of a mention
Changes since v1.13:
v1.14 - 22.03.2020
- Bugfix: The Repeat/Replen. numbers in Smp. Ed. would not show the correct
values for non-looping samples. It should always show the values even if the
loop is disabled. This caused some strange visual bugs...
- Bugfix: Changing sample numbers on the white piano keys in Instr. Ed. was
semi-broken (it would show wrong numbers until you changed to another instr.
and back).
- Bugfix: If you set the current sample to 0E and scrolled down with the mouse
wheel, the sample list would overflow.
- All bitmaps are now present as 4-bit (+ 1x 8-bit) RLE-compressed .bmp files,
and are included in the binary as such. This makes it slightly easier to
edit/add graphics.
Changes since v1.12:
v1.13 - 18.03.2020
- Fixed crash when loading some very specific S3M modules
- Linux: Fixed CMakeLists.txt to work on Arch Linux
- Some other small miscellaneous fixes not worth of a mention
Changes since v1.11:
v1.12 - 13.03.2020
- Bugfix: Some broken XMs/XIs have a non-sense value in the "mute" instrument
field. This is now clamped correctly so that such modules and instruments
will not yield muted sound. This fix was actually present earlier, but it was
broken again some time ago. You will very rarely bump into this issue anyway.
- Micro-optimization to how voice/ramp volumes are calculated (4x DIVs removed)
- Windows/macOS: SDL was upgraded from 2.0.10 to 2.0.12
Changes since v1.10:
v1.11 - 10.03.2020
- Bugfix: The Help screen scrollbars could act strange when switching subjects
- Bugfix: Some of the Instr. Ed. (+ extension) scrollbars could be moved with
the up/down pushbuttons even if the current instrument is not allocated.
This is not supposed to be possible.
- Bugfix: In the Instr. Ed. screen, the "Add" button (vol/pan env.) could lead
to a crash if the current instrument wasn't allocated.
- Bugfix: The piano in the Instr. Ed. screen could show wrong keypresses if
extremely low or high pitches were being played.
- The up/down pushbutton delay has been increased, it's too short in original
FT2 (in my opinion).
- The 4-tap cubic spline interpolation table (for the audio mixer) has been
recalculated in higher precision and more phases. It should in theory be
better, but I can't personally hear any difference.
- Windows: The DPI-scaling is now per-monitor aware instead of system aware.
Maybe this solve the issue of blurry pixels for some people...
- Don't warn the user when loading a song with stereo samples. They will be
mixed to mono anyway, and I don't think it's an important warning to show.
- Fixed some minor grammar errors in some GUI texts
Changes since v1.09:
v1.10 - 03.03.2020
- Bugfix: Channels were internally muted when the tracker was first started.
You'd get no sound when trying to load samples and entering them in the
pattern data. You had to load a song for them to properly unmute...
This has been a bug since v1.04, yikes!
- The audio mixer's resampling interpolation was upgraded from 3-tap cubic to
4-tap cubic, without affecting the performance of the mixer.
- Fixed some bugs in the .PAT (Gravis Utrasound patch) instrument loader
- Fixed several bugs with the "Echo" toolbox (Sampler screen)
- Bugfix: The "relative tone" section of the Instr. Ed. screen would get messed
up if loading a WAV/AIFF sample whose playback frequency is immensely large.
- Code cleanup
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.