DO NOT EDIT THIS FILE THIS IS THE ORIGINAL PROJECT PROPOSAL SUBMITTED TO SOURCEFORGE IT WILL BE USED IN THE FUTURE TO VERIFY THAT WE ARE USING SOURCEFORGE CORRECTLY Mer's 'Net Tab Converter Original SourceForge Project Application PROJECT OVERVIEW: The problem that Mer's 'Net Tab Converter attempts to solve involves the distribution of music on the internet in the form of tablature that teaches musicians how to play that music on a guitar (or in some cases on a bass). The music itself is not restricted to the guitar as the only possible instrument on which it may be played, but the tablature that instructs a musician on how to play that music is restricted to specifically a 6 string guitar and nothing else because the tablature does not directly represent the pitches to play but instead represents the finger positions to use when playing those pitches on a guitar (or in some cases on a bass). It is a trivial mathematical process to calculate the note that is played given the finger position on a guitar and the tuning style of that guitar. Given the pitches of the notes, they can be rendered in the standard modern sheet music format (with dots on a staff) that may be read by a musician who plays any instrument. Currently there is a huge public archive of music in tab form hosted by www.olga.net (as well as other archives on other websites) but these music archives are limited to guitarists only. Mer's Net Tab Converter would open these archives to all musicianswho don't play the guitar, or guitarists who want to more easily learn the same songs on other instruments. Mer's 'Net Tab Converter is a program to render ASCII-formatted guitar tablature as graphical sheet music in the standard modern sheet music format (dots on a staff) that is applicable to all musical instruments. Bass tablature is also supported. ASCII input containing HTML tags is also supported since the majority of guitar tab available on the internet is more easily saved to disk in the HTML format in which it is served from websites such as olga.net. It must be understood that tablature as a musical representation format does not contain the ability to represent the full spectrum of musical constructs available in standard modern sheet music (including rhythm and dynamics among other things) though a specialized ASCII tab format could be developed in conjunction with this project in order to make this type of representation possible. I would personally like to see this project lead to a standard format for ASCII guitar tab because currently there is no standard followed by the online tab community other than a few very basic guidelines. ---------------- TECHNICAL ASPECTS WHICH CAUSE IT TO DIFFER FROM SIMILAR, EXISTING SOLUTIONS: I am not aware of any other existing solutions to this problem. There are several commercial sheet music development and editing programs available, but none of them have a feature to import tablature of any kind. The current implementation on which I have begun work renders the graphical sheet music in an HTML format, but it is my hope that the open source community can help create alternative output formats including those used by the commercial software packages for sheet music editing. This type of feature would allow a professional music arranger who own licenses to such software to create a new arrangement of a piece of music, perhaps for many instruments instead of just one, based on an arrangement provided by the tab community. ---------------- Other details: I have begun coding on this project and have actually accomplished something which is just barely usable. It proves the applicability of the concept and the solvability of the problem, but itself has many limitations and problems that must still be solved. The following details reflect the work I have done so far but I expect the open source community to lend assistance in expanding any of these limitations as a desire arises (such as porting to non-windows OS platforms). PROGRAMMING LANGUAGES: C++, Lex, and Yacc Lex and Yacc are used to create the tab file parser. Currently I am using the BumbleBee Software implementations of Lex and Yacc called ALex and AYacc, but the code could be ported to other implementations of Lex and Yacc as necessary to meet licensing requirements. I am not sure at this time of the BumbleBee's licensing restrictions for the usage of ALex and AYacc or the C++ code generated by them, but will examine it before distributing any related code or libraries. OS PLATFORMS SUPPORTED: Initially Windows only Porting to other OS platforms should not be extremely difficult if the GUI aspects of the code can be ported from MFC to something more portable like wxWindows or if entirely new user interface environments can be created for those OS platforms. I will need help from the open source community to accomplish this task as I do not have a non-windows environment for development and testing. GRAPHICS LIBRARIES YOU MIGHT INTEND TO USE, ETC. AS APPLICABLE: I am currently using MFC for GUI creation, but the core of the project does not require it as this is a user interface element which could be replaced by a wide variety of alternatives. The core of the project relies heavily on some form of lex/yacc generated parser to parse the ASCII tab input. Most lex/yacc implementations, including the BumbleBee implementation that I am currently using, require the use of a code library in the form of a static lib or DLL. Such a library would probably always be required by the project. Currently, the project uses one of 6 static libs for this purpose (depending on build and link settings), all of which are provided by BumbleBee software under a license agreement that I have not examined. I am certain that there are free alternatives for this purposes if the BumbleBee license disallows its use in an open source project. I examined several of these alternatives before discoving BumbleBee's ParserGenerator software package. If output formats are added in addition to the current HTML output format, then additional libraries may be required to support those formats. ---------------- FINAL NOTES: I want to stress that the stated design goals in this application are initial design goals only. I fully expect the open source community to propose and implement additional features not discussed in this application and I hope that my omission of such features will not result in some future disqualification of the project. The application procedure on SourceForge says only that this description "will be the basis ... later ... to ensure that you are using the services in the intended way" but does not elaborate on how it will be applied for that purposes nor what exceptions if any will be made for changes to the project purposes that are made by the open source community. I assume that SourceForge is well aware that the open source community will change any and all projects such that this type of disclaimer goes without saying, but I felt I should mention it just to make sure. :) Finally, I would like to clarify the presense of Mer's name in the title, though I doubt you should be concerned about such a cosmetic element. This project originated as a birthday gift for my wife, Meredith (aka Mer), which is why it is called "Mer's Net Tab Converter" instead of simply the "Net Tab Converter." Removing her name from it would be like taking the gift back, which I would like to avoid if at all possible. She granted me permission to open-source the project in order to create improvements for it that are beyond my time constraints and because she agrees with me that the functionality of it should be available to all people. ----------------- PUBLIC DESCRIPTION SUBMITTED WITH ORIGINAL PROPOSAL: limit was 255 chars, this is 196. Mer's Net Tab Converter renders text-formatted guitar tablature as standard sheet music in a familiar graphical nature with dots on a staff which is applicable to any and all musical instruments.