Dtab Printer - 625 Permutation Printer + Drum Notation Rendering WIP

Started by kevin, January 13, 2011, 07:54:54 PM

Previous topic - Next topic

kevin


Proportional Sheet Music V0.08 - 'Dream Theater - 6:00' Test

     Spent much of yesterday doing various little website chores, but tonight i've been improving/bug fixing the render solution.  There was an odd bug where rest symbols would only appear on the first beat within a bar, which was causing it to hang some times.  Took a while to suss out where the problem was, but easy to fix.  So now it's able to handle 1/4, 1/8, 1/16 & 1/32 flagged notes & rests.   Missing whole and half notes currently, but i'm not too worried about those really.   In terms of note heads, things like Ghost Notes, Flams and Drags are causing a bit of concern as to how they'll slot in, but they should be OK.

     The render bellow is of a Dream Theater track, as you can see it's slowly progressing towards something useful, but there's still a number of  unsupported features in it, meaning there's a lots of errors in the resulting sheet music at this time.  Given the complexity of the track, you've got to expect at at this point ! - I'm aiming at getting a version of this out by the end of the month.  My gut feeling is that it'll take a while to tweak the render rules in order for it makes the best sense it can. 


kevin

#16

Proportional Sheet Music V0.09 - Tied Stems + Bar Repeats

   Between the various black outs over the weekend i've been tinkering around importing the note ties logic from the test.  So far it's going pretty well, it'll spit out something that makes sense most of the time now,  if the chart is simple enough (1/4, 1/8 and 1/16 note based).   The only omissions in this version would be support for dotted notes/rests, triplets and the custom note heads such as flams, drags, ghost notes..  

   Another addition to the importer is that can detect repeated bars, which really helps make the test chart "Metallica - King Nothing" (in this case) layout on the page, due to the lots of repeats in the opening section.  Which you can see in the attached pic.  The chart is about 90% accurate (to the tab), the things missing are the percussion line symbols/ re-mapping, some flams and couple of tie errors.  

   To make doing round shapes easier in the note head editor ended up adding another edge type, which allows an edge to be a vertex controlled circle.   Which makes creating things the repeat symbol note heads much easier..  

 

kevin

#17
  Musical Note Head Editor V0.09

      Been adding a few new features to note head editor,  mainly adding support for multiple layers of polygons to form the final graphic.   This allows  areas to overlap without the polygon filler inverting the state, which is to be expected, since the shape rendering is positive /negative space filler.   Which means that in order to get a shape previously, you'd had to create the outline without any edges intersecting, if you wanted only the inner sector to be filled.  

      The new addition allows different parts to be held as separate layers, these layers are drawn in successive passes, so it doesn't matter if they overlap or not.  This allows areas to be blocked out then connected between overlays.   The following screens,  show a vector note head which has two layers.  The 'flag' and ball are on one layer and the stem is on another, allowing them to overlap.  

       So far the editor has been  updated to handle layers, but the music rendering library still just assumes they're single layered, so loading one these these in and trying to render it will only show parts of the note.  So that's the next little task.


  Note Head


[NoteHead]

[Name]
unknown

[SmoothLevel]
5187.433

[Layers]
2

[Viewport]
47,76,607,635

[Vertex]
10
351.0,105.0
408.0,375.0
351.0,225.0
425.0,261.0
344.0,85.0
353.0,106.0
353.0,503.0
344.0,476.0
272.0,500.0
355.0,500.0

[Edges]
9
1,1.677688,0
1,2.0,43.0
4,-26.0,-36.0
1,1.126825,0
2,16.0,-55.0
3,99.0,36.0
0,1.0,0
3,-49.99599,0.6328567
1,-49.99599,0.6328567
1,1.644631,0
4,21.0,28.0
2,18.0,-22.0
0,1.0,1
5,-1.784578,-49.96814
6,-1.784578,-49.96814
0,1.0,1
6,49.99203,0.892724
7,49.99203,0.892724
0,1.0,1
7,-2.081511,49.95665
8,-2.081511,49.95665
0,1.0,1
8,-49.99852,-0.3846099
5,-49.99852,-0.3846099
2,0.5639056,0
9,25.47461,-43.02377
10,25.47461,-43.02377

[/NoteHead]







Proportional Sheet Music V0.10 - Flams

       Due to changes in the note head format, i've had to change how the sheet music library and note head library interface.   In the older versions the note heads were manually hard coded in the sheet music drawing routines.  Which was ok initially, but as it keeps growing it's become necessary to interface it.   Which has meant a Bit of messing around re factoring some of the core routines, but it's up and running again.

       One new addition is at note heads can have attached note heads, which allows for Flams to be integrated into the stream.   Example attached.
 




kevin


    Proportional Sheet Music V0.14 - Triplets

     Been working on adding triplets this morning.  So far it's able to tags the grouping, but it doesn't understand the triplet note durations.   


kevin


  Proportional Sheet Music V0.15 - Triplets Continued

   It's been really strange week, so my work flow on the rendering engine hasn't been anywhere near enough to be nearing a 'working solution', what with the site issues over the weekend and that I've been some important meetings to prepare for next week.   Which is just become a time trap of it's own.  but anyway..

   What i've been working on,is adding the ability to handle alternative sub divisions such as triplets to the engine, other than  the regular  binary divisions such as 1/4, 1/8 , 1/16, 32nd  notes.    Each bar is stored a delta format, so notes are stream of events within the bar.   They initially start out of 32nd notes and are recast into more appropriate subdivisions by the resolver.    This works well for binary subdivisions and i'd assumed that other rates would slot into along side without much hassle, but after testing it, there's some unforeseen drama's with the casting merging groups of notes together that aren't actually the same duration.   So in other words, the resolver needs a bit of a rethink in order for the parts to slot together better.  No great surprises there.. But this is going to push the project behind schedule.   Which is bit of pain.. Ya get that!

   

kevin

#20
   Proportional Sheet Music V0.18 - Triplets Continued

   Only had time for a few broken sessions on DtabPrinter the past week or so,  due to other commitments.  Even though it's moving slowly, the logic has certainly improved since last look. Now the importer handles triplets as well the  note resolver and internal clock.  Which means the rate changes don't completely throw everything out of sync.

   In the picture we're looking a couple of bars with triplet sections embedded,  the notes don't join since the stem logic currently has no idea of what to do with triplets, so they just default to the 1/4 note stems. But internally they're cast,  all except the rouge 1/32 note at that start of beat #2 in bar #2.

 So there's still a few gremlins in the logic, but it's getting better.  Although the changes in the clock have caused a few errors with 1/16 note connections in this version..
   

kevin

#21
  Proportional Sheet Music V0.19 - First Working Triplet Test
   
    Finally sussed out the triplet casting issue (shown above) this afternoon, turned out that certain patterns of events could see the first note pushed before the rate change,  so the note would  default to binary mode in such cases. So in the output you'd get a 32nd note inside the triplet section, since a 32nd and 32nd note triplet can't be recast in the resolver, as they're different durations of time.   Anyway, what this means is the importer / resolver and render are  now binary and ternary aware.  

    There's still a few big challenges left to work out though, apart from the obvious stuff like cleaning up the stem connection logic, which has inherited a few dramas from the triplet changes.  While I can't see these being big stumbling block, the logic is bound to have more than a few hiccups in it until there's really some good old fashion testing of lots of real life songs.  

   One issue that comes to mind, would be rendering text on the chart.   The trouble with GDI text is that it's not deterministic, which either means pre-converting the fonts to the CRF and then manually scaling the text, or just go all out and make and a vector font.   That latter is possible, but would be time consuming to get a good result.  


kevin

#22
  DtabPrinter V0.20 - Basic Interface

   We're slowly getting to a point now where the libraries are maturing and the application is starting to appear from under ruble, as such it's time to put together an interface for the end user.  Since the program is really just a free helper application for Dtab Users basically and it's not an editor, so we don't need anything overly elaborate.  Ultimately all it does is import Dtab files and renders them out for printing.     So a few menus and dialogs are about the extent of the interface really.  

   So far the interface is built from a variation of the standard framework that i use for my PlayBasic GUI programs, so it'd no doubt look familiar to PlayBASIC users.  One of the benefits of using PB for this project apart from the ease factor,  is that PlayBASIC is designed as a 2D graphical language,  so throwing in the odd effect is perfectly viable.  Which can be way too temping at times :)

   Since DtabPrinter is being designed as a DTAB helper application, it's set up to look at your local Dtab preferences for 'recent loaded files' and other tidbits,  but I should point out that while DtabPrinter is DTAB aware, it doesn't require DTAB to function.  So people who don't own Dtab can still use it, providing you have Dtab formatted Drum tabs

   Anyway, back to messing around with it..


kevin

#23
    DtabPrinter V0.22 - Interface

   Still chipping away on the interface side of the project, wasn't entirely sure how I want it all to function really, so ended up messing around with a few visual tidbits.  While fun, it's a bit of time trap.   V0.22 is functionally workable, meaning you can load a track and save out the renders.  But I wanted to add a view mode at least.   Initially was going to it draw up an array of thumb nails from the rendered pages,  which worked but given the charts are being so heavily down sampled, the detail is completely lost.  So I think i'll go with show a preview sized to the viewport,  then add some page forward and back controls.  Even in low detail rendering mode, the preview is still heavily sample, but it's only to get an idea of layout.        



kevin

#24
    DtabPrinter V0.25 - Preview Music Mode

   Just finishing off the preview controls this morning.  Internally the Drum Tab to sheet music library renders the chart out to an internal virtual page.  This page size can be scaled up or down.  The music rendering is drawn proportional to it's internal virtual page size.  Even at the default low quality the virtual page is music much  larger than the screen.

    To view this the rendered music pages have to be scaled down to fit within the screens view port.  Given they're being scaled, the frames are previously mip mapped during rendering.  So the preview retains the line/pixel data even when scaled down to a third of it's actual size, the down side is that at this size,  finer pixel quality is lost from the filtering.   It's not lost from the music images, just the preview window.  

   The buttons on the bottom let the user flip through the pages of the chart,  you can use the scroll button to zoom in/out and left click to pull the view.  Which allows you to zoom into the hi detailed version and view any part of it, even if it's way off screen.  Which it will be.  

    Here we see some drum music loaded and zoomed into.  Only thing left in the GUI now is to fill in the about dialogs.   I'm planning on adding some settings for the rendering library,  so you can change the virtual page size / colour palettes and  note head sizes the music rendering uses. Which would allow greater customization of the output, but that'll have to wait until a future upgrade.


 





kevin



                           Title: DTAB PRINTER

                          Version: V0.28 (ALPHA)

                            By: Kevin Picone

                         Url: www.DtabPrinter.com
                       Url: www.underwaredesign.com

                      Release Date:  3rd, Apr, 2011

  (c) copyright 2011 Kevin Picone, Underware Design All Rights Reserved




  This is the first limited public release of our DTAB companion
application DtabPrinter.


 DtabPrinter is an application focusing on the conversion of DTAB
formatted Drum Tabs into Sheet Music.  The package comes stand alone and
does NOT require DTAB.  Although, you will of course need some Dtab
formatted tabs in order to use it effectively


  This version of the package is very early it in it's life cycle, so you
should expect rendering bugs and be pleasantly surprised when it works
correctly!   We're hoping to resolve such issues as user feedback comes
in over the longer term.   At the moment, we're well aware of the
issues :) - But feel it's worth releasing to give users some idea of what
the application is all about.  

  While the package is called DtabPrinter, it doesn't actually print.  Rather
it allows you to save the rendered sheet music as bitmaps for printing with
your preferred print software.  


   What's supported ?

    - 1/4, 1/8, 1/16 & 32nd notes + rest
    - Triplet Groupings
    - Flams
    - Time Signatures (supported but be needs lots of work :)
    - Auto Repeats

   What's Missing ?

     - Ruffs  /  Ghost notes
     - Text output in music (titles, comments etc)
     - Only supports Dtab V0.01 files, older files will need converting
       prior to importation.
     - No user defined 'page size' for the render engine.



  System Requirements

    - Any Windows Operating Systems, including Win98, WinME, 2000, XP,
                                              Vista & Win7  

    - Direct X 3.0 (or above) - Vista and Win7 users may need to install
                                direct x9 for this to to run!





  Download

Download DtabPrinter V0.28 (1.3 Meg)



dcutri

Hi. I wondered if anyone could help me. I've bought a registered copy of DTAB V1.03b and it works great. But I also downloaded DTAB PRINTER V0.28 (ALPHA) and I'm having trouble getting it to work. It opens up and then crashes if I try to Load a .dtab file. But then that file will show up in my recent documents and I can open it that way, but then it crashes if I try to Save it. I can take multiple screenshots of it and paste them together, but that's not ideal :). Whenever it crashes, a window pops up that says "DtabPrinter.exe has stopped working. Windows is checking for a solution to the problem." Then it can't find a solution so it has to close. I'm using Windows 7, 64-bit, and I have DirectX 11. What can I do?

kevin


DirectX 11 won't help, you need to install DirectX 9, since 11 doesn't include all the fall back versions..