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.
Changes since b129:
Beta #130 - 14.01.2019
- Don't enable SDL2 text input when it's not needed. Potentially removes
~2ms spikes on every key press.
- No need to initialize SDL2 timers when we don't use them anymore!
Changes since b127:
Beta #129 - 10.01.2019
- Prevent doing 64-bit MULs if the scopes are inactive (rate calculation)
- WaitVBL() function for scopes and video (when no vsync) has been changed to
include fractional precision for "next frame time" counter. Note that this
is a minor change and does not magically remove video stuttering.
Beta #128 - 06.01.2019
- If speed (ticks per row) is set to 0, reset it to the initial value when
pressing play.
- Clamp BPM/speed when loading modules so that the values are not illegal
- Some other minor fixes
- Code cleanup
Changes since b121:
Beta #127 - 02.01.2019
- Remove overflown notes (> B-9) when loading modules
- Remove overflown efx/notes when loading tracks/patterns
- Removed some unneded logic in the pattern editor text routines
- Code cleanup
Beta #126 - 29.12.2018
- Pattern row quantization (record) was broken in beta #125
Beta #125 - 28.12.2018
- Fixed an issue with sample data peaks while zooming in/out in Smp. Ed.
- The playback timer is now counting BPM ticks from the replayer
instead of spawning/deleting a 1-sec SDL timer every time you
play a song.
- Updated the "Keyboard" and "Problems/FAQ" help texts
Beta #124 - 17.12.2018
- The scrollbar in the MIDI input device list didn't work
- Fixed some minor audio/video timer problems
- More verbose error checking on program startup
Beta #123 - 16.12.2018
- Rewrote the Help screen routines to be exact to real FT2.
It now uses less RAM.
- Some GUI decoration was missing in extended pattern editor mode
- Code cleanup
Beta #122 - 15.12.2018
- Windows: Reverted back to SDL2.0.8 because of the keyboard
shutting itself off and on randomly with SDL2.0.9.
Really strange stuff... It doesn't happen in SDL2.0.8.
- More bug fixes on sample hand editing (Smp. Ed.)
Changes since b120:
Beta #121 - 09.12.2018
- Completely rewrote how system requests (message boxes) work, which
simplifies its usage a ton.
- Vsync now works properly in macOS Mojave again. How? Well, if you
compile with XCode 9 on High Sierra instead of XCode 10 on Mojave,
it just magically works!
- Fixed a couple of bugs with the "Delete/Rename" modes in Disk Op.
- Fixed some textbox routine bugs
- Fixed a bug with loop points when using the Mix function in Sample Ed.
- Fixed an off-by-one error in the y coordinate on sample hand-edit
- Waveform drawing: Fixed a rounding error on the negative part of the
waveform while displaying a zoomed-out sample
- .pat files were accidentally not listed in instrument mode in Disk Op.
- Big code cleanup. Let me know if I made any new bugs, it's very possible!