Vincent is one of Arobas Music’s super-developers. He speaks Macintosh, GNU Linux, and a few other languages fluently, and has a PhD in computer security. Let’s just say he is not to be messed with. A few months ago, Qt Nokia asked him to tell them about our use of Qt in developing the 6th version of our famed software. We are quoting here the beginning of the article, and encourage you to read it if you are interested in knowing more on the topic.
Almost everyone has at some point in their life dreamed of being able to play the guitar and imagined what it would feel like to deliver a crescendo of axe wizardry so amazing an entire stadium stood up and threw their arms in the air…
Those who have tried to master the instrument will know that the chasm between strumming a few wonky chords and delivering a stupendous amp-melting solo is enormous. Learning to play the guitar is not easy.
But budding guitarists of today have some great tools to help make their learning simpler and easier, and among the best of these tools is Arobas Music’s Guitar Pro product.
Guitar Pro version 6 has just been released for Windows, Linux and Mac – and it was re-written using Qt.
We took some time to talk with Vincent Bénony from Arobas Music about their experiences rewriting Guitar Pro with Qt.
Tell us a little bit about Guitar Pro.
Guitar Pro is tablature editor software, designed to be fast and really simple to use. Adding a guitar score is easy via a simple computer keyboard, or by using any MIDI device connected to the computer. While editing, the user has the ability to listen to their composition using our Realistic Sound Engine. Guitar Pro offers tons of convenient tools to help people learn new songs too, like the speed trainer which plays song slower and then goes faster and faster. And as Guitar Pro has become the favourite tool of guitarists worldwide, you’ll always find the tablature you need online!
How did you come to the decision to rewrite Guitar Pro using Qt?
We previously maintained two different versions of Guitar Pro: one for the Mac, the other for Windows. It was really difficult for us to fix bugs on both sides. We looked for solutions to help us create a single version, and as some of us were daily Linux users, Qt was placed on our list of cross platform technologies to evaluate. The choice was not difficult: Qt was the easiest one, and the most promising!
Was it challenging re-writing Guitar Pro using Qt?
Once we had read the documentation and tutorials, it was not that difficult to write the code. We regret that Qt Creator didn’t exist when we started on development and we missed QtMultimedia too, but we’ll surely use it for our next release.
You support Windows, Mac and Linux (Ubuntu). How effective was Qt in allowing you to deploy across the three platforms without source code changes?
It’s easy: we almost didn’t change the source code at all for the three platforms! That was our wish when we decided to use Qt, and that goal was achieved. The only thing we really had to do was add a small amount of code to handle some Mac specific issues.
Did you look to the Qt community for support and assistance during your build?
We didn’t need that much assistance at all during our project, but forums helped us in some rare cases. Most of the time, Qt Assistant contained all the information we needed.
Which components within Qt were the most valuable to you during your build?
We mainly used QtCore, QtGui and QtSvg components. All of them were perfectly time-saving! Especially for the fact that we didn’t have to deal with native platform encoding, for file names, for example. Once again, we really missed Qt Creator for the main project, but we used it for our test projects when we had to validate some behaviour from our algorithms, or to validate some scenarios by creating a small GUI application from scratch. It’s really an excellent tool!
What advice would you give developers considering moving their development over to Qt or rewriting an existing program in Qt?
We made the mistake to keep some bridges between STL containers and Qt containers for example; so please trust us: throw out all your code, and rewrite it using only Qt solutions. It’s fast, easy to understand, the syntax is clear, and you’ll never regret it! You think about something, simply imagine what the object may look like, and you can be sure it exists in the Qt SDK with that name! It’s pretty awesome.
Finally, will Guitar Pro V6 make me a better guitar player?
It sure will!