Auto-download MIDI files based on accuracy

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view

Auto-download MIDI files based on accuracy


Made a quick demo of an extension to PB to allow MIDI files to be dynamically downloaded.

For example, the first MIDI file would be a slow speed of the just the first segment of a song. If the user gets a high enough accuracy, PB downloads the 2nd MIDI, which is the the first segment at normal speed. Next would be the second segment at slow speed. Etc.

All MIDI files (whether segment or entire songs) could live on a creative-commons licensed "MIDI-Wiki".

Instructors create courses as a series of MIDI URLs (whether they point to the MIDIwiki; the file-system if running in an PB-liveUSB; or some other web location), and accuracy thresholds for moving forward/backward.

Since the logic of "what song is next" resides in the WebApp (the mini-course server), the community can be free to come up with all sorts of processes more interesting than this little demo (maybe even a live play-off contest). And instructors could make their own custom PB.iso that point to their own course server.

My webserver is on a slow link, so post a reply if you have trouble reaching it and we'll figure out another way to host it (probably via liveUSB).
Reply | Threaded
Open this post in threaded view

Re: Auto-download MIDI files based on accuracy

Louis B.
Hi Jesse,

Thanks for your work on this however I am not sure I quite agree with
your approach.

Firstly This is something that has been at the back of my mind that I
have wanted to do for ages. Adding a high score so the student can see
their improvement. At the end of each song it would analyse how they
have played and they make suggestions on how to improve like putting up
a message "that was very good -- now try with both hands" or "you made
quite a lot mistakes that time -- try reducing the speed to 50%" with an
automatic option to automatically adjust the speed depending on how they
play. And they turning the Midi files into some sort of course

However I am not sure I agree exactly with your approach it seems very
complicated way of doing it. For starters it depends on a network
connection being present. I would rather PB had all the songs
pre-installed as part of the installation process. Indeed I have
completed work in svn to install the midi files as part of the
installation. Then we could have the progress levels built into piano
booster (eg only play this song at 50% speed transposed into C major)
rather than having lots of very similar midi files.

I really really do not want to pour cold water on all your hard work,
and hopefully there is a way we can use all your work but integrated
into PB without depending on a network connection.

What language are your familiar with? If you don't like c++ then there
are other ways we could achieve the same effect. We could possibly
communicate with a helper program using sockets/pipes or via the file
system. eg (PB writes the accuracy results to a file on the file system
or via a pipe and the helper program write the results back to another
file/pipe/socket). Or alternatively we use QT plugin framework to load
the PB helper program. Hopefully the QT plugin is language independent.
Or even better enable QT script to do what you/we want. In fact the more
I think about it QT script is the best way to go.

Here is a link to the qtScript

Please let me know what you think of the QtScript idea


Reply | Threaded
Open this post in threaded view

Re: Auto-download MIDI files based on accuracy


Please, let me be the first to say there are better ways to go than what I did! :) I feel the best way to suggest the feature is to implement it. Keeps me honest when I say "Hey, it's not too hard, so let's build X and add Y."

I agree that it's best to keep whatever PB does (incl. download/analyze-playback) within the QT toolset. Especially because it's the best path for cross-platform (instead of just ubuntu, and a liveUSB at that).

I am ok working with C++ and learning QT. QScript is an improvement over my initial implementation, but for the next version I'd like to get a picture of how "things would work" if it's all done locally. Locally means no need for "wget" so perhaps no need for a script at all.

Do you have a good name for this process of PB (or any other tool) analyzing your performance and then tweak playback settings (follow/lead, speed, A-B sub-segments, L/R hands, key, etc.)?  Best I have so far is, Dynamic Guided Training.

Perhaps then, the path forward is to have PB do the DGT. Makes it easy, user only has to: download file; and click "DGT" from a menu. Then we leave some notice or stub/hook about people are welcome to implement remote DGT and offer it back for future review for inclusion.

One interesting outcome of a central DGT server is a large amount of data about how people learning various songs with various methods. With enough info, you can start to answer questions like: what playback-settings lead to fastest learning? What's the lowest frequency of review that still keeps your memory "fresh"? And of course, What's most popular lately?

I would hope, however, that you continue to consider the idea of a (commons-licenced) MIDI-wiki for piano. Not only can we draw from it, but it may bring some extra attention from mainstream piano instructors (music schools, paid tutors, etc.) when the best collection (in terms size, quality, license-ability, and rate of growth) of piano music happens to feed into the best cross-platform open MIDI reader. The goal being to draw these people into the PB orbit as PB ultimately depends on MIDI files. And I want to explore how to make a pb MIDI-wiki the biggest snowball (i.e. growing as it rolls along).

So, what do you think is the next demo: a "download/update basic PB music books" button? or do we leave that for users to figure out.  How about a DGT-mode toggle-button? Perhaps PB also keeps track of what sub-segments of the song you had trouble with... focusing your next run through on the weak section.

Reply | Threaded
Open this post in threaded view

Re: Auto-download MIDI files based on accuracy

This program has drawn my attention and my intention is to bring it into the mainstream music instruction. The price is gold for the public school system. The multiple parts of a MIDI file enables a music teacher to have each student work on their individual part (which can be tailored to their ablity). I'm already trying to get this program to assist in learning (multiple single line) classroom arrangements.

What Jesse does put into focus is PG performance analyse. I haven't been able to figure out how to scroll back to see my errors. Roland's V-Drums Tutor (Learning Software for eDrums) allows you to switch between only showing your successes "O", mistakes "X" or both. It looks like PB only shows your successes in Play Along Mode.
Scrolling back to problem areas, when the loop feature would be helpful. "Let's repeat this (problimatic) bar slowly, before we try go on."
I really wish that you could adjust the tolerance of error in "Follow You" Mode. Playing just one note instead of pausing on every chord is a didactical simplification worth giving students. If a player just plays the other notes of the chord late or wrong, they could be marked on the score. My private Drum students have found "V-Drums Tutor" very helpful. Playing notes successfully in rhythm or late could contribute to the "Accuracy" scoreboard. Rest a sure, this doesn't take any musicality into account, but hey, playing in time with the correct notes is the first step.