I have been looking for a new job for over a month. In my CV I list C# as one of the programming languages I know; however, at my previous job I last used the C# language in July. I thought that if I end up in a programming test as a part of a job interview, it's best if I have used the language recently and it's freshly in my mind. For that reason I decided to start a new spare time software project.

Keppi is a simple music visualizer, written in the C# language. It requires .NET Framework 4.0 to run.

I'm using Media Foundation for decoding. Therefore supported audio formats depend on the Windows version you have.

MP3, AAC, WMA and WAV formats in raw *.mp3, *.aac, *.wma and *.wav files are supported on all platforms. So is the MP4 container format (*.mp4 or *.m4a) provided that the stream inside is of a supported format.

FLAC is supported on Windows 10.

Last edited by SYSTEM on Sun Jan 08, 2017 1:26 am, edited 1 time in total.

Lol! I knew what the software does but SYSTEM's screenshot was making me laugh, "oooooh... squiggly line... sooo purrty". The animated gif does it so much more justice. Anyways, there's something trancing about looking at music visualizers and I don't know what. Anyway, thanks!

Implemented ability to visualize music in YouTube and SoundCloud. It is possible thanks to youtube-dl. Not available on Vista because Media Foundation doesn't support MP4 and AAC on that OS.

Added ability to play multiple files in one session (File -> Open)

Now Keppi blocks the screensaver from showing up and the screen from automatically turning off.

----

Before anyone else points it out: the disk footprint has increased a lot. Youtube-dl alone takes 6,7 megabytes. The total size of the program has increased from 5,1 to 12,5 MB (64-bit builds).

When visualizing music in YouTube or SoundCloud, Media Foundation appears to save the media stream to the IE cache and not remove it afterwards. This can eat a lot of disk space, especially if you listen entire mix-sets. There is a size cap of about 200 MB.

@SYSTEM
Why don't you add a settings file for the GUI? In my opinion it would be better if Keppi was able to preserve window size and position after restart. For me it is cumbersome to resize the window anytime I start the program.

smaragdus wrote:@SYSTEM
Why don't you add a settings file for the GUI? In my opinion it would be better if Keppi was able to preserve window size and position after restart. For me it is cumbersome to resize the window anytime I start the program.

Sure, I'll implement saving the size and position.

I'll also add a way to reset the window back to default size: I have an OCD-like tendency to keep the window at exactly that size, and I want a way to undo if I resize the window accidentally.

smaragdus wrote:@SYSTEM
Why don't you add a settings file for the GUI? In my opinion it would be better if Keppi was able to preserve window size and position after restart. For me it is cumbersome to resize the window anytime I start the program.

Sure, I'll implement saving the size and position.

It's implemented in version 3.10 that I just released. I also fixed playback of SoundCloud tracks, which broke after a youtube-dl update. Full changelog:

Window size and position are now saved.

Fixed: SoundCloud tracks failed to play after the youtube-dl 2017.01.28 update.

I have implemented an interesting new feature: a unreleased version of Keppi attempts to detect when it's playing an entire mix set in YouTube and the video description contains a track list with time stamps. In that case, it can show an optional status bar which shows the currently playing track.

However, this feature is quite far outside the scope of music visualizers: you aren't supposed to use a visualizer to play an entire mix set, after all. For that reason, it's disabled by default, and I don't have any plans to release a new version of Keppi because of this feature. (Keppi 3.10 does have some of the tracklist extraction code, but the feature is completely disabled in that version.) I don't have any other plans to improve Keppi, either, so it will likely be a very long time before the feature will be in a stable release.

(It will happen when I need to update the program because of a change in youtube-dl, YouTube or SoundCloud, such as when a youtube-dl update broke SoundCloud playback in January. It may well be even over an year until something like that happens again.)

Let me know if you'd like to try the tracklist extraction feature anyway. I can create a special build or something.

Do you mean playing the files sequentially, as if they were in a playlist?

This was exactly what I meant. But I am afraid with tool-bars and playlist menu Keppi will become more or less a player. I suppose this wasn't your intention. But drag&drop support would be great. This Media Foundation seems very scarce in format support, don't you think? BASS library seems superior by far.

To be fair, BASS also has quite scarce format support without extensions.

(Media Foundation allows third-party codecs as well, as long as they are locally installed. However, nearly all third-party codecs out there are still made for DirectShow, the predecessor of Media Foundation.)