Fasttracker II clone changelog (starting from v1.00 and up) NOTE: This may contain stuff that only a programmer understands! v1.79 - 18.03.2024 - Fullscreen mode code has been refactored, as I apparently had coded it the wrong way. "Stretched" mode always fills the whole screen now too, and other issues may have been fixed as well. v1.78 - 17.03.2024 - Fixed: It was possible to deadlock the tracker by attempting to load samples that had a filesize of zero bytes, or if the sample was in use by another program. - Fullscreen mode has received more bugfixes. Hopefully it should be better now. Please note that the "stretched" mode does not fill the entire screen in many cases. The mouse pixel mapping can also be off on some Linux systems. v1.77 - 11.03.2024 - Fullscreen issues have been mostly resolved for Macs with a notch in the display. It may still have a slight error in how the mouse maps to the pixels on the screen, but it's still MUCH more usable than it was! Another problem is that the mouse cursor can sometimes flicker for a split second (temporarily change into the OS cursor, then back to the FT2 cursor). Also fixed an issue with fullscreen on Linux, but some systems may still have severe issues with the mouse position mapping... - The 32-point sinc resampling interpolator was reduced to 16-point again because of the trade-off not being big enough, and it was slightly wrongly implemented and would alias a little bit in some cases. I'll implement a better sinc interpolator in the future, if I ever stumble across a nice and simple implementation. Please let me know if you have one! - Windows/macOS: Updated SDL to v2.30.1 v1.76 - 23.02.2024 - The 16-point sinc resampling interpolator has been upgraded to 32-point for better sound quality in the tracker (if you have selected "Sinc (32 point)"). This interpolator is so good that a lot of old XM tunes will sound muddy because of lo-fi samples. I recommend that you experiment with the choice of interpolators. "Cubic spline" is a good choice if you listen to a wide variety of XMs, while "Sinc (32 point)" is the best option if you create your own tunes using hi-fi samples, or if you mostly listen to XMs with hi-fi samples (or if you can accept a muddy/filtered sound from lo-fi samples). - Removed 32-bit specific code (32-bit binaries now support all features) - Removed text fading from "about screen" (more is less) - Windows/macOS: Updated SDL to v2.30.0 v1.75 - 08.01.2024 - Note transpose (block), instrument remapping (block), Cut Block (ALT+F3) and Copy Block (ALT+F4) had issues if you had made a block selection in the last channel/track in a pattern. Thanks to Roz for finding this and reporting it, and sorry to all the people who may have had this bug without knowing what was going on! v1.74 - 16.12.2023 - Added a cubic spline audio interpolation option - Windows/macOS: Updated SDL to v2.28.5 v1.73 - 30.10.2023 - Sample editor: Shift + mouse-wheel = scroll sample data view - Windows/macOS: Updated SDL to v2.28.4 v1.72 - 07.10.2023 - Block Cut (ALT+F3) and Block Copy (ALT+F4) was broken in v1.70 v1.71 - 04.10.2023 - CTRL+A/ALT+A keybindings were swapped (thanks to MIDRA2ADVANCE for telling me) v1.70 - 01.10.2023 - Bugfix: Shrink Pattern ("Srnk.") could lead to a pattern length of 0 - Better variable sanitation for some pattern editing routines, may (?) prevent some rare crashes. - CTRL+F5 (Paste Pattern) had wrong button names in its message box when asking to adjust the pattern length after pasting. - Changed the above message box text to be easier to understand - Removed audio dithering for 16-bit audio bit depth mode. It seemed to be wrongly implemented anyway. - Some small changes done to the about screen - Windows/macOS: Updated SDL to v2.28.3 - Code cleanup v1.69 - 03.08.2023 - Bugfix: The 'pattern expand' feature was heavily broken and would mess up the pattern data (and potentially crash the program). - Bugfix: The program crash message could overflow and not show the full text on some systems. v1.68 - 29.06.2023 - Windows: On double-click of file associated with program, de-minimize window (if minimized) and set input focus. - De-minimize window (if minimized) and set focus after drag n' drop of file - Windows/macOS: Updated SDL to v2.28.0 v1.67 - 25.04.2023 - The song-to-WAV export screen now defaults to the tracker's bit depth and audio rate. This was actually the behavior for earlier versions of the FT2 clone, but I decided to change it back. - The song-to-WAV exporter now allows rates up to 384kHz - Alpha-based fade in for the about screen content (who cares..? :-) - Some small text string changes (config and song-to-WAV export screen) - Windows/macOS: Updated SDL to v2.26.5 v1.66 - 13.04.2023 - Added a 16 point sinc interpolation option (higher quality) - Changed some settings for the default configuration: 1) Palette theme = Dark mode 2) Scopes = Lined Note: Your existing configuration will not be changed! - Changed the layout a little in the Config section (Audio / "I/O Devices") - Removed the 192kHz audio output setting. This was a bit extreme to begin with. Note: You can still select this rate when exporting songs to WAV. - Some code cleanup v1.65 - 03.03.2023 - Quick fix for volume ramp delta (could be slightly off in v1.64) v1.64 - 03.03.2023 - Increased number of precision bits for song BPM, playback time counter and audio->video syncing. This is a minor change and does very little in practice as the previous precision was already quite good. - Audio/video sync timestamps are reset every half an hour to prevent possible sync drifting after several hours of playing a song without a single song stop (resets timestamp) in-between. - The HPC timers are reset every half an hour instead of every hour. Video (if no vsync) and the scopes use these timers. - Small code refactor for how the song is timed/ticked. Longer song-to-WAV renders may have a filesize change of a few bytes, but this is actually more correct. v1.63 - 24.01.2023 - For users with >60Hz displays: *hopefully* fixed possible slowdown/timing problems after leaving the program open for many hours. - Windows/macOS: Updated SDL to v2.26.2 v1.62 - 28.11.2022 - Because of a bug in FT2, pattern loop commands will manipulate the row the next pattern will begin at (should be 0). However, this can overflow the number of rows (length) for that pattern and cause out-of-bounds reads. Set to row 0 in this case. This fixes for example "ambrozia.xm" in the transition from song end to song start. v1.61 - 07.11.2022 - For the volume column in pattern edit mode, allow the two keys to the left of backspace to work as '-' and '+'. This is for some keyboard layouts where it was impossible to insert volume slide down/up effects. v1.60 - 11.10.2022 - Windows/macOS: Updated SDL to v2.24.1 v1.59 - 03.10.2022 - The default Disk Op. directory is now set to the user's desktop - The WAV export screen now has a checkbox for setting BPM precision to FT2. This means to use less precise BPMs, which will match FT2's WAV output length. - The default audio frequency and bit depth in the WAV export screen are now set to 44100 and 16-bit, and changing the audio frequency and bit depth in the config screen will not affect these settings anymore. - Updated the help text (made a note about the new WAV export BPM mode) v1.58 - 20.09.2022 - The windowed-sinc interpolator was reverted to 8 points at 8192 phases. It sounded better for certain lo-fi samples the way it used to be. The alias/distortion fix (v1.57) is still kept, for cleaner sound. - Windows/macOS: Updated SDL from 2.0.22 to 2.24.0 - Fixed #ifdef hacks when using SDL 2.24.0 and later (new version number scheme) v1.57 - 04.09.2022 - macOS: Fixed problems with not being able to record/sample audio (again) - Fixed some aliasing issues in the windowed-sinc interpolator (deltas > 1.5) - The windpowed-sinc interpolator now has 16 points instead of 8, and double the phase precision. This should increase the audio quality, but could also make the program run slower on very low end systems (like a Pi, for example). v1.56 - 11.07.2022 - Fixed some possible issues with fullscreen in Linux (still buggy) - Fixed some issues with restoring the window size and image stretch mode when loading or resetting the config when the program is running. - Bugfix: Focus was lost when drag-n-dropping a file onto the tracker, which meant that the first following mouse click was ignored. - Windows/macOS: Updated SDL from 2.0.20 to 2.0.22 v1.55 - 14.06.2022 - Fixed crash when using "Copy smp." on an empty dest. or source instrument - Fixed: Using "Copy Ins." on an empty source instrument resulted in a non-sensical system message. - Reset pattern loop states on "Play Song", fixes a potential bug v1.54 - 20.04.2022 - Fixed stuck/invisible checkbox after leaving the "Layout" config screen v1.53 - 16.04.2022 - Added a checkbox in the config screen for disabling the use of a custom mouse cursor (the OS mouse cursor will be used instead). - Fixed an issue where marking sample/instrument text while clicking on a new sample/instrument would lead to marking corruption. v1.52 - 27.02.2022 (updated 19.03.2022) - Fix possible sample loop corruption on .MOD import, f.ex. "FARLAND.MOD" - Hardware Performance Counter code refactoring (framerate handling without vsync, and scopes) > 19.03.2022: - macOS: Fixed problem with silence when attempting to sample audio v1.51 - 01.02.2022 - Don't handle mouse click if window wasn't in focus v1.50 - 12.01.2022 - macOS/Windows: Updated SDL 2.0.16 to SDL 2.0.20. SDL 2.0.18 would have issues with custom mouse cursors on Windows, so I had to skip it. v1.49 - 13.12.2021 - Fixed a bug when using Cut (or CTRL+X) on 16-bit samples in the sample editor. It would read data from the wrong offset. - Kludge: Allow marking the very last sample points in the sample editor if the image is stretching out the whole screen in fullscreen mode. - Mac: 1) Fixed possible mouse coordinate scaling bug when leaving fullscreen 2) Left Command key won't trigger song play anymore. Use the right Alt key for this. If you have an old Mac without a right Alt key, I suggest getting a newer computer (my first priority is modern computers). 3) Left Command key can now be used instead of Alt for: - Select all (A - sample/text editing) - Cut (X - sample/text editing) - Copy (C - sample/text editing) - Paste (V - sample/text editing) - Updated the help text v1.48 - 22.11.2021 - Fixed crash when using the "Copy ins." and "Xchg ins." feature. Thanks to herodotas for reporting these bugs! And I'm sorry that they went unnoticed for so long... - Fixed small (and rare) quantization bug with the piano keys in the instrument editor. - Windows/macOS: Updated SDL2 to version 2.0.16 v1.47 - 23.05.2021 - Bugfix: The Lxx (Set Envelope Pos) XM effect was broken :( - Added support for loading FLAC samples (w/ loop/vol./name information) - Added support for loading '8-bit unsigned/32-bit float/64-bit double' AIFFs - Added support for loading XMs with ADPCM sample compression (ModPlug Tracker) - The windowed-sinc LUT now has 8192 phases instead of 4096 for a theoretical small interpolation precision improvement. - Bugfix: Fixed a bug with "Save rng." (Smp. Ed.) related to data after/around the loop end point. - "Save rng." (Smp. Ed.) now asks if you want to overwrite an existing file - Bugfix: The windowed-sinc interpolation was slightly wrong near the loop-start point on looped samples. Was only audible on super-tight loops. - Mixer now uses 32-bit single-precision floats instead of 64-bit double-precision. The error difference in the audio output is +/- 1 (16-bit), which is only -90dbFS and not really audible. This should give a performance boost for devices that are slow with handling double-precision floats. - Samples now have units of "samples" instead of bytes (in the sample editor). This means that 16-bit samples will show the same numbers as 8-bit samples. - The sample editor is now drawing interpolated sample points when zoomed in - Fixed a bug where the "Range" button in Smp. Ed. had problems if you had marked sample data after 65535 sample points. - Fixed a problem where the mouse pointer could be broken in fullscreen mode at some screen resolutions (f.ex. 1600x900). - Windows bugfix: Prevent ever-increasing memory usage while minimized. Possibly a bug in SDL_RenderClear(). Might've affected other systems too. - Bugfix: Exit text edit mode when dropping a file onto the window. Fixes possible text cursor overflow issues. - Bugfix: Some instrument/sample names could contain junk at the end after being saved (.XM/.XI). - Bugfix: If you previously used an audio device that was disconnected before starting the program, it will now resort to the default audio device without reverting all your audio settings (buffer size, bit depth, frequency). - Fixed possible crash if a channel's resampling rate/delta was zero (very rare) - If you copy all the sample data in a sample, it will also copy over the sample information (loop, volume, finetune, name etc.) when you paste it to a new sample. - The "Get maximum scale" button in the "Volume" tool in Smp. Ed. will now get the actual scale instead of limiting it to the start/end vol max range. This means that you need only one pass to normalize the amplitude on a very quiet sample. - The scopes now use linear interpolation for sample points in "Lined" mode - Fixed a mistake in the S3M importer where "Set speed" commands with a parameter of >$1F were removed instead of being clamped. - Clearing the instrument (numpad delete key) also clears instrument name now - Added new keybinding: Press Ctrl + "numpad+"/"numpad-" to increase or decrease the master volume by 16. - Updated the help text - A *lot* of variable/function names have been changed to be easier to understand. This causes a mega-commit to the GitHub repo, and I'm sorry for that if you have a fork of it that you want to keep updated. :/ - Code cleanup (big one) v1.46 - 02.04.2021 - Fixed: Audio settings weren't correctly loaded from config in v1.45 v1.45 - 01.04.2021 - Fixed possible crash when starting the program on M1 Macs (thanks kode54) - Fixed possible mouse cursor corruption when hovering over text boxes on Linux. - Fixed possibly buggy string operations - Refactored some code that was doing unnecessary/wrong stuff - Minor code cleanup - Updated help text v1.44 - 01.03.2021 - The second "Key Off" key (key next to left shift) didn't work on all keyboard layouts. - Added support for importing DIGI Booster (non-Pro) modules - Added support for importing 8-channel StarTrekker modules - Removed calculation of some big tables because they were not really that important for performance after all, and also made the video/audio sync data more compact. Saves around ~1.8MB of RAM. Not a whole lot, but still nice. - Code refactoring in module/sample loaders. It's easier to add new loaders now! - Minor code cleanup and code change - Updated help text v1.43 - 13.01.2021 - Sample tuning is now slightly more accurate when importing .IFF/.WAV/.AIFF samples. It can still be off by up to several cents, but this is because of a rather low sample pitch precision in FT2 (5-bit finetune + relative note). - Bugfix: Fixed some scrollbar bugs in the instrument editor (when changing values, then changing instrument, and changing values again). - New feature: Display middle-C (C-4) frequency in the instrument editor - Some small optimizations and minor bugfixes v1.42 - 01.01.2021 - Updated SDL from version 2.0.12 to version 2.0.14 - Windows: Because of a bugfix in SDL 2.0.14, the instrument selector keys (numpad) still work like they should regardless of the numlock state. - Changed a flag when setting up the video renderer so that the program can properly run in rare cases where it wouldn't - Some other minor fixes 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!) 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). 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 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 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 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 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 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) 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 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) 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 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 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) 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. 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 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 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 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. 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) 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 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. 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 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 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 solves 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 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 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. 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 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! 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. 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 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 hardware 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. 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! 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 v1.01 - 21.10.2019: - Windows: Fixed an issue where the program would consume a lot of CPU time when the window was minimized. 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