Developpement Guide |
||||||
NavigationNext - Previous TOC
|
This document is a work in progress.Right now, you may be not tuned to the bazaar in my head while reading this doc. That is truly normal ! If you are interested in Alternate Take, you may better email me. At the moment this document is just here not to let Alternate Take undocumented.
But, if you have any suggestions on this document or if you plan to use some portion in an other document just let me know. In any case, I will carefully study your suggestions.
A last word, before the real start : I am sorry for my english, I'm not not a native english speaker, but this let more readers able to read the doc.
--------------------------- Real doc starts here ---------------------------
This document is intendend to be a guide in the complexity in musical notation. It formalize rules of writing. It is written to let the developper get the concepts and vocabulary clear before he modify some code.
For the reading of this document we assume that you can read and write music. With this background, you should be able to read without difficulties the definition chapter. This document is intended to provide developper and student with a few guidelines. Nevertheless I will remind the vocabulary because most of the time the designated concepts are a bit fuzzy.
Writing MusicAmerican notation is used to represent chords. We can consider this as just an extension of the classical notation. Chord have no constraint in duration. But generally, the chord is tied to a note.
The drums notation must be considered differently as the duration of a note cannot be controlled for a drums. But as in the last case, musicians consider that the note last the time that make it possible to think it like a voice.
It is surjective in the field of classical notation. But it has the same constrain in term of duration.
A grammar is langage dependent so you have one grammar for each language. Althougth there is a common trunk for every grammar.
So we can split in :
Music Writing (Common trunk)
----- Standard Notation
----- Tablature Notation
----- Drum Notation
----- American Notation
We detail those grammar by explaining every rules, i.e. The correct writing definition, an example of misswriting and the process to coorect the mistake if some.
Every graphic representation of a symbol on the X axis shall be simultaneous.

Voice emiting the same signal wont have the symbol represented twice.

Correction for several voice
The time signature correspond to the number of thick in the measure

Wrong and correct

Case Study n°1

Case study n°2
![]()
Case study n°3
Stems and grouping the doble, quarter etc. does not recover themselves by mean of 2D space.
Stems drawing

Case Study n°1

Case study n°2
There is an usual conception of music that is : Music has to be writed correctly or else it cannot be read. So far I know this philosophy has been retained in every Music Sheet Editor. This is indeed false, a music having no care on on the beats and time could be read. For example the fugua in D minor for Organ is just a succession of notes note caring much for tempo. We will try in the component of defining and separating as much as possible the grammar from the writing.
The total sum of each duration (in ticks) of events in a measure should be Beats/DivisionxResolution
There is two ways of typing music notes in a score
Auto correction Mode : Every time a note is typed we check and correct the sequence to be OK with the grammar
Correction on signal : the orthograph is checked at a given signal
Alternate : An alternate way of functionning would be to allow one by one every rule to decide what rule should be applied at every modification or not.
For the program we wish an alternate way. And attribute automatic to some rules, and on signal to other. Anyway there will be one mode where every corrections should be enabled.
Exactly like we do with tex, we must think of the writing of a music like a compilation. A compilation can make several passes. Each time applying the same rules, some notes wil be correct once we computed every rules and the representation keep the same. To apply rules there is a sequence to make the notes correct in the minimum passes.
X axis time correction
Measure time correction
Stems grouping
Stems orientation
Stems positionning
This rule apply in every measure and you can apply this rule without considering other measures.
A measure can exist without any symbol in it. In contrast with Finale Editor, the orthograph of a measure shall be foresee as a correction program.
On the insert of a note, if there is a not measure following the one we are in then a new measure will be added or the cursor move to the next measure. If the measure is already filled and full but the next measure has a beginning fillement then the note will be added whether or not constrain as orthograph.
Standard grammar
Step 1
The measure has a round on the second staff : The principle would be the same if we have several parts, or several voice
Step2
We draw a few notes, the measue grow in size
Step 3
Once this every voice if filled then the measure is done we can do some final calculus to resize correctly the measure
.
When to group notes
Notes are successive (No rest between them)
The first note of a sequence begin at a quarter time and the last note of a sequence end at a quarter time.
OrThe first note begin at a double time and the last note end at a double time
We notice thet the third criteria is always true if the second is true so we does not evaluate this one in this case.
Process

Grouping stems

Wrong and correct

Drawing stems
Stems drawing
Changing the signature
Pitch signature
Standard Grammar :
When creating a new section, the alteration of every note must be recalculated until the next section.
When changing the signature of a section, the alteration must be recomputed in the section.
Time Signature
Introduction
Page setup (Page Mode)
There are a few parameters that you should be able to set when writing a score. First when you create a new score you must have blank measure to type notes in. You can thnik of two ways of dimensionning the score. Either the whole page is filled with staff for every part. Or, the number of measure is stricly sized to fit bet the score.
Displaying music
Displaying modes
There can be several modes to view the score.
The screen mode : The screen mode is usefull for editing, but it does not manage every information thet really become important at the printing stage. We must think of this as a facility for editing. As the printing mode is eaisier to imagine because it is like printed score. We will only describe this mode. The view of this is linear, i.e. to view the whole score, you only have to scroll horizontally. Parameters such staff padding cannot be set here.
The page mode : The page mode display the music as it will be printed.
Selecting music
There are various ways to select the music. One of the big bug of finale is that you don't have a flexible way of selecting the note as a sequencer like it is possible under a sequencer like cubase. And this kind of thing should be easely be done if you write music like drums.
Selecting with the mouse
Selecting with a filter
Displacing the music
One thing miss really bad to Finale is that the selection diplacement of the music is not so simple. So in piano we will try to make it very simple. We will define a stream MIME so we can copy a number of event and place it easily in other measures.
For the GUI design we consider, that the score component is a widget and so, we will communicate via SIGNALS and functions. This will be the delimitation for the subproject.
As much as possible we will try to use signals because our GUI will be smarter if it's asyncronous.
Definition : A signal is an asynchronous function call and it has no return. Tipically this will be used for instance when a note drop is done.
Definition : A function is synchronous, i.e you must wait for it's answer before continuing.
Locale Features
There are a few features that will require Locale to be taken in account. First, is of course the menu, but this is not so important, second is the use of the keyboard to enter with a keyboard.
Displaying features
It is important for the specifications to be a little oversized because when a GUI is being built it often respond to the shorts coming needs not regarding at long term evolution. So no one should be scared of the long list of features I require in this documents. Priority will be assigned in the future.
We shall be able to draw :
Notes, Stems, accidentals, Keys Signature, Rests, TimeSignature, Binds.
Chords for guitar
Drum notation
Lyrics
Tabs For guitar
Annotation
Title of a song, Author, Copyright etc.
For the display the program should use a GPL'd font.
Editing features
As in Finale, we have floating menu depending on modes. The mode are determined by buttons we have :
Note drawing mode : for drawing notes. When you are in this mode you can take note from a menu and drop it in the score and the note will be drawn.
Selection Mode : In this mode you will be authorized to do selections cut, copy, paste.
MIDI Mode : For the user to under note step by step via MIDI.
Chords Mode : For the user to enter the guitar chords. As there can be many ways of playing the same chord there must also be an interface to allow user to customize hiks chords
Tablature Mode : Someday I will have a more precise idea on this :-)
Associated to each mode we have a context the context have several representation if its in a mode or in another
Note Drawing Mode
To draw a note or a rest, we can use several medium,
The mouse, will be a simple drag and drop, the note is taken from a control and dropped on a staff.
The keyboard AZERTY, then the inserting is done step by step and a simultaneous press on a key on the numerical pad could determine the duration of the note inserted : Duration round, white, black, double etc. and if it's dotted or not.
With the keyboard the sequence is like a piano :
Q :C
Z : C#
S : D
E :D#
D : E
F :F
T :F#
G : G
Y : G#
H : A
J : A#
And for the duration :
7 : Round
6 : White
5 : Black
4 : Croche
3 : Double
2 :Triple
4 quadruple
And a simultaneous press on dot, will dot the note....
The score parameters
When a score is started, some parameters are to be determined, I think the Finale way of proceding is a good way .More générally we could think as making a new score like word does. i.e using templates.
MIDI feature
We can think right now of MIDI. But it is definitly not the entry point for designing Piano. As there is already many program doing MIDI to score tranlator. With this feature the user could enter step by step note into the part he is editing. Some explaination on the MIDI conversion concerns are given on the LilyPond website.