 Hello everybody, it's very nice to be here at QtCon. My name is Sandro Andrade, I have a slide to present myself. I work as a professor at Federal Institute of Technology in Brazil. I've been using Qt and KDE technologies for some years already. I'm contributing to KDE since 2008. I started doing some game development at Gluon, and then I did some work on KDevelop and Plasmate. And lately I've been working mostly by doing some community management in Latin America. And in last month doing some KDE stuff, what that talk is about. And also I'm a member of the board of directors of KDE EV since last year. And of course I'm completely mad about music, and that talk is about that. And this talk is about two really amazing things which are free software and music, or Qt and music, or KDE and music. You pick up your favorite combination. And free software and music are really close friends, and close friends usually do many things together. So we have many pretty cool free software solutions for music stuff out there. We have a lot of software for shit music publishing and music post production and sound synthesis and MIDI sequencing. So we have a lot of pretty good free software for doing music. People are doing music in their house nowadays with a computer and some MIDI sequencing and doing really good stuff. But also as every nice friends there are many things they aren't very good at doing together. So while someone may prefer to go to the beach, his friend may want to smell flowers in some place in the countryside. So free software and music, and most specifically free software for music education is still a topic with where we lack. So there are no many free software solutions for music education nowadays. We have some of them like GNU Sophage, which is pretty complete, but I think we can have something doing more nice work for music education. So actually I started doing something at that way in 2010 when one of my students started developing espine. Apparently I have some word preference for word ending in et, but this is only a consequence. So at that time we were doing really crap software for music education. It was based on Qt4 and KDE Libs4, but it was completely over engineering and the students got graduated. I was quite busy doing my PhD and we didn't manage to push that forward. Only five years later, last year, then I decided to start developing minuet as my personal project, of course working also with students or anyone else who want to contribute. I was pretty happy to see this project getting our first release after only six months of work. So of course it hasn't many, many features because there was only six months of work, but it works. Basically focusing on ear training, exercise. So the goal of the software right now is to provide you a set of exercises to train your ear. So you should listen to some musical concepts and users are expected to recognize what is being played by the software. So what is minuet after all? It's a free software for supporting teachers and students and play their roles for all sorts of music-related educational content. I like to think about it in a broader sense because we can virtually have anything related to music education on it. Of course we don't intend to address the other aspects for music that are currently quite well covered by the existing solutions for music production and so on. It's developed by the KD community, the website is minuet.kd.org and since it's inception we wanted it to be extensible to new content. So users are currently able to introduce new exercises by only adding new JSON files. All the exercises are specified in JSON files so you can create new exercises with no new lines of source code. We wanted it to be available on multiple platforms and multiple form factors. We wanted it to be a hub to leverage the use of open data for music education. We wanted it to be driven by real users' needs. We have a kind of partnership with the music school at Federal University of Bahia where I live when some friends are helping us by doing some specialized music education help. Currently we have ear training exercises in four categories. We have exercises for recognizing short intervals, and scales. But new exercises may be easily defined by creating new JSON files and some features for volume pitch and tempo control. So that isn't too much right now, but we are sure that it's working. So better than talking, we can have some brief demonstration now. Minoway should be already available in most user distributions, so just install it. It's part of KDE Edu, so if you install KDE Edu, we should already have Minoway installed on your computer. So we have a basic navigation menu. That menu is completely built dynamically from the JSON files that are currently installed on your machine. So if you add a new JSON file, you should expect to automatically appear some new category or new exercise. So for charts, we have a bunch of categories for recognizing a lot of different kinds of charts. So we can start with a very simple exercise where you should be able to recognize the difference between a minor and a major chart. So you can click on a new exercise. So that's quite hard because it's in a very low range of the piano. So you can ask to play again. It's quite difficult. Do we have any musicians on the audience right now? Okay, one. Okay, sounds a little more major. Let's see if you are good. Okay, no, it's a minor chart, but yeah. Yeah, so let's try again. Okay, new question. Hopefully it will appear in an easier range, right? Okay, that's pretty cool. That's a major chart, right? Okay, and it shows the right answer there by small circles on the piano keyboard. So you can keep trying or click on give up. If you move your mouse over the possible answers, you see the representation of that answer on the keyboard, right? And you can just give up to see what is the right answer. Yes, Ovidio? No, just the first note of the chart is white because that's the tonic note and the other circles are painted with the same color of the answer. Okay, we can try something. Yeah, sure. That can become quite complicated if you have a lot of charts to difference between them. So that's quite hard. That's pretty difficult, sure. I won't try, I will just give up. And this is a very, very tense chart, right? So we have a similar exercise for detecting intervals. Detecting thirds is quite an easy exercise as well. So this is a minor third. Okay, I'm very good on it. So that's why I'm showing you that one. But it also becomes really, really difficult if you have a lot of problems. This is also simple, right? This is a major third. Yeah, I have no idea. So we have also some rhythm, recognition exercise where the tool will play you for a sequence of randomly chosen rhythm patterns and you should be able to recognize which sequence of rhythm patterns was played. So let's hear it again. I think it's that one. Yes. But if you select some wrong answer, for example, and it shows you which answers were wrong and which answers you selected right. So basically that's what we have so far. So let's go back to the presentation. This is the architecture for the first version we released on April this year. It's a quite simple architecture because that was what we need at that time. So we have a very simple core where an exercise controller reads the JSON files which specify the exercise, do a merge between all of those files and make them available for creating the navigation menu. We have a midi sequencer at that time with a very high couple implementation to the RunStick library and also Timidity and FreePads. So that was a quite limiting factor at this first architecture. And then a bench of QML code which dynamically builds the navigation menu and also the available answers for a given exercise. And in the second release, we did one month ago, we made some improvements on that architecture and exactly to set the stage for having Minoway running on different platforms. So now we have a plugin-based architecture where all the features related to sound have been moving for a given plugin so you can create a new plugin for having Minoway running on a new platform. So on desktop, currently we use FluidSint as a plugin which is more easily to use than RunStick. And also we did a lot of refactoring on QML code. We moved to use Qt Quick Controls 2 exactly to make the code convergence for mobile easier. And so that is the current architecture for the second release. Okay, three months ago, we got a GSOC student accepted to work on Minoway. He's Ayush Shah from India who did a very pretty nice work when creating an Android version for Minoway which contains all those same versions you find on the desktop version. So it's available on Google Play Store. We published it two weeks ago. So it has already 250 downloads, which is not bad, I think. So in the Android solution we are using Qt Quick Controls 2 for the UI and we use CSound for implementing the back end in Android. Also we use FluidSint to send MIDI events for handling MIDI events in Android and the GM Bank sound font to actually produce the sounds. And the build system is provided by Extra CMake Modules where you have everything to build and deploy Android applications already available, which is pretty cool. So I have it running on my phone but I prepare a video by demonstrating the Android version. You can install it on your phone. Basically, this is the initial screen. We have a very usual navigation drawer where you can run across the categories. We also develop an initial dashboard which presents the major exercise categories which allow you to jump directly to a given exercise category. And it uses the same JSON files for defining the exercise. We have some challenges when designing this user interface for small screens. So basically for the virtual piano we implemented some horizontal scrolling feature to just jump to the right session of the piano where the exercise is playing something. And at that block available answers also a virtual scroll to enable us to present exercise with a large number of available answers. Also exercise for rhythm recognition. If you select some wrong pattern it shows then that red rectangle when you can tap on it and see which is the right answer for that exercise. Okay, that is a harder rhythm recognition exercise. It's also available at the desktop version. Okay, that's it. So thanks to Ayusha for doing that thing. And okay. So basically what's next? So now we are sure that we can having it running on the desktop we can having it running on the Linux. The new architecture will hopefully make it easier to have it running on Windows or iOS or other platform. And now we need to invest some time to finish the code convergence. A lot of components are actually reused between those two versions but we still have some working to do to have a really unique code base with a really unique build system. We are working on it now. We want to rethink the user experience because just after you go through an experience of develop some kind of application you get a firm grasp of how user interface should work on mobile platform. So you should rethink how we want to implement those workflows. We still need to improve the UI for tablets. We have got some feedback for something to improve for tablets. We still need to implement sheet music support for having those exercises also represented by using the regular notation for music. We want to extend it to support other music content because right now we have only ear training exercise but we plan to add something related to music theory or to improvisation or to harmony or other aspects of music education. A nice feature is to have it able to recognize answers by allowing the user to sing the interval for example or to answer rhythm exercise by clapping your hand and having the microphone detecting if you are clapping in the right way or in the wrong way. So a lot of work to do. I can't finish this presentation but I would like to thank you for the KD community to provide all the support to have this happen in only six months. So I'm really happy to see all the things that KD can provide you using at this work. So we managed to come up with a website called Repository Tasks and called Overview Continuous Integration. So it's more and more easier to put something out with we have a very amazing community providing everything you need to make it happen. Okay, join us. We are currently a very small team. It's just myself and Ayushisha and another developer one design doing the icons and those things and two more guys who help with the music content so we need more people working on it. So you can help of course by coding but also bring some music feedback on it or by doing some artwork translating or just dealing with people. This is nice as well. So we can talk to us at the KDE at the mailing list or the KDE at the IRC channel and that's it. Thanks for your attention. Any questions? Okay, Mario. Yes, of course although creating JSON file is quite easier, it's more easier than doing things in code, but of course having a visual editor to produce the JSON files is a really, really nice feature. Any other questions? Not yet, but yes, maybe you can just get all the categories and start making some random thing but I guess for teachers and students they usually have a very specific flow of how to apply exercise to students by starting with a very easy level of your training exercise and then improving to more harder exercise. Yeah, that can be done. We have a four month release cycle for application in KDE so I guess the next schedule isn't available yet but you can join us in time and we can have it done for the next release. Can still? Yes, that's in our plan as well and actually that's the part when it goes more social or leveraging the user of open data and it will be really awesome with something in Cuba make some exercise regarding some latching music and then any user using Minouet could download and start doing something. It's a really cool feature. More questions? Okay, this is a JSON file for the first version of Minouet we've done some improvements on it but it's basically an hierarchical JSON where you define the categories for example this is for the category of intervals here you define the range where the randomly choose root note is pick up by the software so here I'm defined from 21 to 104 which is the roll piano range so you can prevent it for creating exercise on the very low range of the piano by increasing that first number to anyone and then you here define a given exercise so this is the exercise I've just shown you that one that recognize thirds so you have two possible answers for this exercise Minouet third or a major third and here you just put a sequence of notes which represents how far are each note from the root position so if you see if you have a piano keyboard like that one if this is the root note which is randomly choose if you count one, two, three you have a minor third so that is that number here representing a minor third and if you count four that is a major third for scales you do something similar for a major scale that's the sequence of distances from the root note to form a major scale but it isn't that hard to create your own ok thank you very much