This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
dev:percussion [2016/02/06 00:15]
dev:percussion [2018/02/07 17:07] (current)
Line 1: Line 1:
 ====== Percussion Notation ====== ====== Percussion Notation ======
 ===== Objective ===== ===== Objective =====
-As a new drummer and long-time ​Rosegarden ​user, I want to use the computer ​as an improvement aid to help my drumming.+To use Rosegarden to print drum notation for compositions that exist only in the MIDI realm, such as vintage ​computer ​game music.
-My original plan was to add drum notation to Rosegarden. ​ After serious study and contemplationI have concluded this is very impractical. ​ Rosegarden does all internal work using MIDI-based systemand the existing editors allow you to move notes freely up and down the scale by MIDI pitch. ​ Height on staff and other factors are ultimately determined by the MIDI pitch. ​ Rosegarden can manage polyphonic notation, but poorly and awkwardly. ​ It is best to keep polyphony to a minimum.+Rather than develop a nice, first rate feature that would be enjoyable ​to usemy aim is only to hack things to point where I can get the task accomplishedeven if the result ​is brutally ugly to use.
-Drum notes need to be written at one particular height by drum.  ​As drum kits are highly polyphonic; every height represents ​different instrument, and has to be notated within ​separate ​segment.  ​Some drums can trigger ​variety of different MIDI pitches from the same staff positionegsnare head/cross stick/rim shotride edge/​bell/​bowand open/closed hi-hat.  ​Some drums can trigger ​the same MIDI pitch from different staff positionseg. the hi-hat ​pedal is notated toward ​the bottom ​of the staff, for the foot, and can play note by itself, but it is also used with and sometimes notated in conjunction with the closed hi-hat sound that it triggers.  The drum score to "I Will Survive"​ by Gloria Gaynor comes to mind as an example where entering that as notated on the score would trigger duplicate closed ​hi-hat ​events ​Finally,​ drum notes need to export to LilyPond in totally different way, like "hh4 bd bd hh."+===== Phase 1 ===== 
 +The Edit... Split... Split by Drum feature.  ​This scans segment ​to find the discrete pitches, then moves each pitch encountered into new segment.  ​All the F#3 go into segment by themselves, all the Ab4all the C0, etc This is a good beginningbut it needs refinement. 
 +===== Phase 2 ===== 
 +To work out which pitches to combine into a single segmentsuch as open and closed hi-hat.  ​This will be limited to GM percussion only, and hard coded for the basic standard GM drum kit, cross-referenced to whatever LilyPond supports. ​ If it isn't in basic GM or if LilyPond ​can't support it, then it doesn'​t get in.  Hard coding ​the rules saves a massive amount of work.  If users encounter non-GM files they wish to convert into drum notationthey'​ll have to remap the drums to GM first If that became a frequent issue for someone with a particular vintage synth or whatever, this remapping could be scripted a lot more cheaply than fancy internals could be constructed. ​ There just isn't any point in laying all that groundwork to create mappings when one mapping will be used the vast majority of the time, and when there are only a small number of exceptions (all pertaining to the snare and hi-hat ​as far as I recall). 
 +===== Phase 3 ===== 
 +Once the drum splitter ​is smarter, ​the next step is to collect a list of every kind of drum LilyPond can export, and create ​way to designate a particular segment as containing that kind of drum.  This means the pitch is irrelevant, ​and non-GM mappings could be accommodated here easily.  The obvious way to go here is to add a combo box to the SPB to designate that this segment contains a hi-hat ​or what have you. 
 +===== Phase 4 ===== 
 +Once it's possible ​to designate a hi-hat segment, LilyPond ​export ​needs to be modified to deal with putting all of this together. ​ It is probably sufficient to write each segment ​to a discrete Voice. ​ I have no idea as yet how to deal with the problem of rests. 
 +It should be possible to modify LilyPond export to notate things ​like cross-stick,​ accents, and ghost notes; the latter two of which could be guessed at reasonably by examining velocity, and using simple hard-coded ranges. ​ Velocity less than //n// equals an automatic ghost note, velocity higher than //y// equals an accent. 
 +===== Phase 5 ===== 
 +Possibly add some configuration and whatnot so there is more flexibility.
-Added all together, Rosegarden needs something radically different to handle these requirements. ​ Rosegarden has stretched the limits of what can be done with notation in a sequencer-based application,​ but after stewing on all of this for a few weeks, I have to conclude that drum notation lies beyond those limits. ​ The only realistic way to go forward here is to invent a new event paradigm that is not MIDI-based, where it displays at pitch //x//, sounds at pitch //y//, and exports as pitch //​z//​. ​ There could be no way to go back and forth between that and standard Rosegarden events. ​ It would amount to doing a parallel, notation-driven system within the existing MIDI-driven system. 
-It feels tantalizingly possible to overcome all of these objections, but I have concluded that even if it could be done, it just wouldn'​t be anything to be proud to show off in the end.  It would be hacky and weird in the extreme. 
-I have determined that the best solution to my overall requirements is to switch to a notation-driven editor like MusE Score for notating drum parts. ​ Perhaps I will discover opportunities to improve workflow and integration with that application. 
dev/percussion.txt · Last modified: 2018/02/07 17:07 (external edit)
Recent changes RSS feed Creative Commons License Valid XHTML 1.0 Valid CSS Driven by DokuWiki