Blogblog 


23

January '13

Capo 2.1.9

It was an odd coincidence that Capo 2.1.9 was released on the same day as Capo 1.3 for iOS. I submitted both products on the same day, and fully expected the Mac update to take twice as long. I’m glad to see things seem to be improving with Mac App Store review times.

But I digress!

Capo 2.1.9 is a major bugfix release that primarily addresses the slow scrolling in Capo. This performance issue was on my mind since 2.0, and I’ve had a desire to rewrite “everything” in the spectrogram for a long time now. Capo 2.1.8 forced my hand to jump on that project early, because it was pushing 2x as many pixels through the pipe on Retina display Macs.

The bottleneck was in the rendering of the spectrogram. I do a fair bit of compositing there, and Quartz / CoreAnimation just weren’t able to push pixels quickly enough. OpenGL is great at the sort of things I wanted to do, so that seemed to be the obvious solution to my problem.

Capo generates its spectrogram as a black-and-white “intensity map” which I would use as a mask to draw its colour atop the background grid (which is also composited.) I also use a multiplier on the intensity map to adjust the display intensity so that users can bring out the details in their songs.

Any of you with OpenGL chops can see that this stuff is perfect for shaders. The multiplications can be done with a uniform intensity value that is used as a multiplier on the spectrogram intensity map. Hell, I could even work in the HSL colour space if I wanted to (and I do, though that will be more likely to show up in FuzzMeasure first.)

To accomplish all this, I had to perform a major reorganization of the code that draws everything between the metadata/HUD (left side of the window) and the effects (right side of the window.) The “meat and potatoes” of the UI, if you will.

I also decided to adopt the system-supplied scroll view (and its fantastic disappearing scrollers) to power all this nonsense. I actually have seven NSScrollViews (that overlap!) synchronized with one another to pull this off!

Oh, and while I was in there, I enabled ARC and got tighter memory footprint in the process. Why not, right?!

Coming out at the other end of this, I’m really happy with the improved code base. I feel a huge weight lifted off my shoulders, and I feel much better about moving forward with the features that users have been clamouring for.

If you haven’t already, go get the Capo 2.1.9 update, and see the improvements for yourself. And, as always, stay tuned for more…

2 Comments

dave

Months ago

I like the Capo App a lot. I have been planning to write an app like this for a longtime. Then, I found Capo. Just downloaded 2.1.12 from the app store and getting use to it.

One big request, please. There needs to be a way to choose the following during playback. - Original recording - Notes that are tab’d only - Both of the above simultaneously

Playing back a loop and hearing both the original and the tab at the same time is not doing me any good and confusing when trying to verify that I’ve chosen the correct note as the original.

PS I don’t like Facebook to contact you and every tine I click on “Feedback,” it opens the “Text Edit ” App. Can’t I just EMail you?

thanks, dave


Chris Liscio

Months ago

Dave,

If you hold the option key, you will see that you can control the note entry volume independently from the music volume.

As for communicating with us, the feedback feature in the app should launch Mail. If you do not have Mail (or another email app configured) then I suppose it would do something unexpected as you’re experiencing.

You can email support@supermegaultragroovy.com at any time for further help if needed.


Add New Comment

Post your comment

Anti-Spam Quiz: