CHIPNSFX is a musical software suite focused on lightweight code and data (the player itself is under 950 bytes long, and can be as small as 550 bytes) for the Amstrad CPC, Sinclair Spectrum 128 and MSX1 platforms; other hardwares can be supported with minor modifications in the player code, such as Sega Master System. The tracker can create songs up to 256 patterns long, patterns can be up to 96 ticks long, and there can be as many as 255 different instruments. The player itself is hardware-independent, the programmer can provide the external functions required to make it work on any Z80-based platform. CHIPNSFX was succesfully used in past projects such as "CNGTRO #1", "Justin", "Bubble Bobble for CPC", "Frogalot", "Hire Hare", "Duck Out", "Basket Cases", "The Adventures of Timothy Gunn", "Epimetheus"... and hopefully many more future projects to come.
20240727 -- 33rd public release. Optional stereo output: the command line option "-s N" (N from 0 to 5) sets the stereo channel type, respectively ABC, ACB, BAC, BCA, CAB or CBA. Bugfix: pressing Space, Control-Q/A and others on the order list spares entries beyond the end of the song. The normal player is three bytes shorter now thanks to a new optimisation from Jean-Marie. Added DAYMOTEN.CHP, HEXAVIRU-V.CHP, KONGSB64.CHP, MONACOGO.CHP, MONACOGQ-S.CHP, ONECOLN1.CHP, PSYPIGSX.CHP, SQUAROOT.CHP, TORROSC0-2.CHP, WIZBALLZ.CHP and WRESTARS-T.CHP: 800 songs!
20240422 -- minor patch adding a player size optimisation from Jean-Marie and fixing bugs in systems where "unsigned" is the default "char" setting, f.e. Raspberry Pi 400. Added GALIOUS1-2.CHP and GREMLIND.CHP.
20240328 -- minor patch changing the OEM characters into ASCII. Added MPHOENIX.CHP.
20240224 -- minor patch improving non-Win32 compatibility ('realpath' behaves differently in Alpine Linux because it's built upon MUSL instead of GLIBC) and adding a new size optimisation from Jean-Marie. Added COCOATM0-1.CHP.
20240119 -- minor patch fixing several warnings and a potential error in 64-bit systems in the tracker, and adding a 2-byte size optimisation devised by Jean-Marie to the player's read-only mode. Added BUBBLEMX.CHP, BUBBLEST.CHP, BOULDSHR.CHP, MONACOGP.CHP and TRAFFIC.CHP: 777 songs!
20230730 -- minor patch removing the confirmation prompt in the SDL2 version when closing the window on an unmodified song. Added FUNKYMUS-T.CHP, GHOSTCPC.CHP, GHOSTMSX.CHP, MASK4-5.CHP, PIPPOLS0-5.CHP and ROLLRON1-4.CHP.
20230216 -- minor patch adding drag-and-drop to the SDL2 version: the tracker will load songs dragged into the window. The command line options `-Q`, `-QQ`... apply to WAVE output only; the tracker always assumes `-Q`. Added AFTEROID.CHP, DIPDIP.CHP, HUMPHREY.CHP and LIVISTN0.CHP.
20221231 -- minor patch fixing a bug in the file dialog after loading a song from the commandline and trying to save it back, and removing the now useless option `-k STR`. Added DEVIANTS.CHIP and SPIKYHAR.CHP. Happy new year 2023!
20221212 -- minor patch improving and documenting a SDL2-only key, Control-J: it sets the text style to normal, bold, italic or thin. Similarly, the command line options '-$', '-$$' and '-$$$' set the text style. Added CHASEHQ1-2.CHP, I3TENIS1-2.CHP, LWTENNIS.CHP, RASPUTIH.CHP and TIMEMACH.CHP: 750 songs!
20221121 -- minor patch improving the player's dual mode noise mixer, fixing sound bugs in "Dire Dare".
20221030 -- minor patch redrawing the icon and ensuring that it looks the same on Win32 and SDL2. Added MOTOS1-3.CHP.
20220915 -- minor patch optimising the player's BUILTIN mode, where the internal functions 7, 9 and B are never used and can be thus safely removed, and removing the obsolete ABRIDGED mode; its place is now occupied by SONG-ONLY, that removes functions 7, 9 and B as well. The tracker's file dialog can warn the user against accidental overwrites. The SDL2 version shows the program icon on the window caption.
20220806 -- minor patch fine-tuning the SDL2 buffer size and the main loop delay (suggested by Kawe). Added BOMBUZAL.CHP and BURNINR5.CHP.
20220113 -- minor patch fixing a bug in the song loader (reported by ZJoyKiLer) and warnings in the YM3B and WAVE savers and the user interface. Added HUNCHMUZ.CHP.
20211119 -- minor patch adding the command line option `-!` to extend the buffer length on execution time (compare with the compile time parameter `-DSDL2_DOUBLE_QUEUE`), as well as mouse support (partial on Win32, full on SDL2).
20211113 -- minor patch adding minimal UTF-8 support to the SDL2 interface on non-Windows systems and tweaking the player's stable vibratos fix. Added DESPERA0.CHP and FOXBACK1-4.CHP.
20210626 -- minor patch making vibratos fully stable even in fringe cases reported by Adrián, and reworking the +512 experimental flag into a read-only mode where the player exclusively relies on the chipnsfx_bss buffer, instead of using self-modifying operations, also following an idea from Adrián.
20210526 -- minor patch adding a new noise effect (digits "7F" in the tracker) that toggles the noise wave into a crunch-like sound. The standard player code is now 838 bytes long.
20210522 -- minor patch fine-tuning Control-U so it just scans the patterns, tracks and scores for duplicates, and only performs cleanups (merging identical patterns, removing unused instruments, sorting the scores) if Shift is pressed. Added SHARRIR4.CHP.
20210421 -- minor patch enabling an experimental flanging effect (digits "108" in the tracker): the standard player code grows slightly heavier (832 bytes).
20210418 -- minor patch fixing a bug in the WaveOut timer and a glitch when testing instruments: sound must play even if channels are disabled. Pressing Control-U on the instrument panel looks for unused instruments. Added M_U_L_F-G_.CHP, OUTWORLD.CHP, PULSOIDS.CHP and PULSOIDZ.CHP.
20210129 -- minor patch restoring the filesize field in the file dialog, lost in version 20210127.
20210127 -- 32nd public release. Major rewrite: CHIPNSFX can be compiled with SDL2 ("gcc -O2 -DSDL2 -xc chipnsfx.c -lSDL2 -ochipnsfx") in other platforms than Windows. Added HEROBOTX.CHP, HISTEEL3.CHP, IKPLUS.CHP and TWINTUV8.CHP.
20201115 -- minor patch fixing a bug in the file dialog sorting reported by Adrián: the sorting forgot to shuffle the filesizes together with the filenames. Added JSW64-RH.CHP and RASPUTIN.CHP.
20201109 -- minor patch allowing defining the filename "-" as the standard input (song source) or the standard output (INCLUDE target), adding small tweaks on the display (show 100..127 as A0..C7 on the leftmost column to keep everything aligned) and the player. Added DESPOTIK.CHP, FLINTSTN-O.CHP, FORMULA1.CHP, FORMULE.CHP, GILBERTE.CHP, GPSIM64A.CHP, GPSIMCPC-E.CHP, GPX750CC.CHP, HUNCHADV.CHP, KETTLE.CHP, MECHANIC-E.CHP, NEVEREND.CHP, PHNTMCLB.CHP, POWERPLZ.CHP, THRUSTST.CHP and TUBARUBA.CHP: 721 songs.
20200621 -- minor patch fixing a bug where a channel defined as X1+NN ... Xn+NN X1+NN ... Xn+NN X1+MM ... Xn+MM X1+MM ... Xn+MM became X1+NN X1+MM in the target. New experimental flag AMPL.CACHE (+512) that provides a minor speed boost in the player at the expense of requiring more memory. Added BIRDIE.CHP, KENDOWAS.CHP, MATAHARI.CHP, NITESHFT.CHP, RAMPARTS-V.CHP, RYGAS-U.CHP, SIMPSONS.CHP, STIFFLIP-Q.CHP, TRAPDOOR.CHP and TRIGGER.CHP: 700 songs!
20200430 -- minor patch adding the option -L that generates a song header named after the -l label and allows generating fully self-contained song data files. Added FOLLIN2B.CHP, FOLLINOX.CHP, MADBALLS.CHP, STARDUSU.CHP and TYPHOON.CHP.
20200331 -- 31st public release. New flag PREBUILT (+256) to allow compiling just the chip_play routine and rely on a predefined chipnsfx_bss table for softwares with just one song and no sound effects. Reduced mixer+noise clobbering in the player and added more sanity checks in the tracker, such as avoiding storing useless instrument data on portamentos. Added BURNRUB1-5.CHP, COMICBKR-U.CHP, DRDESTRU.CHP, DRUIDRMX.CHP, FINDKEEP-Q.CHP, FLUFF1-2.CHP, FROGALOT.CHP, KENDOWAR.CHP, KNIGHTYM-N.CHP, OPGUNSHP-Q.CHP, RICKDG1A-G.CHP, RICKDG2A-H.CHP, ROADBLST.CHP, ROBOCOP4.CHP, SILKWORM.CHP, SPELLBND-E.CHP, STEG1-2.CHP, STORMBRI-J.CHP, SUBWAYVG.CHP, SUPWBOY1-2.CHP and TINTINLN.CHP: 679 songs!
20191003 -- minor patch fixing a bug where Control-G could "shift" the portamento instrument down, and another one where songs that looped on empty patterns could forget to store the right instrument data after the loop. Added BOULDASH.CHP, DDRAGON0-2.CHP, MACH3.CHP, MASTUNIV.CHP, MONTYRUO-P.CHP, RACETIME.CHP and RLSTUNTX.CHP.
20190731 -- 30th public release. The tracker is GPL, the player is LGPL. Upgraded GCC to 5.1.0. New slow glissandos with 1X0 and 1X8: frequency rises (0) or falls (8) 1 unit on every X steps, unlike fast glissandos (10X) where frequency rises (X between 1 and 7) or falls (X between 9 and F) units on every single step. Added ALEHOP.CHP, ARCYESOD.CHP, BLOODBRS.CHP, BOUNDER.CHP, COLT36.CHP, FUTUREKN.CHP, MADDOG.CHP, MENACE-1-3.CHP, NAVYSLS1-7.CHP, PACLAND0-4.CHP, PYJAMA.CHP, RUNGAUNT.CHP, SANXION1-2.CHP, TEMPTATN.CHP, TMHT1.CHP and TRIVIALP.CHP.
20190430 -- minor patch fixing a typo in CHIPNSFX.TXT ("LD B,$F6C0" had to be "LD BC,$F6C0") and adding basic sanity checks to song loading. Added ASPHALT.CHP, CAVEMANI-J.CHP, DIZZYDTR.CHP, DIZZYPYF.CHP, MOONTORC.CHP, STARWARS.CHP and SUPERKID-F.CHP.
20190326 -- 29th public release. Modified vibrato and glissando parameters so they can reach even deeper extremes: many songs need edits to fit the new values, as old 1XF equals new 1XD. Removed unused exact portamento and half vibrato optional effects. Added ASHTRAY.CHP, MYSTICAL.CHP, THINGSPR.CHP and ZYNAPS.CHP, merged RTS-25-51HZ.CHP into RTS-1998-9.CHP.
20190210 -- minor source cleanup. Removed optimisation from CPC player: it struck the tape relay. Added AMAUROTE-L.CHP, ARKA1C64.CHP, COBRAC64.CHP, E-MOTION.CHP, GAUNTLET.CHP, KILLRING.CHP, MICROMUS.CHP, PLATOON0-4.CHP, TOUR91.CHP and VIKINGS.CHP.
20181109 -- 28th public release. Major changes in the tracker and the player: octaves above 8 are no longer valid (C-B becomes C-9), pattern length was raised from 96 to 128, and new special note "===" ("brake", key A by default) switches the volume envelope off and on. Multiple consistency bugfixes: playback within the tracker now fits the player's timings (such as ensuring that portamentos are obeyed since the first tick rather than one tick later). Command line is more strict, such as "chipnsfx -w input.chp" raising an error because there's no "output.wav" parameter. -X shows hexadecimal volumes during playback. Removed linear amplitudes (nobody was using them) and changed -T to behave like -t and raise an error if timings cannot be simplified, in the same fashion -R is a strict version of -r; -N N now sets the transposition rather than the old -T N. Added a compile time flag (TEMPOLESS) to the player that removes tempo handling and reduces footprint but songs require -T when generated. Merged GETOPT--.H within CHIPNSFX.C. Added BALLBRKR.CHP, BB128K-0-3.CHP, BRAVSTAR.CHP, CATABALM.CHP, IKARIWAR.CHP, LITECORE.CHP, COMMANDO-T.CHP, GUNFRITL-M.CHP, MAGICJS1-2.CHP, RESCATLB.CHP, SPOTS94A-B.CHP, STARION1.CHP, STORMLRD.CHP, TECHTED3.CHP, THANATOS.CHP, VICTROAD.CHP and WHERTIME.CHP.
20180910 -- minor patch adding a workaround for YM3 output to be fully compatible with the old but still widespread ST-SOUND 5.51 and applying the current transposition to the sounds played when typing notes. Added BLKLMPZX-Y.CHP and MOUNTMIK.CHP.
20180822 -- minor patch adding colons to player source to ease assembly. Target INCLUDE can be "-" (standard output) and can be pipelined. Illegal notes ("C-A") are filtered. Added AUFMONTY-Z.CHP, FERNANDZ.CHP, FROSTY.CHP, LINEFIRE-F.CHP, VINDITR1-4.CHP, XOR.CHP and ZAPTBALS.CHP.
20180808 -- 27th public release. Special case "[1x] A 2x B 1x C" produces the output "[1x] A B 128 C", saving one byte. Consistency fixes: typing a silence zeroes its instrument, Control-E shows valid messages and Control-Shift-D won't erase empty instruments. Inserted two optional features (disabled by default with "IF 0" preprocessing statements) in tracker and player sources: exact portamento (instead of quick 'n dirty calculation) and half vibrato (whereby X0/X8 plays two steps N N+1/N-1 instead of the usual four steps N N+Y N N-Y). Added a paragraph about reentrancy to the documentation. Added BATMAN10-36.CHP, BEVERLYH.CHP, BOBO0-6.CHP, BUMPY.CHP, CRAZYCM1-2.CHP, DEFCOM.CHP, DRLAIR10-29.CHP, FIRELORD-E.CHP, FUMIGATR.CHP, GRYZOR1-2.CHP, GUILTELL.CHP, IMPOSSML.CHP, LEVIATHN.CHP, MARACAIB.CHP, MATCHDY2.CHP, MAZEMANJ-L.CHP, OCTOPLEX.CHP, OPTBOLT0-2.CHP, OPWOLF0-3.CHP, PROHIBIU.CHP, RAMBO30-2.CHP, RAMPAGG.CHP, RENEGA30-8.CHP, ROBIN.CHP, ROBOCOP0-3.CHP, ROBOTCP0-3.CHP, SIDEWALK.CHP, SHINOBI0-9.CHP, SKATECRZ.CHP, SOLO.CHP, SUBBUTEO.CHP, SUPRTRPR.CHP, SUPSTOCK.CHP and TT-RACER.CHP: 512 sample songs!
20180614 -- minor patch fixing a dangerous bug in Control-Shift-T/G, improving the compression analysis performed by the -t option, and allowing SPACE to set an instrument on whole patterns within the order list. Added BRONX.CHP, CYBERBIG.CHP, MORYFIL2.CHP, SHARRIR1-3.CHP, SPIPEL20-4.CHP, URIDIUM.CHP and VIXEN.CHP.
20180524 -- 26th public release. Control-Shift-T/G moves items to the top or the bottom of their lists. Songs are read-only during playback (to avoid accidents) if the cursor follows the playback (-P flag or Control-P). Reduced potential noise when launching the tracker during heavy multitasking. Edited the player to properly ignore functions disabled by compile time flags. Wrote an example of "writepsg" for MSX. Added DYNADUO1-3.CHP and VAMPIRE1-4.CHP: 400 sample songs.
20180517 -- minor patch making the player two bytes shorter, and adding flag +32 (UNLOOPED) to disable loop logic, matching the -R flag. Added AVENGER.CHP, BEACHBUG.CHP, BRNBLL-N.CHP, CAMPEONE.CHP, DUSTIN.CHP, ELEVATOR.CHP, GBASKET.CHP, GEOFFCS1-6.CHP, HAMMRBY1-4.CHP, HUNDRA.CHP, MASK1-2.CHP, PHOBOS-N.CHP, PSYPIGSU-W.CHP, STAINLES.CHP, TRAILBLY.CHP and ZONETROP-Q.CHP.
20180514 -- minor patch making several strings static to save space and fixing several inconsistencies between code and comments. The jukebox features an optimisation described by Targhan at memoryfull.net. Macros were moved outside CHIPNSFX.I80 to ease compatibility beyond UZ80.
20180513 -- First anniversary of CHIPNSFX's original release! Tweaked the tracker playback again, merged MEGAPHNV+W.CHP and added AFTERWAR.CHP, AMC1-2.CHP, FMBASKT1-2.CHP, NONAMED.CHP and SPTENIS1-3.CHP: 365 sample songs in total, one for each day in the year! Bonus: tracker source!
20180510 -- minor patch fixing a bug storing useless instrument data on empty notes. Made tracker playback slightly softer to avoid noise in some computers. Added C64-180A-C.CHP, COMBASC1-5.CHP, DESPERA3.CHP and GUNFRITF-K.CHP.
20180505 -- 25th public release. Changed vibrato and glissando scale from 1,2,3,5,7,9,11 (gaps 1,1,2,2,2,2) to 1,2,3,5,7,11,15 (1,1,2,2,4,4): songs such as PACMANI1.CHP sound closer to their models. Inverted roles of -r and -R flags to match other options' behavior. Added DROIDS.CHP, GLIDERDR-S.CHP, GUNFRITE.CHP, HATTRICK.CHP, MEGAPOCL.CHP, MEGAPHNV.CHP, PINKPANT-PNTH.CHP and PROHIBIT.CHP, plus CHIPNSFX.TZX for Spectrum.
20180426 -- minor patch fixing a bug when using the -T option and saving or reloading a song. Added CHAINRCT.CHP, MELTDOWN.CHP and WARHAWK.CHP.
20180417 -- 24th public release. Ditched the last remainder of AS80 compatibility: player code, song headers and calls expect "$" to stand for the current target address rather than the current line's target. The assembler UZ80 has been modified accordingly. UPDATE: output uses colons rather than semicolons; using other assemblers than UZ80 doesn't require "sed -i s/;/:/g filename" any longer. Added ARKOID2A-E.CHP.
20180414 -- minor patch with slight tracker speed and size optimisations: source is 96k, binary is 62.5k. Added CHIMERA1-2.CHP, CPC-1942-3.CHP and TNZS1-6.CHP.
20180408 -- 23rd public release. Completely rewritten INCLUDE output: BOSCONIA.CHP no longer generates corrupt data, overall compression is slightly better. Added BEACHBUG.CHP, BOSCONIB.CHP, DYNADAN1.CHP, IBALL2ST.CHP, NINJSCTR.CHP, POGOLYMP.CHP and TURBOGRL.CHP.
20180326 -- minor patch removing redundant conditions in the player. Added PACMANI0-3.CHP, MUTANZO1-2.CHP, SOLNEGRO-P.CHP and SOLOMON4.CHP.
20180324 -- minor patch fixing a rare bug when instrument noise is XX80. Added CHICAG30.CHP, DARKFUSN.CHP, DTHWISH3.CHP, LEDSTORM-O.CHP, NORTHST1-2.CHP, PODEROSC.CHP, RASTRSCN.CHP, SAVAGF.CHP, SAVAGG.CHP, SLNTSHDW.CHP, TROLL1-3.CHP and TUAREG.CHP.
20180305 -- minor patch fixing a bug in the -t option that failed to handle several cases. Added COSTACP1-2.CHP, EXTRMNTR.CHP, JSW1-2.CHP, MANICMN1-2.CHP, MRWINO.CHP, NEMESTWL.CHP, PUZZNIC0-2.CHP, STARBOWL.CHP, TANGRAM1-2.CHP, TECHTED1-2.CHP and TITANIC.CHP.
20180220 -- 22nd public release. Added command line parameter -U to enable manual undo/redo behavior (rather than the old automatic mode) and -t to abridge output timings when feasible; deep vibratos and glissandos (4/5/6/7) are deeper now (5/7/9/11). Added AMC0.CHP, AMC3.CHP, AMC4.CHP, BMXSIM1.CHP, BMXSIM2A.CHP, BMXSIM2B.CHP, BMXSIM2C.CHP, DALEYTOC.CHP, DRGNINJA.CHP, ELEKTRAG.CHP, ELIMNTR3.CHP, ESPADA.CHP, HATE-AST.CHP, KRAKOUT.CHP, KRAKOUU.CHP, LORNA.CHP, NINELIVE.CHP, NINELIVS.CHP, SAVAGE.CHP and SHRTCRCT.CHP.
20180128 -- minor patch extending the new wavelengths to the player. Added DOORDOOM.CHP, DRAZEN64-5.CHP, MRHELI.CHP and POOGABOO.CHP.
20180123 -- minor patch featuring slightly finer wavelengths during note playback. Added HELTERSK.CHP, HISTEEL1-2.CHP, PREHIST0-3.CHP, RAMPAGE-F.CHP, SWTCHBLD-E.CHP, VIAJECEN.CHP and WHOPPERC.CHP.
20180117 -- minor patch setting the instrument duplication shortcut to Control-Shift-E to match its pair Control-Shift-D and avoid accidents and adding Control-Page Up/Page Down to move through the order list. Added SABOTUR1-2.CHP and THUNCATS.CHP.
20180113 -- minor patch further improving compression of single-note patterns and extending the logic of Control-D, Control-E and Control-W to entire selections rather than just the current pattern; Control-E can duplicate instruments, too. Fixed a bug in data output that wrote 120 rather than 128 as empty note. Added BOSCONIA.CHP, FOTYEAR1-2.CHP, GNG0-2.CHP, LAZRTAG1-2.CHP and LINEKER1-2.CHP.
20180111 -- 21st public release. Fixed the file dialog (it crashed if it had to show more than 256 entries). Control-F5 starts playback at the looping point. Slightly better compression when one pattern shows in a long string and nowhere else. Added ADDAMSF0-3.CHP, ARKANO-Z.CHP, CMDTRACR.CHP, DELTA-IN.CHP, DELTA-SL.CHP, DELTA-ZK.CHP, HOPRCOPR.CHP, HYPERBWL.CHP, ROCKNRLR.CHP, METROCRT-U.CHP and QUARTET6.CHP.
20180101 -- minor patch making the parameter panel more intuitive to navigate (Left/Right to choose element, Up/Down/Page Up/Page Down to set its value) and moving -P and -Z runtime toggling to Control-P and Control-F respectively, at least temporarily. Added ARKANOIE-H.CHP, GEOFFSC1-6.CHP, METROCRS.CHP, NEBULUS.CHP and ROBOCOP1.CHP. Rewritten the paragraph about "writepsg" and fixed the Spectrum 128 example (one POP AF too many). Extended parsing of parameter -B: "-B1 -B8- -B3" can be written as "-B18-3".
20171228 -- minor patch with a new parameter -n N that sets how many loops must be exported to a WAVE or YM3b file. Added ARKANO-M.CHP, F_O_F_T_.CHP, GALAX_3D.CHP, GNG2-ALT.CHP and HEADHEEL.CHP.
20171223 -- twentieth public release. Added glissandos and inverted behavior of vibratos to provide consistency within all effects (high values are treble, low ones are bass). Inverted compile time flag +4 (ABRIDGED) on player (extended mode is enabled by default rather than disabled) and added flag +16 (SLIDELESS) to support all effects but portamentos and glissandos. Control-W in parameter panel applies the global portamento to every order in the list. Added FOTYEAR1-2.CHP, BOSCONIA.CHP, MAZEMANI.CHP, MUNSTERS.CHP and POWERPLY.CHP.
20171215 -- minor patch fixing vibratos when the wavelength (1MHz) is between 256 and 512 (several songs needed artificially heavy vibratos before the fix), and improving compression by detecting and avoiding false positives; added ARKANOID.CHP (it also plays within the demo), CHARDESI.CHP, MERMAID1-5.CHP and WECLMANS-T.CHP.
20171214 -- nineteenth public release. When redundant, INCLUDE output skips SFX information on noise-only notes, resulting in shorter data. Parameter panel shows a dynamic volume meter during playback. Added FEUD1-2.CHP, MONTYRUN.CHP, ONEMANDR-S.CHP and SCUMBALL.CHP.
20171208 -- minor patch allowing longer title and description strings and accepting keys O, S and J as synonyms of Y on "yes/no" questions. Added BEYNDIP1-2.CHP, CRAFTON1-2.CHP, GONZALZ1-4.CHP, JUPITERP.CHP, MASK3.CHP, SEPULCRI.CHP, TETRIS1-2.CHP and ZUB1-7.CHP.
20171206 -- minor patch fixing a bug where instrument tests got stuck rather than being played only on a keypress. Added NEVERS-S.CHP.
20171205 -- eighteenth public release. Patterns no longer must begin with a note or a silence: internal opcode 128 handles unused space and is more efficient than using a portamento or a modified instrument to handle extremely long notes: compiling COSANOST.CHP went from 422 to 418 bytes, and BURNINR1.CHP from 766 to 728. Command line parameter -B7..B9[-] sets the order of channels in INCLUDE output. Fixed a bug that kept instruments from being played when typing notes on a score or testing them on the instrument panel. Added BLKLMP66.CHP.
20171203 -- minor patch that allows toggling the -P and -Z parameters during runtime with F9,Tab and F9,Shift-Tab, and which handles more correctly the order list length and looping points when inserting or deleting patterns in all the channels at once.
20171201 -- seventeenth public release. Extended -R to look for loops in reverse, compressing even further, and added -Z for rectangle waves instead of square. Fixed a player bug hurting noise-only note C-B with heavy arpeggios or transpositions. Added AVENGER.CHP, ELIMNTR0-2.CHP, HOTSHOT.CHP, PERICODG.CHP, SLAPFITE-F.CHP and SORCERY.CHP.
20171125 -- minor patch adding the command line parameter -R to scan and compress outside the patterns rather than both inside and outside. Fixed a crash on Windows 10. Added QUARTET4-5.CHP and YOGIBEAR.CHP.
20171124 -- sixteenth public release. Improved compression to handle repeated strings of patterns if their contents aren't already packed. Added arpeggio special case D (+24) with just one more byte of code. Added ABADIA1-3.CHP, CORSARI1-2.CHP, SOLOMON3.CHP and STARDUST.CHP.
20171118 -- minor patch fixing minor noise in playback of almost mute amplitudes and formally setting arpeggio case E to stand for -24, way more useful than -13, and only requiring three bytes of code in the player. Added INSIDOUT.CHP and MEGAPHNW.CHP.
20171115 -- fifteenth public release. Fixed amplitude errors in normal (random crackles) and linear (heavy noise) modes. Added (in several cases retroactively) BLACKBRD.CHP, CAULDRN1.CHP, COLISEUM.CHP, KONGSTCK.CHP, LIVISTN1-2.CHP, M_U_L_E_.CHP, MADMIXG0-2.CHP, TOOBIN_1-5.CHP and UNTOUCH0-7.CHP.
20171109 -- minor patch fixing a mistake in the order list (INSERT and DELETE were moving the end of the song when they weren't supposed to) and another one in the tracker's vibrato (internally limited to 7 steps rather than 15). Added GOODY.CHP and SIRWOOD.CHP.
20171104 -- fourteenth public release. Consistency fixes: arpeggio cases E + F stand for -13 + -12 both in the tracker and the player; Alt+F4 equates to ESCAPE; pushing INSERT or DELETE on the order list only affects the currently selected channels rather than all at once. Added BLKLMPSV.CHP, MYTHOS.CHP and ULISES.CHP.
20171002-- : minor patch restoring proportional vibrato adjustment, overwritten by the new signed vibrato featured in the past release.
20170930 -- thirteenth public release. Pushing SPACE in the instrument panel plays A-n (where n is the current octave) rather than A-4. New vibrato special case: values X8-XF generate a negative depth vibrato. Control-A/Q works on parameter panel. Added BLKLMP64-65.CHP.
20170918 -- minor patch fixing a bug in Control-Shift-U when dealing with extreme positive or negative order transposition values, and adding BLKLMPST.CHP, BLKLMPSU.CHP and TRANSMUT.CHP.
20170916 -- minor patch extending the behavior of Control-Shift-U to cleaning order transpositions up, fixing an old bug in the INCLUDE output and a new one in the extended player, and adding SHOCKWYR.CHP.
20170914 -- twelfth public release. Command line options allow "getopt" syntax: for example, "-a -b -c" can be shortened to "-abc"; flags -b1 to -b6 are now -B1 to -B6, in uppercase. Improved the player's support of multiple channels playing noise at once, thus solving the glitches in BURNINR1.CHP and other songs. Added INDIANA3.CHP and JACKNIP2.CHP.
20170911 -- minor patch fixing a bug in the extended player and adding VERMINT1-3.CHP.
20170909 -- eleventh public release. New special case for instrument noise: XX80 plays noise XX only at the beginning of the note, then disables the noise signal; the player's extended mode has been updated as well. New command line options -b4, -b5 and -b6. Moved Control-P to Control-B and added Control-U (song optimisation and cleanup). New CAULDRN2.CHP, EQUINOX.CHP, HATE.CHP, LASTMISN.CHP, MOT1-3.CHP, RESCATLA.CHP, RTS-25-27HZ.CHP, RTS-50-52HZ.CHP, SHADSKIM.CHP, TRAILBLZ.CHP, WELLSNFG.CHP, WINGSOD5.CHP and ZONA0.CHP: 85 songs.
20170814 -- minor patch extending Control-A/Q to the instrument panel.
20170813 -- tenth public release. New command line options -a (append) and -Q (enable oversampling). Fixed two bugs in INCLUDE file output: instruments setting secondary parameters at the end of the song didn't reset them after looping back to the beginning, and song loop could be lost if within a compressed string. The arpeggios' special case F is now universal instead of limited to extended mode. New BURNINR2-3.CHP, ARMYMOV1-2.CHP, METROPLS.CHP, MYHERO_1-5.CHP, NAVYMOVS.CHP, RENEGA10-19.CHP, THUNDRBD.CHP and XENON1-3.CHP: 65 songs.
20170731 -- ninth public release. New special case for arpeggios: the nibble F stands for -12 and changes the loop behavior. Sound playback is now wavelength-based rather than frequency-based, and thus closer to the hardware. Minor bugfixes in the keyboard map handling. New CHUBBYGR.CHP, CHUBBYGS.CHP, MEGAPHNX.CHP and MEGAPHNY.CHP.
20170724 -- eighth public release. Fixed a serious bug in the noise generator: playback and WAVE output randomly skipped pure noise notes. New ATEAM.CHP, BURNINR1.CHP, BURNINR4.CHP, SOLOMON2.CHP, UNDERWTR.CHP, WESTBNK1.CHP, WESTBNK2.CHP and WINGSOD4.CHP: 32 sample songs.
20170719 -- seventh public release. New extended tremolos (60-9F) lead to several changes in the amplitude effect byte: old 60-6F become 5F, old 80 becomes 9E, old 81-8F become 61-6F, old 90-9F become A0; 70-7F stay the same. New command line options -b1, -b2 and -b3. Minor tweaks in CHIPNSFX.I80. New CATABALL.CHP, FREDDY_H.CHP, HYDROFOL.CHP and SCOR3020.CHP.
20170707 -- sixth public release. New command line options -y and -Y (generate YM3 file, either full song or song loop), commands Control-W (apply transposition to current pattern), Control-D (detect duplicates and optionally erase them), Control-E (check for duplicates and optionally create them). Minor changes in CHIPNSFX.I80 extended mode vibratos, in the file dialog and the INCLUDE file compression. New DEFLEKTR.CHP, GRANGEHL.CHP, PHANTIS1.CHP, PHANTIS2.CHP, THINGBBK.CHP and TIMETRAX.CHP.
20170616 -- fifth public release. Fixed a file dialog bug reported by Garvalf (who also wrote CHIPNSFX's first new song from scratch), as well as minor internal consistency bugs. Pattern panel allows using Control-D. New ATOMINO3.CHP and DESPERA2.CHP.
20170607 -- fourth public release. New command Control-D tells whether the current instrument is unused or the current pattern is a duplicate (Shift: erase unused instrument, turn current pattern into a link to the pattern it is a duplicate of). Minor bugfixes: inconsistencies in -P mode and in channel toggling, better compression when generating INCLUDE files, etc. Minor changes in several songs. New DESPERA1.CHP.
20170602 -- third public release. New command line options -P (cursor follows playback), -k1, -k2 and -k STR (set QWERTZ, AZERTY or custom keyboard map), following a suggestion from Beb.
20170523 -- second public release. New command line options -F (48000 Hz) and -L (linear amplitude). A blue bar makes the active items stand out. Minor changes in the documentation file.
20170513 -- first public release.