"°º©o., SwiftMiX Bug List / Web Log ,.o©º°"      


§ September 13, 2022 – 2.10 (C++ Version) Added owner-draw color listbox items. Two new classes PlaylistHelper.cpp and FileCache.cpp. Changes and improvements to list drag-drop and overall behavior of file-caching and playlist functions.

§ September 5, 2022 – 2.08 (C++ Version) Fixed bug in SMList.cpp. During a list-sort, after deleting a song's cached file, the cache-number was not being set to zero.

§ September 2, 2022 – 2.07 (C++ Version) More tweaks to a list-form's popup menu. Fixed some things related to showing of flashing select-bar and how song-queuing shows in a list.

§ August 30, 2022 – 2.05 (C++ Version) Fixed issue with list auto-jumping to selected item. Added menu sorting options.

§ August 26, 2022 – 2.04 (C++ Version) Replaced custom directory and file-save dialogs with standard Windows dialogs. Discovered that calling the Close method for the custom file-open dialog was causing an exception to be thrown in some situations. Fixed.

§ August 25, 2022 – 2.03 (C++ Version) Improved custom multi-select dialog that selects both files and directories. (NOTE: still runs on old Windows XP, but the open-file dialog won't look pretty...)

§ August 19, 2022 – 2.01 (C++ Version) Improved Play-Preview feature described below... added change in FormOFMSDlg that includes InitCommonControlsEx from the Windows common controls DLL.

§ June 28, 2022 – 1.99 (C++ Version) Added a new feature, "play-preview". Click a song-list. Press and hold the CTRL key. As you move the mouse from song-to-song, it plays. Press the SPACEBAR to toggle checked/ unchecked status. Now you can click Player>Export Playlist. In the last dialog, select Checked Songs Only and a sub-list, perhaps a "best-of" list, will be created.

Also, Options->Help now is self-contained. It does not link to my web-site. Instead it writes the html help file to your computer's temporary folder and then displays it using your default web-browser. (just in case this site goes away some day... Oh My!!!)

§ February 16, 2021 – 1.96 (C++ Version) Fixed bug in Export Song-Files and Lists. It was using the song's title tag from the list-box instead of the file's path which is now in an associated data-structure.

§ February 14, 2021 – 1.95 (C++ Version) Fixed bug when Cancel is pressed during Export Song-Files and Lists. It failed to cancel in the select-directory dialog.

§ October 31, 2020 – 1.79 (C# Version) Uninstall shortcut now prints a message with instructions on uninstalling via Windows Apps panel.

§ October 28, 2020 – 1.78 (C# Version) Rebuild and repackage.

§ September 25, 2020 – 1.93 (C++ Version) Updated to fix bug that appeared when time-from-end was reduced. Also added three right-click menu functions to the song-list windows. You can delete either even or odd songs. This is useful when you drag-drop an entire song folder to each player and want them to mix back and forth between players. Also added a menu function that re-sorts a player's list by the numbers at the end of similar file-names.

§ January 18, 2020 – 1.87 (C++ Version) Changed the web-site call in About.cpp and moved the Find-Song dialog box out of the auto-instantiation list. Rebuilt with C++ Builder RAD Studio Community 10.3.3.

§ December 14, 2019 – 1.77 (C# Version) Rebuild with rearranged main form components and border appearance.

§ October 27, 2019 – 1.85 (C++ Version) Added changes to FormOFMSDlg.cpp to allow it to work properly with Windows XP.

§ October 25, 2019 – 1.84 (C++ Version) and 1.74 (C++ XP Version) Added a search and uncheck feature and fixed a bug in the RAD Studio version that was preventing playback from stopping.

§ October 4, 2019 – 1.82 (C++ Version) and 1.73 (C++ XP Version) Put new song-randomization algorithm in the old Borland C++ version. In the RAD Studio C++ version, I did extensive change to the way media-faults are handled. It retries several times and tries the original file's path if the cached file fails - and if the song file has been deleted we force fade to the other player. And if the other player's songs have all played, we sequence to the next song on the current player. Getting all of that to work, harmoniously - is not so trivial!

§ September 22, 2019 – 1.81 (C++ Version) and 1.72 (C++ XP Version) More subtle fixes in subclassed file-open dialog (FormOFMSDlg).

§ September 19, 2019 – 1.80 (C++ Version) Put back filtering out of any file extensions except audio files.

§ September 16, 2019 – 1.79 (C++ Version) and 1.71 (C++ XP Version) Fixed some issues keeping program from working properly in old Windows XP = a flag in FindFirstFileEx().

§ September 8, 2019 – 1.78 (C++ Version) and 1.70 (C++ XP Version) Extensive work on the custom file-folder and song-selection dialog.

§ August 12, 2019 – 1.76 (C++ Version) Added display of currently playing song's meta-tags when you hover the mouse over the elapsed-time panel. Also have posted a new Borland C++ Builder version that still works with Windows XP,7,10 (but does not have disk-caching).

§ August 8, 2019 – 1.75 (C++ Version) Folder drag-drop across local-area-network shares now works (and includes local-computer disk-caching!)

§ July 1, 2019 – 1.74 (C++ Version) Again, a lot of work. Fixed one glaring problem - the song-position timer was being stopped when one of the main song-list forms was closed - so the playing song would end but no mix to the next player was being initiated. Fixed.

I've also redone the song-randomization and have added appropriate calls to seed the random number generator. More work on the new copy-files code. Files are copied to the cache asynchronously which required some care. When a song-file is submitted to be written to the disk-cache, I mark its cache-number -1. After the file is successfully written, its cache-number is properly written. So that serves as a write-pending indication.

I also found that I didn't like the old behavior when a playing song's list-checkbox was unchecked. The next song in the same list started playing. So now, unchecking a playing song starts a fade to the queued song on the other player.

Lastly, I've fixed the behavior when you try to scroll a list using the up, down, left or right keys. It works now by temporarily entering edit-mode, which permits scrolling without actually queuing up any songs. After you release the key for 2 seconds, it reverts back to normal operation.

§ June 27, 2019 – 1.73 (C++ Version) Lots of sundry work - a lot of attention to new file-copy threads for Options->Export Song-Files and Lists.

§ June 19, 2019 – 1.72 (C++ Version) More bug-fixes and a rewrite of the drag-drop moving of songs between lists. Better, stronger, faster! Also added web-url file-caching and ability to enter a web-url for a song into the main file-dialog's file-name box. Added failsafe loading of file at original path should cached file fail to load. And if a file can't be found that's in the list - it will be unchecked and the next song is started.

§ May 24, 2019 – 1.70 (C++ Version) Added disk-caching. Disk-caching allows SwiftMiXeR to pre-load several songs from an external drive into the user's AppData area on Windows 10. That prevents the external drive or network drive from sending small pieces of the song as a stream to the media-players. Instead, the entire song is available on the local drive when needed.

§ May 31, 2017 – 1.67 (C++ Version) Ported to a new development platform: RAD Studio 10.2 (Tokyo).

§ May 31, 2017 – 1.74 (C# Version) Repackaged with new self-signed code certificate.

§ March 17, 2017 – 1.74 (C# Version) Fixed a problem with drag-dropping music-folders onto a playlist. Changed Installer from NSIS to Windows.

§ August 10, 2016 – 1.65 (C++ Version) When I began saving the current player-volumes in the Windows registry I overlooked a problem that could write 0 as the volume - the net effect was that the sound on one player would go silent until you specifically set the volume again. Fixed!

§ August 9, 2016 – 1.73 (C# Version) Repackaged SwiftMiX 1.73 C# using the new 3.0 version of the NSIS installer.

§ July 27, 2016 – 1.64 (C++ Version) Shortened gap between buttons in my custom file-open dialog to fix a button drawing problem when running on Windows 10.

§ July 27, 2016 – 1.73 (C# Version) Updated playlist import/export in the C++ version and ported all of the new playlist import/export file-types into the C# version (at long last).

Added the ability to add a URL from the web to a playlist. In the C++ version you just copy a link from your web-browser then paste it into the Open File box. In the C# version there is a new edit-box at the top of the file-selection dialog where you can paste a web-link then click the Add button to its left.

Unfortunately, I was not able to get the Windows Media Player controls used in SwiftMiX to accept an HTTPS link to Google Drive... Hopefully Microsoft will add this protocol to WMP.

In both versions you can drag/drop a playlist file onto one of the media-players to add its songs.

SwiftMiX supports:

  1. Windows Media (wpl)

  2. MPEG UTF-8 (m3u8)

  3. MPEG ANSI (m3u)

  4. Adv Stream XML (asx)

  5. XML Shareable (xspf)

  6. Win Audio XML (wax)

  7. Windows XML (wmx)

  8. Winamp (pls)

§ August 9, 2016 – 1.73 - (C# Version) A new version (3.0) of the NSIS installer I use was released and hence, I've repackaged SwiftMiX C# using it.

§ July 15, 2016 – 1.72 - (C# Version) Changed the way the file-choser Clear button works... first press clears selected songs from the list, second press then clears entire list.

Changed the way the main song-lists display song-tags as tool-tips... very smooth now.

§ July 14, 2016 – 1.71 - (C# Version)

Fixes a few things:

  1. Re-packaged with the latest "nullsoft scriptable install system 3.0rc1" (NSIS).

  2. Added a help menu to the song-chooser dialog.
  3. The tool-tip, when you hover over a player, no longer appears blank if the song is missing meta-tags. Information is obtained from the song's file-path instead.
  4. Added File and View menu options in the file-chooser. You can set which song attributes are displayed (such as Publisher, Composer, Etc.). The size of the file-chooser form is now retained for use the next time you open SwiftMiX.

  5. If the song had no meta-tag information it appeared as a blank line in the file-chooser form. Fixed.

  6. Drag-and-drop in SwiftMiX has been designed to allow you to drag and drop multiple songs from just about anywhere to anywhere... parts of drag-and-drop system had stopped working. Fixed!

§ February 17, 2016 – 1.70 (C# Version) This version has a re-write of the code that handles the menu option to restore defaults. Also, if you install an revision that is older than the one most recently installed, all the settings revert to defaults.

§ January 21, 2016 – 1.59 (C# Version) I've abandoned the inate Microsoft .NET user-settings management system in favor of simply storing user-settings in the Windows Registry. The problem is that user settings are stored automatically in the user's AppData folder with a long folder-name (Microsoft appends the program's strong-name to the folder-name). My NSIS installer is unable to remove these folders on Uninstall; therefore, a new folder was being added for each revision of the software. Not acceptable! But this fix works well.

(Ran into a fun little "gottcha" with C# in using Registry.GetValue() as a bool. You have to use Convert.ToBoolean() or it throws an exception! I'm not sure why .NET can't deal with this directly because the Windows registry does allow a boolean type in Win32)

§ August 18, 2015 – 1.63 (C++ Version) Fixed a problem with file-name generation when using Options->Export Song-Files And Lists. I also updated the file-open and file-save dialogs.

§ January 15, 2016 – 1.58 (C# Version) Small change to export an M3U8 playlist with the #EXTM3U8 tag.

§ August 28, 2015 – 1.57 (C# Version) Nothing really changed except I signed all of the assemblies with a new self-certified certificate (which won't expire for a long time!). Installing SwiftMiX on any computer except my own will still print a lot of scary warnings and SmartScreen Filter may hoot and holler... but - I'm still reticent to buy-in to the (expensive) code-signing racket.

§ August 18, 2015 – 1.63 (C++ Version) Fixed a problem with file-name generation when using Options->Export Song-Files And Lists. I also updated the file-open and file-save dialogs.

§ July 24, 2015 – 1.62 (C++ Version) Fixed a flaw in the open-file dialog that is commonly used between SwiftMiX and YahCoLoRiZe.

§ July 23, 2015 – 1.57 (C# Version) Rebuilt the NSIS installer script to include the UAC plugin so that the program launches at the appropriate run-level following installation. Also fixed an installer bug that kept the shortcut's "Start In" field from being filled - this caused the start-page shortcuts not to show up on some installations.

Other news: I got the latest NSIS UAC source-code from SourceForge, updated the GitHub NSIS-UAC project and built a 64-bit version of the DLL Plugin.

Here is the NSIS script for the SwiftMiX installer... sminstallscript.zip

§ July 16, 2015 – 1.61 (C++ Version) Added a few size limit-checks on outgoing song-information packets sent via WM_COPYDATA.

§ July 15, 2015 – 1.60 (C++ Version) Incorporated the latest set of custom unicode file dialogs (I designed them to use for the unicode version of YahCoLoRiZe).

§ May 14, 2015 – 1.59 (C++ Version) Created new, fully Unicode file-save and directory-selection dialog wrappers. So, in short, all features of good old SwiftMiX C++ can do Chinese characters...

From the file-open dialog, you can select multiple artist-folders and songs to add to either player. Or drag and drop them on a player... you can drag/drop play-list files also. Simultaneously, with file dialogs open for both players, you can export play lists in any format you choose.

I don't even think the SwiftMiX C# pro version can handle all of the play-list formats this version does.

§ May 5, 2015 – 1.58 (C++ Version) Have the Export Song-Files And Lists feature working with Unicode file-paths now. The C# version for .NET has always worked with Unicode, but the C++ version was all ANSI... not trivial to change it, but good experience in the lucrative field of porting old applications to the 21st century :-)

So, for example, I can have a directory on my desktop with a name in Chinese... and a music library on an external drive of songs with Chinese file-names. Then I add whatever album or artist folders and songs I want to each player. Choose Options->Export Song Files And Lists, choose the Chinese directory on the desktop, and a folder will be created in it called "SwiftMiX" which will have ASX format play-lists for each player and all of the song-files that are referenced by both lists copied there.

Now you can copy or move the SwiftMiX directory anywhere you want or burn it to a DVD. Just drag-drop the SwiftMiX A/B.asx play-list file onto one of the players on SwiftMiX... or open it with Windows Media Player or via PlayerA/B->Import Play-list.

§ May 3, 2015 – 1.57 (C++ Version) Fixed a few glitches... plus, the title-bar of a list-window can now correctly display Unicode (Chinese characters, etc. in a file-path).

§ May 2, 2015 – 1.56 (C++ Version) Major new release. There is a new file-dialog that allows you to select multiple song files or folders and add them all at once or drag and drop them on a player. I won't bore you with too many details other than to say that I'm now sub-classing the Windows file-dialog at a low-level and constructing a custom template for it. The new dialog handles path-names as UTF-16 instead of as ANSI.

Huge additions/changes to the play-list import/export classes... you can now import/export and convert the following play-list formats: wpl, m3u8, m3u, asx, xspf, wax, pls and plain text.

To edit play-lists, don't forget that you can select, drag and drop songs to new locations within a play-list or from one player's list to the other player's list... then export the list in any format.

SwiftMiX C++ now saves your settings in the Windows registry. The default music-directory for each player is saved in UTF-8 format.

I reworked the code that recursively adds all song-files in all sub-directories to a play-list. It now handles UTF-16 path-names by directly using Windows API functions. SwiftMiX C++ is NOT based on .NET (that's why it's cool and worth maintaining!).

SwiftMiX C++ has a new custom-designed player-list-box that can display UTF-8 file-paths. It changes the color of songs that have been played to green and files that can't be opened to red.

NOTE: This version was developed on Windows 8.1 and I haven't tried it with Windows 7 or Windows XP yet.

§ March 27, 2015 – 1.56 (C# Version) Rebuilt using Visual Studio 2015 CTP and fixed a few minor potential problems. My own build of TaglibSharp may also have been targeting the wrong processor in 1.55.

§ March 9, 2015 – 1.55 (C# Version) Modified the "Magnetic Windows" to look better across the myriad incarnations of Windows.

§ January 30, 2015 – 1.54 (C# Version) Rebuilt using Visual Studio 2015 Preview. I've re-released the 64-bit version but it can't send song-info to YahCoLoRiZe which is still 32-bit only. This release is only signed with a temporary (1-year) certificate - I'm still not willing to shell out $600 for a digital code-signing certificate - the code-signing phenomenon is a HUGE rip-off folks!

§ October 29, 2014 – 1.53 (C# Version) This version uses my updated media-tag library. The biggest change is that this code is digitally "signed" (but just with my personal certificate so you will still get scary messages about an unknown publisher when installing it and Windows 8.1 will say "WINDOWS HAS PROTECTED YOUR PC!" when you download it...).

Signing is really a big rip-off and the FTC should look into this because it has created an unfair situation for small companies and independent developers.

Big companies sell code-signing certificates for a hefty annual price and you can't easily download or install software without scary warnings. Which is very sad... because thousands of developers that write code for free in their spare time are being tarred & feathered; caught up like innocent dolphins in a massive corporate net designed to block a few wayward sharks... (or is it insidiously designed by an elite group of nefarious cigar-smoking suits, cackling gleefully up in a musty corporate attic and bumping their smarmy fists together...?).

Anyway, I digress... this code has had all of its assemblies (dll files) signed with a strong-name. The resulting .exe file was signed and timestamped. My NSIS installer script was modified to make a special pass that signs the uninstaller file, uninst.exe. Finally, I ran a batch file that signs and timestamps the installer file itself, SwiftMiX32.exe.

But... I've not spent the $499 (Symantec's quote on 10/28/2014) annual fee for a certificate that has been blessed by the "powers that be"... so all of the above is but a moot point... RESISTANCE IS FUTILE!

§ August 14, 2014 – 1.55 (C++ Version) Cosmetic changes to adjust the playlist positions differently between Windows XP era computers and Windows 7 (or Vista) and up.

§ August 14, 2014 – 1.54 (C++ Version) Fixed a problem with the Ctrl+double-click adding of all files in a music subdirectory. Worked on Windows XP but not on Windows 8.1. - Fixed

§ August 3, 2014 – 1.52 (C# Version) Eliminated checks of the license-key for the time-being... so this version is FREEWARE! Found a minor problem with the license-key module. In Windows 8 the installer automatically runs elevated, but SwiftMiX itself does not run with elevated privileges which caused an error message to show up when it tried to write its freeware license key!

So I did fix that - it prints a message that requests that you right-click and Run As Administrator... But then that seemed rather an onerous request to make of a typical dj/musician, so I just bypassed ye olde License Key altogether... :-)

§ July 31, 2014 – 1.51 (C# Version) The uninstaller was (again) creating two icons in Add/Remove Programs (but due to a different issue)... SwiftMiX now stores the user's screen-position. Worked mainly on cosmetic issues related to our appearance in Windows 8.1. I've automated most of the main form's control dimensions and position. Also, I have removed code internal to SwiftMiX that created file-associations for mp3 and wma music files and I've removed internal uninstall code and the Uninstall menu-item... since we use NSIS now, the uninstaller it generates works better. NSIS now creates and removes file-associations also thanks to a script available at http://nsis.sourceforge.net/File_Association. Many thanks to the NSIS project-team!

§ July 30, 2014 – 1.48 (C# Version) Long day! Using Win 8.1 Pro now to build 32 and 64 bit versions... Version 1.47 had some event handlers that were not reconnected after some controls were cut/pasted onto a GUI panel... SwiftMiX fired right up with Windows 8, right out of the box.

§ July 30, 2014 – 1.47 (C# Version) Exception was being thrown (but handled) when you double-clicked a song in playerA's list when playerB's list was empty. Fixed.

§ July 26, 2014 – 1.46 (C# Version) Fixed a problem with the media-tag-library. Redirected "Help" to the main SwiftMiX web-page. Here is a 64-bit version of SwiftMiX 1.46 (*NOTE: The 64-bit version cannot send timing telemetry to 32-bit YahCoLoRiZe!).

§ July 24, 2014 – 1.45 (C# Version) I've been working on porting the project for 64-bit and have learned much... On Windows 7, the 32-bit version of Windows Media Player always runs unless you take the following steps:

*This is from Microsoft's own people:

  1. In the elevated command prompt, type unregmp2 /SwapTo:64 and press Enter. If prompted, click on Continue in the UAC prompt.
  2. Open registry editor: Go to start and type regedit.exe and press enter.
  3. Go to this location: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\wmplayer.exe
  4. In the right pane, right click on (Default) and click on Modify. By default this is set to the 32 WMP.
  5. Type %ProgramFiles%\Windows Media Player\wmplayer.exe. Click OK.
  6. In the right pane, right click on Path and click on Modify.
  7. Type %ProgramFiles%\Windows Media Player. Click OK.
  8. Close the registry editor.
Verify if this sets Windows Media Player 64-bit as default.

I've released SwiftMiX for 64-bit but am not positive it will *always use some libraries - the libraries SwiftMiX builds are all 64-bit for this distribution but the libraries visual-studio imports and copies possibly are still 32-bits - not sure as of this writing. What I am sure of is that the 64-bit version WON'T run on a 32-bit computer or operating system and the 64-bit version WILL.

§ July 23, 2014 – 1.45 (C# Version) Fixed a problem with duplicate icons in Add/Remove Programs for both TunesFiX and SwiftMiX. Also, the program was throwing an exception on 64-bit machines when it tried to use Interop.IWshRuntimeLibrary... found out the project MUST be built using x86 as the target-platform (not "Any CPU") or the wrong DLLs get loaded. (I can rebuild all sub-projects SwiftMiX uses and target x64 - but I don't think the performance would be improved and then I'd need to manage two distributions.)

§ July 22, 2014 – 1.44 (C# Version) Modified my project MediaTagSharp and so have updated the SwiftMiX DLLs for the song-tag reader.

§ July 15, 2014 – 1.43 (C# Version) Changed the installer to NSIS and built SwiftMiX with Visual Studio 2012 Express for Windows 7.

§ October 26, 2013 – 1.42 (C# Version) More changes to the media-tag library...

§ October 26, 2013 – 1.41 (C# Version) Released with a new version of the library I use to read song-tag information and the internal code to use the library.

§ May 11, 2013 – 1.40 (C# Version) Added a better song-info dialog. When you right-click a song in a playlist and choose "Song Info", a box will pop up with the song's pertinent details. I also modified the software used to retrieve song-tag information from mp3 and wma files. It can now display the "Lyrics" field for wma songs and the "Comments" and "Lyrics" fields for mp3 songs.
Released version 1.53 (C++ Freeware Version). Re-Compiled completely removing license-key module.

§ May 11, 2013 – 1.39 (C# Version) Found a bug in setting a player's state when a song ends. When playing a single list of songs on one player without mixing to the other player, sometimes the next song was not being automatically queued. Fixed.

§ May 5, 2013 – 1.38 (C# Version) The add-files dialog was not being brought to the top of other windows if it was already open. Fixed.

§ May 4, 2013 – 1.37 (C# Version) If a player encountered a corrupt music file, it just stopped. Now it will continue seamlessly to the next song in a list...

§ April 28, 2013 – 1.36 (C# Version) - When you left-click to the right of a song in a song-list, the song-information is displayed. Now the information is also added to the clipboard so that you can paste it into some other application. I also modified the data that is sent when the "Send Timing Telemetry" option is checked. It will send the album's author if the album's name is "Various Artists". (This was added to the C++ version of SwiftMiX in Rev. 1.51)

§ April 14, 2013 – 1.35 (C# Version) Included registration in the "Open With" list in Windows Explorer (not easy!). Also SwiftMiX now has an entry in the Add/Remove Programs list. I have had my own uninstaller for a long time but you had to click Help=>Uninstall.

§ April 9, 2013 – 1.34 (C# Version) Now you can drag/drop on a player. SwiftMiX can read mp3/wma tags now - shows song info when you click a song at the right-side of a player's song-list. Working on TunesFiX, which organizes iTunes compillation albums and can mass-edit song tag information.

§ March 16, 2013 – 1.33 (C# Version) Major release. 1) New Files and Directory selection dialog. 2) Repaired and improved handlers for accessing the players from the playlists. 3) Drag and drop support improvements. 4) Full WMA and MP3 tag support. 5) Support for .ASF format playlists added (already handled .WPL format and plain-text). FREEWARE License-Key: 557Y9H90S95XMSQ9DE (leave the e-mail field blank...) Cheers!

§ February 13, 2013 – 1.32 (C# Version) Added code to check the directory we are installed in prior to removing files during the uninstall. Also added a little feature to show the number of song-files loaded into each list. I added some code to run the progress-bar and put up a wait message if the user is adding huge numbers of song files to a list... (I believe I added that to the C++ version a long time ago...)(by the way, the C++ version is a stand-alone .exe program and does not need an uninstaller.)

§ February 11, 2013 – 1.31 (C# Version) Added Uninstall to the Help menu. I have changed installers for the C# version. Do not use Add/Remove Programs in the control panel to remove SwiftMix. Instead, in SwiftMiX click on Help->Uninstall.

§ February 8, 2013 – 1.30 (C# Version) Released as FREEWARE!

§ October 21, 2010 – 1.49 (C++ Version), added a feature to automate the fitting of songs in a list to particular media-sizes, such as CD-ROM, DVD or Blu-Ray disks. When you choose to export songs and lists from the options menu, a new dialog pops up requesting the size of the media you plan on using. After selecting the media-type, SwiftMiX automatically selects songs that must be removed from the song-lists it order to fit everything on the disk you plan to burn. The user can then skip the removal of a song, in which case an alternate song will be suggested, or permit the song to be removed.

Also fixed a problem in the algorithm used to compute the size required by each list. The byte-sizes are all reported in GiB, MiB, KiB, etc. reflecting the fact that a Killobyte (KiB) is actually 1024 bytes, not 1000 bytes.

§ October 13, 2010 – 1.49 (C++ Version), the new edit mode was kicking out as soon as a song-list window lost focus. We want to stay in the edit-mode and have the freedom to click either song-list, dragging/dropping songs between lists, without exiting the edit-mode. Fixed.

§ October 8, 2010 – 1.48 (C++ Version), added ability to drag/drop multiple selected songs in Edit Mode, either between lists or to a new point in the same list.

§ September 30, 2010 – 1.47 (C++ Version), no bugs found... added programmatic computation and positioning of all controls in SwiftMiX's main form - so it will all re-size itself based upon the default size of the Windows Media Player's ActiveX control.

§ September 24, 2010 – 1.46 (C++ Version), added the features to sort a list and eliminate duplicate songs, to copy selected songs to the clipboard, to randomize a song list - and in-general I cleaned up the look and feel of the GUI (The progress meter operates now when adding song files recursively, etc.)

§ September 22, 2010 – 1.45 (C++ Version), added a feature. Right-click in a song-list and click Edit Mode. Now you can select multiple songs in the list by holding down CTRL and left-clicking them one at a time or by selecting one song and then pressing SHIFT and then another song to select the entire range... Then right-click again to bring up the pop-up menu and select Delete to delete all of the songs from the list, or click Move to insert all of the songs in front of the selected song on the other player's song-list. The ESC key exits Edit Mode.

I found that I needed this feature in the making of my own mix DVD. I put my entire collection of music on List-A. Then I used List-B to drag-drop songs from List-A that I wanted in my final mix-set... Then I deleted all songs from List-A. Now I wanted to select particular songs from List-B to move to List-A for the final dual-player mix. So - I had to create the ability to select and move more than one song! (This turned out to be tricky because I had to derive my OWN component check-list-box to allow multiple file-selection...)

§ September 19, 2010 – 1.44 (C++ Version), complex re-work of the import/export playlist classes to allow them to handle UTF-8 variable byte-size characters in a Windows Media Player playlist. The C++ version does not support UTF-8. But now song file names that have "extended" ASCII characters (such as the French è) will work. Other Unicode characters will not work, such as Chinese characters.

§ September 14, 2010 – 1.43 (C++ Version), found a bug in the Import playlist function that was filtering out special ASCII chars from a filename.

§ September 12, 2010 – 1.42 (C++ Version), Changed the Export/Import playlist classes to store the complete file-path, or optionally, the file-name only, or the relative path without the drive letter. This already works correctly in the .NET version.

Also re-wrote the files/lists Export feature (in the Options menu). It now works more robustly... and I added a feature to compute the disk-space needed by each list and the total space needed - to facilitate editing song-lists prior to exporting them to fit on a DVD.

§ September 9, 2010 – 1.41 (C++ Version), still an exception thrown when deleting a playing song from the end of the song-list. Fixed.

§ September 8, 2010 – 1.40 (C++ Version), fixed problems deleting items from the song's list-box (when you press the DEL key). Also added a (right-click) popup-menu item to delete the selected song.

§ September 8, 2010 – 1.39 (C++ Version), When you added music directories recursively, the new "root" directory for the file-open dialog was not being preserved for the user - Fixed. The time displays now read in hours, minutes and seconds like the C# version.

§ September 7, 2010 – 1.38 (C++ Version), FIXED an ActiveX control sizing problem that has been around for a long time and I was just too busy to tackle the issue. Now its working fine AND - the C++ version now is FREEWARE, the license key will never expire. E-Mail: dxzl@live.com for comments/questions. Thanks!

§ June 18, 2009 – 1.29 (C# Version), Some essential DLLs were missing from the .msi installer.

§ May 29, 2009 – 1.28 (C# Version), Added dockable-window functionality similar to WinAmp thanks to an excellent open-source DLL by Bentley Wolfe on http://dockableform.sourceforge.net/

§ February 13, 2009 – 1.27 (C# Version), 1.37 (C++ version) – New changes to license software.

§ February 5, 2009 – 1.25 (C# Version) – Same changes as for C++ version, also I switched development to a different computer and updated the trial license keys (30-days). (Got to make a living people!)

§ January 30, 2009 – 1.35 (C++ Version) – License Key Software Modified...

I now disallow a key to be written if it is older than the currently installed key and the "ForceKey" flag is set internally. Also, if the computer name was changed the key should no longer be valid and must be re-installed - the program would keep operating, however.

§ November 21, 2008 – 1.34 (C++ Version) – License Key Software Modified...

New License Key feature that lets me post a key that expires relative to the install date rather than just the key's creation date. (incorporated into all products) - but the trade-off is that I am shortening the trial-period... Also major re-working of key-encoding algorithms.

§ October 22, 2008 – 1.33 (C++ Version) – New features added...

1) Added shuffle-play (random song mode) (this was in the .NET version, not in the C++ version).

2) Added a right-click popup menu to each song-list as is in the .NET version - here you can clear the list, check/uncheck all songs, and alpha-sort the list.

3) You can now drag/drop a selected group of song-files onto a list to add them. (Before you could drag/drop to move songs only.)

4) Updated the Help-file on the web-site.

5) Clicking an item that is playing will display the Artist, Album and Song Title now.

6) Many other internal improvements to the code.

§ October 21, 2008 – 1.32 (C++ Version) – Occasionally, if the player was running songs from one list only, songs would stop sequencing. This was caused because the software used a 1-second timer to measure when 1 second remained, then sequence the next song... The problem is that sometimes the phase of the timer relative to the actual time left caused the player to stop, and fail to continue queuing music. Solution was to use the state-change "8" "end of song" event to set a flag which is then checked when the WMP fires a "stop" event. The stop event checks this flag and if its set, sets a timer-event to set up the next song and begin playing it. (tricky because you can't start the player from within a state-change event-handler).

Delete now works rapid-fire - you can click a song and keep hitting DEL key and there is no timer or scrolling delay.

Also, when you exited the player and songs were playing, an exception was being thrown from time-to-time... hopefully, that is also fixed. Now I need to make these changes in the C# version for .NET. - Scott Swift

§ October 16, 2008 – 1.31 (C++ Version) – Two Bugs Fixed...

1) If songs were in only one player's list and the other player had run out of songs, the remaining songs in the player which still had unplayed songs... would not play them.

2) Import Playlist was working for Player A but not for Player B.

Also changes to license-ley software for both C++ and .NET (C#) versions... Trial keys of 90 days also installed.

§ August 15, 2008 – 1.30 (C++ Version) – Bug in player B's elapsed-time readout. FIXED.

Enhansed the drag/drop moving of songs... can now move a playing song within its own play-list and also you can re-queue the currently playing song to play again.

§ August 13, 2008 – 1.28 (C++ Version) – A lot of changes... re-wrote all the check-list-box software... it should work smoothly now to queue new songs, double-click to play a song, single-click to queue a song to play after this one... click the check-box to de-queue or disable or re-enable a song.

Also "Next-Track" will work properly going to the next user-queued song.

Other diverse changes...

Lost KNOWLEDGE: the delete key will delete any song and if the song is currently playing it will start playing the next song in the list.

More lost knowledge: SHIFT+DELETE will delete all the "un-checked" (already played) songs in a list.

§ January 30, 2008 – 1.25 (C++ Version) – Added "Send Timing Telemetry" to Options menu. So now the old simple C++ .exe version can send song info to YahCoLoRiZe also. In YahCoLoRiZe right-click in the main window and select "Process SwiftMiX Song Title".

§ January 28, 2008 – 1.20 (C# Version) – When you click Options->Send Timing Telemetry, SwiftMiX can send song info and play elapsed time. Added album info to that... we now send Album Artist, Song-name and Album Title. Presently this info is available to YahCoLoRiZe when you click The Options Tab and check the SwiftMiX Sync box - or when you Right-Click in the main window and click Process SwiftMiX Song Title in the pop-up menu.

§ November 11, 2007 – 1.19 (C# Version) – Released both C# and C++ versions. Changed support e-mail to: dxzl1@hotmail.com

§ March 10, 2007 – 1.24 – Still Freeware but made some small changes to the licence-key software to reflect updates in other products.

§ March 10, 2007 – 1.23 – Fixed major bug -- if files for only one player present, the songs would not sequence. Converted to a freeware edition. Enjoy!

§ December 13, 2006 – 1.22 – Added full drag and drop between lists for original C++ version.

§ December 5, 2006 – 1.21 – Did some more work on the original version written in C++ (instead of C#). Some internal re-organization, fixed bug of checkmark not appearing for Stop-mode, fixed bug of check not turning off after clicking NextTrack when no more songs were queued.

§ December 5, 2006 – 1.19 – Did some work on the original version written in C++ (instead of C#). Releasing it with a free 1-year license. Works with Windows Media Player 10 and 11. (The c#/.net version is nice, but few people can use it right now!)

§ October 21, 2006 – 1.19 – Checked for functionality with WMP 11. Added Media-Error handlers. (Trial key update). Installer no longer requires un-install of old version.

§ July 21, 2006 – 1.18 – Add telemetry of timing info to YahCoLoRiZe. (forgot to change revision :-))

§ July 21, 2006 – 1.17 – Add "alphabetize list" and "randomize list".

§ July 14, 2006 – 1.16 – Fixed some problems in flashing the currently selected song.

§ July 12, 2006 – 1.15 – Add feature to equalize the number of songs between the two playlists. Add prompts during export to save embedded file-names with no path, a relative path or with a rooted path.

§ July 7, 2006 – 1.14 – Add feature to equalize the number of songs between the two playlists. Add prompts during export to save embedded file-names with no path, a relative path or with a rooted path.

§ July 5, 2006 – 1.13 – Change name to SwiftMiX.

§ July 3, 2006 – 1.12 – Add the features: Invert List, Delete Odd Indices, Delete Even Indices, Remove Duplicates, Find, Check All, Uncheck All, Album Info.

§ June 29, 2006 – 1.11 – Fixed scrolling bug. Added fetch of song's artist and album title. Added check for 1/2 of a DVD/CD.

§ June 29, 2006 – 1.09 – Add F12 and pop-up menu feature to compute the size of all of the files in a list to facilitate make a list that fits a DVD or CD.

§ June 29, 2006 – 1.08 – Add "Random" mode. Fix bug in drag-drop or paste of an item into a list in which all songs had played. A new song would not automatically queue. Cut/Paste now works from the item the mouse points at, not from the "selected" item.

§ June 28, 2006 – 1.07 – add drag-and-drop to move items between song-lists.

§ June 26, 2006 – 1.05 – Revision the same. Fixed problems with drag-drop move and with delete. Also changed the File Export to a background process and am now locking out operations that are unsafe while moving large song files.

§ June 24, 2006 – 1.05 – Added feature "Export Files" in the Options menu. This is powerful. It copies all of the files in the playlist to a directory SwiftMiXeR creates... at a location the user specifies. In addition, both Player A and Player B play-lists are saved in the new directory, but with relative path-names. The resulting directory can then be burned onto a CD-ROM. The CD-ROM can used on any computer. When Import play-list is invoked, the play-list names are created by adding the relative path to the path name of the play-list file being imported. Hence, a DJ can create a mix... and export it to a CD -- but the mix happens "live" and the DJ can modify it on-the-fly. So you can envision a "library" of mixes on CD-ROM that can be taken to any gig.

§ June 23, 2006 – 1.04 – Bug with songs that have an "&" in the title is fixed.

§ June 22, 2006 – 1.03 – Fixed Delete and delete all un-checked items. Added delete to list pop-up menu. Add Cut/Copy/Paste to allow moving items from one list to another. Fix problem where if you unchecked an item... the next song did not queue.

§ June 17, 2006 – 1.02 – Fixed Double-click play from a de-activated play-list window. Changes to minimize file-list windows when main window is minimized.

§ June 16, 2006 – 1.01 – Double-Click to play fixed. Drag-Move songs fixed. Add Directory now remembers last directory opened.


§ June 6, 2006 – 1.17 – Security fix...

§ March 30, 2006 – 1.13 – Add Files now comes up showing all files, not just .wma, some changes in the Options Menu... changed the highlight-scroll delay to 50ms -- was takeing forever for a huge list of songs.

§ March 23, 2006 – 1.10 – High-priority processing was not working... fixed.

§ March 20, 2006 – 1.09 – 1) Press CTRL and double-click now adds a directory and all the songs and songs in all of the subdirectories. 2) Auto mode is not more automatic and Manual mode is now more manual. With Auto turned off, new files will not start by themselves you have to press the play button. In Auto mode, the fader will begin moving from wherever it happens to be... before it had to be all the way to one side or the other. In Auto, pressing the Play button of an idle player will force a fade to the new player. 3) Added a new "10%" Volume setting - useful when you have audio streams coming in from other sources besides SwiftMiXeR and want background music.

§ March 16, 2006 – 1.07 – Refinements to license-key manager.

§ March 13, 2006 – 1.05 – New Version with a license-key manager.

§ March 10, 2006 – 1.04 – A) Delete key now deletes all un-checked songs. B) Hold Shift down to delete individual items.

§ March 9, 2006 – 1.03 – A) Added mute when changing to a new song. I was hearing some player digital noise occasionally. B) View-lists had a bug that opened them off-screen if the main window was moved near an edge of the Desktop. C) Added the ability to move play-list items by drag-dropping them - a lot of work to get it working both with an idle player and one that is playing... D) DEL key will remove a selected list-item E) The Title-Bar of a song-list window now displays either the Queued or "next" song (Q) when you select the window, or it shows the playing song (P). It fits in the last part of the file-name to the size of the window title-bar. E) Added the ability to change the song pointer in a list for a player that is currently playing. (Single-Click)

§ March 6, 2006 – 1.02 – Added "Repeat" function. Changed player names and time-displays to read PlayerA/PlayerB instead of Player1/Player2. Converted to a system that uses double-clicks in a song-list dialog to start playback rather than single-clicks. Single-clicking now will change the song-pointer. This lets you select any song as the next song to fade to from the other player.