Andrey, This maybe beyond the scope of your project but I've often wished that music software would support _live_ editing of the MIDI import settings. Choosing the quantinization settings (shortest note value), whether to look for tuplets, and the rhythmic settings for swing is often a process of trial and error. It would be nice to see these how these settings affect the imported score immediately (as soon as you change the setting) rather than repeatedly opening and closing a MIDI file just to try different settings.
If a live preview of a full score is to CPU-intensive it could limit the preview to the first couple pages or first several measures. David On 4/23/2013 10:07 AM, andrey.m.tokarev wrote: > Hi, here is a proposal draft. > Is it correct in general? Any wishes? > > > Title: Improved MIDI import for MuseScore notation program > > > === Name === > > Andrey M. Tokarev > > > === Location === > > Russia, Moscow, UTC+4 > > > === Contacts === > > Email: [email protected] > IRC: trig-ger > > > === Synopsis === > > The project goal is to improve MIDI import in MuseScore by implementing > several different features > that will be useful for conversion MIDI to music notation. There is no > one-to-one conversion > from MIDI to music notation in general but the conversion process can be > made more accurate > and lose minimum information. > > > === Benefits to MuseScore === > > MuseScore users will be able to import MIDI files > and convert them to music sheets more conveniently, with less hand-work > and hopefully more precisely. > > For example, even partial automatic splitting of imported piano track into > two (left/right hand) tracks will simplify the whole editing process. > > Currently MuseScore doesn't do MIDI recording in real time from a MIDI > device > so it is important to import MIDI files recorded with other software. > > > === Deliverables === > > Improved MIDI files conversion into music notation, such as: > - clearer music notation, for example, use dots instead of ties where > possible > - better left/right hand separation for piano music in the case of a single > input track > - triplet recognition and possibly other tuplets > - swing style recognition: notate it as straight notes, but still play swing > > And, if it will be enough time, some other ideas like voice separation: > complex but interesting task - > make MuseScore to do it automatically. > > > === Project Details === > > The proposed import MIDI functionality is about recognition MIDI timeline to > musical notation. > > Left/right hand MIDI piano track separation can be performed not simply with > a "split point", > eg, everything above middle - in treble clef, everything below - in bass > clef. > Fingering can be taken into account, natural width of hand (octave + 2-3 > seconds max). > And some simplification of the result notation can be carried out, for > example, > several tied notes with the same pitch can be replaced in some cases with > one long note. > Also we can choose treble or bass clefs dynamically in dependence on the > middle point of chord for each hand. > I think it is useful to take a look at some commercial conversion software, > such as Notation Musician, > which output is very good - the source of inspiration. > > As for tempo and notes duration, consider beat duration is equal to 1.0. > Notes with the 1.5 duration can be represented in the sheet as 1.0 note + > 0.5 note connected with a tie > or 1.0 note + dot. 1.75 duration = double dotted note and so on. > > There is also an idea to fix import of triplets and - tuplets, in general. > Triplet is a group of three notes that last for two beats. So the > recognition process is based on this fact. > Also triplet can be a pause plus two notes - here we have two notes with 6/4 > of beat duration. > Other tuplets are expected to be treated in a similar way. > > Swing notation has a good description on Wikipedia: > http://en.wikipedia.org/wiki/Swing_(jazz_performance_style)#Swung_note > and can have different rhythmic approximations. Swing has shuffle rhythm. > General MIDI drums - channel 10. > > > === Project Schedule === > > May 28 - June 16 (3 weeks) > Get to know better mentor and the community. > Discuss MIDI import tasks, get familiar with MuseScore code, try some > ideas. > Read more about MIDI format (Wikipedia, different articles, ...) > and MIDI convertion to music sheets, program examples, > for example "Converting MIDI to traditional music score" - > A comparison of music notation software - > http://www.skytopia.com/project/articles/notation.html > Read resources about tuplets, swing rhythm, and drums in connection with > MIDI files. > > June 17 - July 28 (6 weeks) > Week 1. More proper implementation of LH/RH piano track separation, read > some user discussions > for example, "Split Midi track to double staff" - > http://musescore.org/en/node/3195 > "How do I import midi files into a piano score setting" - > http://musescore.org/en/node/16070 > "How To Divide 1 Chord to 2" - > http://musescore.org/en/node/13474 > Week 2. Testing track separation. > Week 3. Implementation of import MIDI with dot notes instead of ties > + use import MIDI code of previous stable MuseScore versions. > Week 4. Triplet recognition (3 notes during 2 beats), also read user > notes, > for example "Can't open a MIDI file with triplets" - > http://musescore.org/en/node/17592 > Week 5. Other tuplet recognition if possible. > Week 6. Testing written code and preparation for evaluation. > > July 29 - August 2 > Mid-term evaluation time > > August 3 - August 6 > Small vacation > > August 7 - September 15 (6 weeks) > Week 1. Drums import, repeat drum marking in MIDI file. > Week 2. Swing import, repeat some articles on this topic. > Week 3. Testing. > Week 4-5. Possible time for additional ideas: voice separation and > others. > Week 6. Testing written code and preparation for evaluation. > > September 16 - September 22 (1 week) > Final testing and bug-fixing. > > September 23 - September 27 > Final evaluation time. > > September 27 - September 30 > Submittion of code samples to Google. > > > I plan to do some coding before June > and I'm going to work on this project 3/4 time during June and full-time > during the rest of the GSoC period. > > > === Bio === > > I graduated from Mendeleyev University of Chemical Technology of Russia and > now > I'm a postgraduate student there. > For my thesis during the past two years I developed simulation program (C++, > Qt) > for investigation of aggregation kinetics of colloidal particles > by Langevin dynamics simulations. > In this program I implemented algorithms for > different particle distributions, collision detection and collision > handling, > for particle pairwise-interaction calculation and some others. > I have several paper works on calculations performed by this program. > > I like programming and reading computer literature. > Recently I finished "Algorithms" course by Robert Sedgewick and Kevin Wayne > on Coursera. > > When I have free time I enjoy playing the piano, and computer helps me to > edit and print music scores. > Some time before on Windows I used Finale and SmartScore for editing piano > sheets. > Now I'm working on Linux and MuseScore is my main notation program. > > And about open source, I used several open-source libraries in simulation > program > and I'm interested in open-source software in general. > > I have some experience in contribution to open-source projects. > I contributed to Qt Creator, modern C++ IDE, one of the commits merged with > master branch: > http://qt.gitorious.org/qt-creator/qt-creator/commit/72e0ded > > And my recent contribution to MuseScore - prototype for LH/RH MIDI track > separation: > https://github.com/musescore/MuseScore/pull/309 > > I always wanted to improve software that me and other people use. > Now I have an additional chance to do so. > I have a great interest to implement mentioned and some other musical > features > in MuseScore program and improve MIDI import. > And I'm going to complete this proposed project. > > > -- > > Andrey M. Tokarev > > [email protected] > IRC: trig-ger > > http://github.com/trig-ger > http://gitorious.org/~trig-ger > > > > > -- > View this message in context: > http://dev-list.musescore.org/GSoC-MIDI-proposal-draft-tp7578046.html > Sent from the MuseScore Developer mailing list archive at Nabble.com. > > ------------------------------------------------------------------------------ Try New Relic Now & We'll Send You this Cool Shirt New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr _______________________________________________ Mscore-developer mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mscore-developer
