preview03

Update ALL the projects!

I’ve been busy! In the last couple of weeks, I’ve updated many of my projects with new versions of things. Here’s a quick rundown of what’s been happening.

BPMinus 0.1.7 is live with the auto updater!

BPMinus 0.1.7 is live with the auto updater!

BPMinus

BPMinus has been getting steadily better since I released the first beta a little while ago. I believe I’ve had three intermediate releases that fix a whole bunch of bugs and crashes. The current version is 0.1.7 and it includes all sorts of things that make setting Loop Start/Stop points feel much more natural. Right now, the big beast I’m battling is in the realm of optimizations. I’m trying to address a couple of performance issues, but they’re a bit challenging. Look for more on that front soon.

WPFSVL on CodePlex has been updated.

WPFSVL on CodePlex has been updated.

WPF Sound Visualization Library

Along with BPMinus changes, I’ve made some fixes and improvements in the WPFSVL. These were mostly made to address issues in BPMinus. There were a lot of changes to the TimeEditor in particular. The validation code for time inputs was a little bit wonky, but hopefully that has been improved. There was also a problem with the binding in the TimeEditor theme templates that caused some issues during theme changes. That should be fixed now!

XAML Regions Now in Visual Studio 11

XAML Regions Now in Visual Studio 11

XAML Regions

XAML Regions has been updated – for the first time in about a year! There’s not a whole lot new here, as the update was mainly to add Visual Studio 11 compatibility. However, I did add support for XAML Regions to work in XML files – including your app.config file! I suppose I could call it XML Regions now. I know that will benefit a few of you.

That’s it for now! The upcoming weeks will bring more BPMinus updates. Enjoy!

Three New WPF SVL Controls!


WPF SVL Has New Controls!

WPF SVL Has New Controls!

It’s been a long time since I’ve contributed anything to the code world, but this drought is coming to an end. Soon I will be launching a little application for musicians that I’ve been working on casually over the last year or so. As part of that effort (of which you will hear more soon), I’ve updated WPF SVL with a few new controls! As always, the controls are open source and free to use in your own projects (professional or personal)!

The Equalizer

The Equalizer Control

The Equalizer Control

The first new control is the equalizer. The equalizer is really just a fancy collection of vertical sliders with a few other niceties that are illustrated in the various theme files. The control’s value is an array of floating point numbers (with an element for each equalizer band) that allows you to simultaneously get and set all equalizer values.

The Digital Clock

The Digital Clock

The Digital Clock

Next up we have an LED-style digital clock display control. A lot of audio applications feature a running clock, so I thought I would introduce my own version of a fast-rendering digital clock to WPF.

The Time Editor

The Time Editor

The Time Editor

Finally, we have the TimeEditor control. One of the most obvious holes in WPF’s default control library is a numeric spinner control. This is a play on that control with fields for hours, minutes, and seconds (up t o 1/100th of a second). I’ve taken a stab at masking input and validating time logic (e.g., no more than 60-seconds per hour).

Grab the new controls on the WPF SVL CodePlex Site!

WPFSVL and NAudio

WPFSVL Now Has NAudio Examples

WPFSVL Now Has NAudio Examples

By popular demand, I’ve added an example of how to use the WPFSVL with NAudio as the sound engine powering it. I’m still plugging away at the “getting started” documentation for both BASS and NAudio, but if you get the latest source for WPFSVL, you’ll now have an example application to work from. The way I do sample updates and stereo FFT updates is actually a bit different from anything included in the normal NAudio examples, so I encourage you NAudioers to check it out. The normal examples do FFT at every complete sampling. I have it set up to only do FFT on request from the spectrum analyzer, so my performance seems a bit snappier than other NAudio sample applications out there.

I haven’t had as much time to work out the kinks in the NAudio example, so let me know if you’re seeing anything odd. I know I’m still struggling with certain MP3 files returning strange level data on the waveform. Also, since NAudio is managed code, the performance isn’t quite as snappy as the BASS examples (but still quite decent).

Get the WPF Sound Visualization Library at CodePlex

WPF Sound Visualization Library

WPF SVL supports themes/templating!

WPF SVL supports themes/templating!

I’ve just launched my first CodePlex project, The WPF Sound Visualization Library. This thing is actually an extension of the Spectrum Analyzer control I made and part of a much larger secret project. Essentially, I’m taking all the WPF controls I’m creating in my other big project, dumping them out to their own project, slapping an MIT license on it, and releasing it to the public. They all have the common theme of being controls related to sound visualization/playback. Everything was designed so the look could be customized. I’m always looking for ways to improve their flexibility, so if you have ideas, let me know.

 

Stereo Waveform Timeline

Introducing The Waveform Timeline

Introducing The Waveform Timeline

First up is a Waveform. I’ve seen a few people struggling to create these on the BASS forums, so I hope this is useful to the community. Right now, it only has stereo support. I hope to support Mono, Quad, and 5.1 channel displays soon. Aside from displaying a Waveform, this thing has the ability to set track position and a repeat section in the audio stream it is rendering.

One of the challenges in displaying a Waveform in WPF is making sure that it doesn’t kill performance while not appearing blurry. I’ve taken advantage of BitmapCache and some special scaling code so that this is handled well. The Waveform Timeline is broken down into four template parts: the waveform canvas, the timeline canvas, the progress indicator canvas, and the repeat region overlay canvas.

Spectrum Analyzer

Our Old Friend - The Spectrum Analyzer

Our Old Friend - The Spectrum Analyzer

Next is my old friend the Spectrum Analyzer. Nothing really new to report here. I have lots of detail on this in my previous blog posts. I should note, however, there are a few minor fixes and an added property or two since the last time I posted Spectrum Analyzer source code to this blog.

Album Art Display

Album Art Display - For Those Who Bought Music Before iTunes

Album Art Display - For Those Who Bought Music Before iTunes

Finally, we have an album art display. Basically, it’ll take the album art image (presumably from MP3/AAC tags) and display it in a jewel case. I don’t know how much longer the kids will even remember jewel cases, but I still think they look cool in media applications. I’ve had the Album Art Display in a few of my example applications already, but I’ve refactored it a bit so it was a Control rather than a UserControl.

Check Out The CodePlex Project!