Welcome to the MultiStream Player version 4.01

Control Layout

Layout

This is a unique audio player and you'll find nothing like it. In keeping with being fast loading and ultra light-weight, nothing is installed except an entry in your Windows registry.

Simply extract the contents of the zip file to its own folder and click on "MStream.exe", load up the play list with your favourite music, sit back, and enjoy! You may wish to create a shortcut to this and place it on your desktop.

One of the features most appreciated is the capability of overlapping the end of the outgoing song with the start of the next song in the play list.

Rather than the limited "gapless play" feature that you have seen in some players, this gives you a professional DJ kind of live mix such that one song smoothly fades into the next, depending on the overlap duration you set in the options menu (from 0 to 20 seconds).

You will also notice a brief fade down on Pause and fade up on Continue, and a short fade out when you skip to the next song (also configurable).

Features "hot switching" from one track to the next. While playing one track, click on any other and the new track begins playing instantly. Combine this feature with Single Play Mode and you're a DJ.

It can also accept command line arguments, meaning you can run it under your favourite database manager such as Mp3Tools.

You can also play tracks via clicking on a song in the file explorer if you first right-mouse click on it and select MStream.exe from the choose program menu item.

The Options Menu

Options Screen

In the options menu you can select which sound card to use from the "Select device" drop down list, and check which driver to use from among the options presented.

If ASIO is not installed on your computer, that option will not be available. (ASIO only gets installed along with more professional sound cards.)

If you are using ASIO, I recommend a buffer size that is evenly divisible by 8 - such as 1024, 512, 256, etc. You must select this from the ASIO Control Panel for your sound card. Choose the lowest value that works reliably without a crackling sound for minimum latency.

The driver defaults to DirectSound from the DirectX suite. The old multimedia system (MMX) driver is available if you don't happen to have DirectX. (Everybody has DirectX these days, so it is really redundant, but it is always nice to have options.)

You don't need to mess with "Sound buffer size samples" unless you hear crackling in the audio being played. If this should occur, you need to increase the sound buffer size until it goes away. If you are a perfectionist, leave this at 512 for minimum latency. If that works reliably for you, that would be perfection.

You may select up to 20 seconds for overlap from one song to the next but I can't imagine you would want to use so much overlap. Normally from 4 to 10 seconds should be satisfactory for most music.

The outgoing track fades down gradually during the overlap as the incoming track begins as originally mixed, generally resulting in a smooth cross-fade effect.

Adding a fade up here would be redundant since often the next song will start with a lead-in, slowly rising in volume. Even if it starts out "hot" it sounds great on top of the fade down from the previous track.

The maximum value for skip fade down is 2 seconds (2000 ms), but you should find the default adequate. This only affects the fade when you manually skip to the next track.

Two new options were added with version 3.00. You can select "Single play mode" and each track will simply stop when done playing, rather than going on to the next track, permitting an interactive DJ mode where you can select any item from the playlist for the next presentation rather than accepting the list order.

You can choose the moment to switch tracks by simply clicking on the next desired track before the first stops, then the next track will immediately begin.

Finally, there is an option to kill the app startup/shutdown sound effect that makes people jump when playing over loud speakers at high volume.

The MStream Player will mix and play 16 bit audio streams, stereo or mono, at any sample rate (since version 2.00). It currently supports Windows PCM wave files and most mp3 formats except free bit rate or low bit rate mpeg 2.5 (not a music format!).

It no longer supports IMA & ADPCM and will not play .wma or .ogg files, and will not play 8 bit audio.

An audio test signal generator is included, accessible from the front control panel (see diagram at top).

Besides using the skip button, you can switch tracks at random by left mouse clicking on the desired item in the play list.

If the previous item was playing, it will stop and the newly selected item will start to play. You may delete an item currently selected in the play list by pressing the Delete key on your keyboard.

If the song deleted was currently playing, the next item in the list will take its place and automatically start playing.

You can clear the entire play list by simply highlighting the first item and hitting the delete key repeatedly until the play list is empty.

Any of the controls may be operated from the keyboard following the normal Windows keyboard interface convention - ie: with the application window currently selected, you can move the focus rectangle via the Tab key to the desired control and press the Space bar to activate its function.

MStream can load play lists of the form "MyPlayList.m3u", such as created via Winamp or other play list editors.

To load a play list, click on the Browse button in MultiStream Player, and near the bottom of the resulting Open File Dialog, where it says "File types", select "Play list".

Suddenly all files of type .m3u will become visible, and you may select as many as you wish to load at one time. You must remember that any file types within that play list that are not supported by MultiStream Player (such as .wma) will be ignored, along with any URLs.

MultiStream Player will also ignore all comment lines (these begin with a '#').

This player does not have all the features you will find on many consumer players. It is not my intention to compete with the many fine players available.

The object of this player is to simply demonstrate some of the capabilities of my sound libraries. In the end, it is up to the developer who employs my libraries to determine the desired feature set.

You should check back on my web site from time to time to see if there are updates. Right mouse click on the title bar of the application and select 'About MStream...' to view the current version number, and compare that with the version of the currently available download on my web site.

What's New

What's new in version 4.01...

Fixed all issues with displaying on high DPI monitors, and another issue where it didn't display properly when the screen wakes from sleep.

What's new in version 4.00...

Version 4.00 brings a long overdue update - recompiled with the latest compiler as of Jan. 2024 (VS2022). The need for a recompile of the many components had held me back from other fixes.

Also now sets sample rate for ASIO on init to 44100 samples per second. (Previously if the sample rate was not 44100 it asked you to set it to that.)

Unfortunately, it has a problem with scaling on High DPI monitors, though it works fine otherwise. The workaround until I fix this is to right click on your desktop, go to "Display Settings", and set scaling to 100%. This is to be hopefully resolved in the next update.

What's new in version 3.03...

This was a bug fix version. The MStream Player was made to support up to 8 DirectX devices, but it seems these days, with virtual devices and multiple ASIO devices with a DirectX driver, people can have more than 8 such devices, which caused MStream to crash. Now it has been modified to handle up to 16 DirectX devices.

Beyond that, it wasn't reading some wave files produced by Wavelab because it wasn't expecting header data > 2K. Now MStream handles .wavs with up to 4K of header data.

What's new in version 3.02...

The current version 3.02 was updated to support ASIO 32 bit float samples, and the entire project was rebuilt under VS2008 under Windows 7. This may resolve some display issues on high DPI monitors with Windows 7.

The remote commands the MStream Player will respond to have also been expanded. If you are building an app to control the MStreamPlayer from your smart phone, contact me and I will give you the command list and a little support.

I myself have created a little Android app and companion Windows app to provide remote control of MStream over the internet, but this is not ready for publication yet.

What's new in version 3.01...

Just a minor bug fix. Turned out there was a bug in the code path that processed mp3s embedded in a RIFF structure. One encounters very few of this type of file these days, but they were quite common many years ago, and there may be still a few around.

What's new in version 3.00...

This is a big update! This version got a new source engine, featuring a new mp3 parser/decoder and interpolator, and the two new options described above that were requested by a rock band in Australia. They use the MStream Player to play their material before the show begins and during the intermission.

The MStream Player has been getting ever more use by professionals, I have discovered, and this has motivated me to make it a more professional application.

I was able to remove a substantial amount of old, over-bloated code with this update and can now dream of adding even more new options when I get the time.

The previous version, I discovered to my embarrassment, was not seeking properly on material with sample rates other than 44,100. This new source engine corrects that and provides precision seeking at any sample rate.

This new version finally gave up on the old configuration files and went to using the registry instead. Config files just don't cut it when starting the app up from a location other than its home directory.

If you are upgrading from a previous version, just drop the new version into the same folder with the old, overwriting whatever is there. Your current configuration will be read in from the old configuration files and recorded in the registry.

What's new in version 2.02...

This version got a next generation mp3 parser - much faster than the previous version and even more rugged. The new parser will even correct some common types of corruption found in mp3s passed around the internet.

What's new in version 2.01...

Finally fixed how the volume control setting is reloaded from the configuration file. Previously it did restore the position on the slider beautifully, but did not set the volume level itself. (Thanks DrawnRazor for so politely pointing this out to me. I guess I didn't really understand the problem when you mentioned it to me a long time ago now.)

What's new in version 2.00...

This is a major version change. I have added the capability to play files of any sample rate via 8 point Lagrange interpolation. All audio is interpolated to CD quality 44100 samples per second if it was at a different sample rate.

What's new in version 1.06...

Version 1.06 has improved code for the VU meters and the shuffle algorithm. Beyond that, now it remembers where the volume control was positioned last time the application ran.

It also has improved compatibility with MP3Toys - detecting more messages sent by that application, and improved capability in command line mode.

It has more robust code behind the OpenFileDialog, as one person reported a strange bug here that I was unable to duplicate.

What's new in version 1.05...

Version 1.05 is mainly a bug fix version. Though mp3s at 32,000 samples per second resolution are not supported, it was discovered that if such a file was loaded inadvertently it would crash the application.

That is now fixed so that such a file will merely play at the wrong speed (44.1 K sample per second) and no longer crash.

There is one more additional feature added. When the MultiStream Player is first opened or shut down, it plays a brief sound effect to announce itself.

Though this little swept tone is less than half a second in duration and attenuated to 24 dBs down, at least one user commented that the sound effect almost knocked him out of his socks when he initialized the application with his speaker volume up full.

If you don't like that little sound effect, simply place an empty text file titled "NoZap.txt" created with Notepad or whatever and place it into the folder with MStream.exe. This will turn off the sound effect.

What's new in version 1.04...

With version 1.04 we now have the capability of loading play lists of the form "MyPlayList.m3u", such as created via Winamp or other play list editors.

To load a play list, click on the Browse button in MultiStream Player, and near the bottom of the resulting Open File Dialog, where it says "File types", select "Play list".

Suddenly all files of type .m3u will become visible, and you may select as many as you wish to load at one time. You must remember that any file types within that play list that are not supported by MultiStream Player (such as .wma) will be ignored, along with any URLs.

MultiStream Player will also ignore all comment lines (these begin with a '#').

Beyond this, we have another new capability, and that is the ability to employ the MultiStream Player as the default player for your system.

Simply enter the Configurations Control Panel and select "Folder Options". From there, in the tab "File Types", you may set the MultiStream Player as the default player to open files of type .wav and .mp3, and even type .m3u, though this last is better left to open with your favourite play list editor.

You can always play an .m3u play list by right mouse clicking on the file in Windows Explorer, then choosing to open it with the MultiStream Player.

With MultiStream Player set as the default player, you may now double click on music files in Windows Explorer with the appropriate extension, and MultiStream Player should pop up and play them.

It opens much faster than other players when doing this - very useful for previewing songs.

We must note here, that since the MultiStream Player does not write anything to your Registry, the only way it knows the path to its configuration files is if it is actually opened within the folder where you keep it.

If called from Windows or another application, it will look for configuration files on the path from which it was called, and will of course not find them there. The simple work-around is to open the MultiStream Player in the folder where it resides first, before you begin clicking on music files to preview them. Files selected will then be sent to the opened copy of the application.

MultiStream Player will now also work as the external player in file organizers such as "MP3Toys".

However, again it will lose knowledge of the path to its configuration files. The solution is to reconfigure your preferences the first time MultiStream Player is opened by MP3Toys. These files will then be saved in the MP3Toys application folder, and thereafter be found whenever opened by MP3Toys.