UnderwareDESIGN

PlayBASIC => Show Case => Topic started by: kevin on January 13, 2011, 07:54:54 PM

Title: Dtab Printer - 625 Permutation Printer + Drum Notation Rendering WIP
Post by: kevin on January 13, 2011, 07:54:54 PM
  625 Permutation Printer

    Found this project while looking for something else entirely, thought it lost actually..  It was originally written in another language  way back in 10th,Oct,2000, but now it's part of the PlayBASIC family..   The project originally started as an experiment for converting early DTAB (drum Tabs) into sheet music representation.    Surprisingly the idea of converting tabs to sheet music (at that time) went down like a led balloon, so the project got put on the back burner.    Later, I turned it into this permutation builder as teaching aid.

    The builder is a way of generating independence exercise on mass, 625 exercises to be exact.   It's currently hard coded to build snare line against feet combination's.   Not too sure what i'll do with it, but at least it's not lost..            

   Attached is an example of charts it produces.  Which are lot better than i remember, although that's probably just my printer doing a better job of printing it.  
 


Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on January 16, 2011, 10:09:05 PM
  Drum Notation Rendering

   Been working on various music related projects the past week or so,  which are all related in some way.  In these projects there comes a time when  we need display a sheet music representation.    The previous attempts at this (the 625 permutation printer above for example)  all takes fixed size graphical approach.  While easier, the down side is that the render output can't be sized to the resolution of the printer surface or monitor for that matter.  You can scale it, but it's messy and suffers from a loss of detail.    So this is an experiment is rendering promotional sheet music (for drum kit) using a vector graphic approach.    

  In this (proof of concept) version, the scene is built from a combination of the lines and shape renders.  Obviously the stems are connected using lines/boxes and the note heads and rest symbols are built from PlayBASIC shapes.   Even though the symbols are hand drawn in PlayShape, they give a pretty useful result.   Those with a keen eye will notice the shapes have anti aliasing of sorts.  Which is achieved by pre-rendering the shape to temp image buffer then filtering it that down.  Which helps smooth out the result.   (See example (http://www.underwaredesign.com/forums/index.php?topic=3544.msg23589#msg23589))

  Even though there's a ways to go, i'm pretty happy with the result thus far.   To take this further, it be nice to generate most of the symbols needed using bezier curves.  So the rendering can scale the geometry level.   But that's for another day :)


 
Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on January 17, 2011, 12:51:57 PM
  Musical Note Shape Editor

   Continuing on from the notation rendering above,  rather than create note heads by hand, I've been knocking a simple shape editor together. The idea being that the shape is constructed from set of control points and edges.  Each edge has it's own 'curve' controls (which can't be edited yet), these default to being perpendicular to the edge.  Which is why they bulge out.   By moving the control points you can control how they curve.    Which in sort of like how vector fonts work.   Which might actually be be viable.. But that's another subject..

    Anyway here's a bit of screenie, sort of looks like a half eaten apple.

 
Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on January 18, 2011, 03:45:15 PM
  Musical Note Shape Editor V0.02 - Curve Modification

  Added some curve modification tools to the editor yesterday.  It's bit clunky to use at this point, but just does the job for the most part. Bellow is a "C" like shape using the bezier curves for the edges.

 

 Musical Note Shape Editor V0.02b - Curve Modification Continued

   Rewrote some of code this morning, starting with the edge curve control. the previous version worked by trying to detect the action from the click only,  but it causes problems when clicking on overlapping  line segments to drag them, which was rather annoying.   So that's been broken into separate modes,  which eliminates the issue completely, but it does add another 'click' to the process.

  Also, added some controls to increase/decease an edges smoothness and a way to export to the object to a shape (second picture)..  All in all, it's working pretty well.  

Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on January 20, 2011, 06:00:52 PM
  Musical Note Shape Editor V0.03 - Set Dressing

     Added a bunch of set dressing to the editor this morning and last night.   Mainly stuff like loading and saving shapes and some general alter info.   Looks a bit more like  a real program of sorts now, rather than the thrown together hodge podge that is it.    

     Will most likely post a demo today for the tinkers        



  Musical Note Shape Editor V0.03b - Editing Rest Symbols

       Been actually using the tool to create some note heads starting with some rest symbols (2nd and 3rd pictures), as you can see works pretty. 



Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on January 21, 2011, 10:17:50 PM

  Scalable Detail

     Added some simple controls to set the overall detail level of the curves.  In the first pic we're bumping up the detail level, and in the other we're scaling it back.   Since the detail is scalable,  then the edge level can be controlled when zooming the shape in or out.  Without this if we zoom the shape in (make it bigger) then eventually you'd notice the curves are made of edges, and if you zoom out, then the edges don't need as must detail.  So they can be reduced.   







Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on January 22, 2011, 02:20:55 AM
 Musical Note Head Editor V0.06

    Here's a bit of demo for you guys to tinker with.   This version has a number of keys that you'll need to familiarize yourself with if you're going to able to create a shape (listed bellow).  

    The concept is as follows.   The shape is constructed from a set of vertex using the vertex mode.  These are points in 2d space, once some points are added, you move to the edge editor.  Here you can connect the vertex together to form the edges of the shape.  The edges default to bezier curves, so it'll show the connection and the curve between the points and the control points of the curve along this edge.      To alter an edge, we need to swap to manipulation mode (M) - Here we select the edge to alter , then you can drag the control vectors when you want them.  You can toggle the edge curve type also.  Which only has two modes, straight and bezier (T).  

     


Controls:
==========

    -----------------------
    F1  = HELP DIALOG
    -----------------------


    -----------------------
    F2  = Vectex Editor Mode
    -----------------------

             Left Mouse Click = Add Vertex
             Right Mouse Click = MOVE Vertex  (Must be on the vertex)

             Delete Key = Delete nearest Vertex to mouse pointer

             
            Note: If you delete a vertex that has edges attached to it, these will be deleted also.


    -----------------------
    F3  = Edge Editor Mode
    -----------------------

         
          A key = Add/Delete Edge Mode

                  left click to connect closest edge to destination edge

                  Delete key to delete closest edge to the mouse pointer.  (Doesn't delete the vertex)


          M Key  = Modify Edge Mode

                  Left Click to select edge.  

                  Right Click or space bar to deselect edge  

                  When selected,  left click the curve controls to alter curve

                  T = Change select edges curve type.  Two modes, straight and bezier

                   Left/Right Arrows to change to edges smoothness factor (more or less samples along the curve).  


    -----------------------
    F5  = Load
    -----------------------

         
   Load shape into the buffer, this will clear any current project.

    -----------------------
    F6  = Save
    -----------------------

   Save the current buffer to disc.
   

    -----------------------
    F12  = NEW
    -----------------------

   Reset the shape buffer to default. This will clear any changes you've made



    -----------------------
   ENTER
    -----------------------

       Render sized shape


    -----------------------
    SHIFT  LEFT ARROW
    -----------------------

        Scale down shapes overall edge curve factor

         
    -----------------------
    SHIFT  RIGHT ARROW
    -----------------------

        Scale up shapes overall edge curve factor


    -----------------------
    ESC
    -----------------------

         QUIT

Download
 
  Musical Note Head Editor (http://www.underwaredesign.com/files/demos/Musical_Note_Head_Editor_V006.zip)
Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on January 24, 2011, 11:13:37 PM
  Musical Note Head Editor V0.07

    Added some controls  so the user can define the area within which the shape exists.  In the older version this is basically vertex space, and it'd just assume the widest and  highest vertex are the size of the shape.   Which works for a quick test, but in the real thing we need to be able to define the area a symbol takes, which may or may not be the bounding volume of the vertex/edges.      This allows the output graphic to be centered and aligned to a particular edge position within the graphic.
 
     Bellow we're looking at an apple shape with it's bounds set. In the test output we can see the images keep the same proportions.  Which is what i need for the music rendering and anything else this finds it's way into.  

Apple Shape


[NoteHead]

[Name]
unknown

[SmoothLevel]
5000.0

[Viewport]
0,0,899,699

[Vertex]
6
392.0,203.0
712.0,231.0
609.0,538.0
271.0,580.0
111.0,261.0
331.0,56.0

[Edges]
7
1,1.0
6,48.10887,13.62118
1,48.10887,13.62118
1,1.0
1,4.103757,-49.83131
2,4.103757,-49.83131
1,1.0
2,-268.0,46.0
3,-75.0,-30.0
1,1.0
4,-176.0,145.0
3,278.0,162.0
1,1.0
4,81.0,-56.0
5,270.0,64.0
1,1.0
5,-10.9957,-48.77597
1,-10.9957,-48.77597
1,1.0
1,-48.10887,-13.62118
6,-48.10887,-13.62118

[/NoteHead]






Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on January 26, 2011, 08:12:53 PM
 DTAB (Drum Tab) Importer  V0.01

   The past day or so i've been pulling the various threads of these libraries together.   Since Ultimately I'd like to build an implementation that can render DTAB drum tabs as sheet music.  So obviously we need to be able to load DTAB files in first.  Which just means porting the loaders over from VB.  The porting for the most part has been pretty painless, apart from the odd WTF moment with the format.   Most of the code cuts and pastes over and runs after a quick bit of syntax tweaking.  The main changes have been with how the file is physical loaded and byte stream was being read.   Which took a bit of time writing a set of emulation functions.  Writing a wrapper just allows the loader routines to run virtually as is, which is simpler (and less error prone) than altering them all manually.  

   Anyway, after a day of messing around the loader is able to read compressed DTAB drum tab files.  Speed wise it works pretty well, loading a 5 minute long Dream Theater track inside 150 milliseconds.   While it can load them, it can't really render them.  So pictured bellow is just the raw bars dumped to the screen.  

   Next we'll try and connect some of this together and see if get working in some form.  Can't imagine it being very pretty initially though.. (understatement of the year :) ).


Proportional Sheet Music

    The second and third pictures are of the next progression of the bare bones sheet music render.  This one has some support for proportional rendering, as well as being able to import bezier note head (current only one note head) and render them to scaled sheet.   Still a ways to go, but we're heading in the right direction now I think.

 
Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on January 27, 2011, 09:09:34 AM
   Proportional Sheet Music V0.02

     Slowly connecting the parts of the render together.  The attached pic's are another round of  mock up of the page render with some note support.  The notes are just drawn with a routine onto the page using some more bezier note heads.    You'll notice the notes the tied together, but those are just mock ups as at this point.  Still stewing over what's going to be best method of handling the stems and note buffer, since the existing stem connection is a bit clunky (limiting).  Could probably get away with it, but it'd annoy me :)  

     Anyway, a few more pic's.  The Scale (X and Y) show in red in the top left hand corner of the frame.

Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on January 29, 2011, 10:21:23 PM

Proportional Sheet Music V0.04 - Connecting Stems

    When originally sitting down to attack this problem, I'd always thought the only real challenge would be making the render scalable. I knew the stems would be difficult, but assumed they would be secondary issue.   That was before having to write something flexible enough to tie a bar of notes together.  Which turns out to be a lot trickier than i'd first thought,  and most likely why many similar programs produce some 'odd' notations in certain circumstances.

   The problem is simple on the surface, connect the notes together by their duration so the durations add up to the bar duration.  Previously I'd been using templates for this, which works,  but it's limiting from the perspective that i'd have to manually build all the stem combinations (by hand or in code).   Didn't like that idea too much,  so wanted to build a parser that would do this task automatically.

    Breaking the stream down into a durations is easy, it gets tricky when balancing the output into something legible for humans.  Since there's any numbers ways of notating the same thing in music.  It's like a question that has more than one answer.  So the trick is getting it to style the output into something that falls hopefully within the most common conventions possible, so us poor humans can understand it.

    I've been working on the problem the last few days, after testing a couple of different approaches the current solution works a lot like the expression resolver in PlayBASIC.   So the parser has multiple passes starting out with the smallest possible fragments then compressing them up until the stream can't get any smaller.  At that time, the resulting stream is a representation of the original but with notes and rests in longest durations.   The render then tries to draw this stream.   

    At this point the test render is already more capable than the template method shown above (although the test currently doesn't draw graphic note heads.. just some text :) ),  since it can handle  dotted notes and rests as well as 32nd resolution as part of the stream.   It's far from perfect, but getting better with each little revision session.   Moreover, it should be possible to render not just groupings in two, but groupings of three.   Making for much nicer output of time signatures that are multiples of 3, like 6/8 and 12/8 for example.   


Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on February 03, 2011, 09:55:38 AM
  Proportional Sheet Music V0.05 - Connecting Stems Continued

    Haven't really made much visual progress with this since last time, although the converter can now import the loaded DTAB as the note stream.   The sheet music representation is held in a delta time format (ATM), much like Midi files.   Ideally, so I can use the library to render general music and not just DTAB at some point.  Currently it can load a track and render some basic note heads to the staff.  The rests and stems/flags are still a work in progress due to the bar formats constant evolution (changed twice in two days :) ).  If the track was only made up of only evenly distributed notes, it'd make resolving it a lot simpler, but the stream can have triple sections anywhere. grrr


    The picture is of a basic 8th note rhythm.  Just testing the appending flags to the stems.. Looks ok  
Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: ATLUS on February 03, 2011, 01:42:09 PM
looks nice  ;)
Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on February 08, 2011, 12:29:08 PM
 Proportional Sheet Music V0.06 - Crawling Towards Note Durations

    Been busy much of the last week on other (paid) projects, but I've been getting back to the importers duration conversions.   This takes the raw stream of 32nd note ticks and re-casts them into more approach note & rest durations.    The basic process was actually worked out a while ago,  but bringing all the different threads together has taken a bit longer than i'd expected.   Even at this simple stage  the program is fast approaching 5000 lines.  

   In today's version, the duration casting is up and running and this time the bar render is  drawing from the bars note &  rest duration data.  Currently it can only render 1/4 note and 1/8 note (flagged) note types.  Previous versions above, have no concept of length of each note or rest periods, so they fudge this completely.    Knowing this stuff helps from connecting the stems, drawing rests through to laying out the bars on the sheet (since the width can be calculated).    So while it doesn't look like much of a change from last time, it is.


    The 3 bars pictured bellow are a created from the following simple 3 bar tab.   So in bar #1 we have a 1/8 note groove, bar#2 is 1/4 note groove and bar #3 is combination.




Count:| 1 + 2 + 3 + 4 +  | 1   2   3   4    | 1   2   3   4 +  |
    Hh:| x-x-x-x-x-x-x-x- | x---x---x---x--- | x---x---x---x--- |
   SnD:| ----o-------o--- | ----o-------o--- | ----o-------o-o- |
   BD1:| o-------o------- | o-------o------- | o-------o------- |





Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on February 09, 2011, 12:49:10 PM

Proportional Sheet Music V0.07 - Basic Drum tab to Sheet Music conversion

   Today we're finally starting to see all the parts pull together, with this version we can see some layout support of the chart on the page, accents, 1/4, 1/8,1/16,1/32 note flagging (no ties as yet) and basic 1/4 note rests.   Which (barely) gives us enough information on the chart that a human can start to understand the sheet music version of the Drum Tab, even if it looks a little odd without the common durations tied together.



Count:| 1e+a2e+a3e+a4e+a | 1 + 2 + 3 + 4 +  | 1   2   3e+a4    |
    Hh:| ---------------- | x-x-x-x-x-x-x-x- | x---x---xxxxx--- |
   SnD:| OoooOoooOooOooOo | ----o-------o--- | ----o-------o--- |
   BD1:| ---------------- | o-------o------- | o-------o------- |


Count:| 1   2   3   4 +  | 1   2 + 3 +a4 +a |
    Hh:| x---x---x---x--- | --------x-x-x-xx |
   SnD:| ----o-------o-o- | ----o-o-----o--- |
   BD1:| o-------o------- | --------o--o---- |





   
Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on February 11, 2011, 12:28:52 PM

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. 

Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on February 13, 2011, 12:41:42 PM

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..  

 
Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on February 15, 2011, 08:22:24 AM
  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.
 



Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on February 21, 2011, 09:20:15 PM

    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.   

Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on February 23, 2011, 11:13:08 PM

  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!

   
Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on March 05, 2011, 09:02:23 PM
   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..
   
Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on March 07, 2011, 09:10:43 AM
  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.  

Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on March 09, 2011, 11:17:45 PM
  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 (http://www.underwaredesign.com/?l=Download-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..

Title: Re: 625 Permutation Printer + Drum Notation Rendering
Post by: kevin on March 14, 2011, 04:55:38 PM
    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.        


Title: Re: DtabPrinter - Convert Drum Tab to Sheet Music
Post by: kevin on March 17, 2011, 02:00:48 PM
    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.


 




Title: Re: Dtab Printer - 625 Permutation Printer + Drum Notation Rendering WIP
Post by: kevin on April 03, 2011, 02:53:08 AM


                           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 (http://www.underwaredesign.com/getfile.php?file=GetDtabPrinter/DtabPrinterV028.zip) (1.3 Meg)


Title: Re: Dtab Printer - 625 Permutation Printer + Drum Notation Rendering WIP
Post by: dcutri on December 07, 2011, 10:49:54 AM
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?
Title: Re: Dtab Printer - 625 Permutation Printer + Drum Notation Rendering WIP
Post by: kevin on December 07, 2011, 10:56:45 AM

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