Does anyone here know any formal music theory?
-
There is a strong tradition for denoting major scales with uppercase letters, and minor scales with lowercase letters. So, The minor flat key signatures go d, g, c, f, bb, eb, ab. The minor sharp key signatures go e, b, f#, c#, g#, d#, a#. No sharps/flats = a. Maybe this tradition is stronger in some musical styles than others. I have never seen guitar chord annotations where it is not followed.
I just realized this is probably regional. Maybe you do it that way in Norway. I have some Le Orme sheet music, and those weird Italians don't write A minor as "a" or "Am". They actually write "La m" (La from do-re-mi... and m = minore). I rarely think in solfege. And if I do, it's relative: "la" = submediant (^6). But they use it absolutely: "la" = A, regardless of the key. Needless to say, I find their annotations useless.
Robust Services Core | Software Techniques for Lemmings | Articles
-
Or learn German (or a related language, such as Norwegian): In the Germanic tradition, B is called H, and B flat is called B. In any case, it will be less confusing if you use a true musical ♭ sign for the flats, rather than a plain lowercase b letter. B♭ and b♭ isn't that confusing. Bonus joke: What could you get if you drop a piano down a mine shaft? Answer: a♭
I thought you'd get a fff!
Robust Services Core | Software Techniques for Lemmings | Articles
-
Or learn German (or a related language, such as Norwegian): In the Germanic tradition, B is called H, and B flat is called B. In any case, it will be less confusing if you use a true musical ♭ sign for the flats, rather than a plain lowercase b letter. B♭ and b♭ isn't that confusing. Bonus joke: What could you get if you drop a piano down a mine shaft? Answer: a♭
heh. I would use the flat sign but it doesn't render properly everywhere. I do not want to return it from ToString()
Real programmers use butterflies
-
True. That's how I mark up scores, although the pop music charts I've seen use A and Am for major and minor chords, respectively.
Robust Services Core | Software Techniques for Lemmings | Articles
I don't recall seeing lowercase for minor. I've only seen key signatures like A and Am. Even with minor keys there are two variant - Harmonic and Melodic. To quote Ella Fitzgerald: How strange the change from Major to Minor (actually it is by Noel Coward, but mostly known as sang by Ella Fitzgerald)
-
I don't recall seeing lowercase for minor. I've only seen key signatures like A and Am. Even with minor keys there are two variant - Harmonic and Melodic. To quote Ella Fitzgerald: How strange the change from Major to Minor (actually it is by Noel Coward, but mostly known as sang by Ella Fitzgerald)
I think it's fairly common on the Continent (edit: for classical music).
Robust Services Core | Software Techniques for Lemmings | Articles
-
I thought you'd get a fff!
Robust Services Core | Software Techniques for Lemmings | Articles
-
my brain doesn't quite bend that way.
Real programmers use butterflies
I suggest to read it carefully and try to understand. It is formal, at least for me. From all what I read from you it should not be a big problem for you. Once you got it, it will help you a lot. Finally, it is much easier than all the parser stuff you presented here ;)
It does not solve my Problem, but it answers my question
-
I don't. It's sad I know, esp considering I just delivered a MIDI library unto the world. Anyway, I have a question for a music nerd, and it has to do with key signatures. Googling led me to some confusion. Basically I'm getting my key signature back as an int and a bool together, where the int is range -7 to 7 and the bool indicates minor or major. The int indicates the number of flats (int is negative) or the number of sharps (int is positive) or C if it's 0. Regarding the int, I'm not sure if I'm translating it correctly in code.
const string FLATS = "FBEADGC";
const string SHARPS = "GDEABFC";if (0 == scode)
return "C " + (IsMinor ? "minor" : "major");
if(0>scode)
return FLATS[((-scode)-1)].ToString() + "b " + (IsMinor ? "minor" : "major");
else // if(0scode
is the aforementioned int.Real programmers use butterflies
This is what I came up with after a lot of googling on the 'fifths' that was mentioned earlier. I use it in my MIDI sequencer. I'm relatively sure I got it right, but not absolutely, so if anyone sees anything I've screwed up, feel free to give me hell! :laugh: (And I see I should have used non-caps for some, from another comment!) - edit: fixed
const KeySignatures::KeySig KeySignatures::keySigsC[] = {
{ "g# min (af min)", 5, true },
{ "g min", -2, true },
{ "f# min", 3, true },
{ "f min", -4, true },
{ "e min", 1, true },
{ "ef min (d# min)", -6, true },
{ "d# min (ef min)", 6, true },
{ "d min", -1, true },
{ "c# min (df min (unused))", 4, true },
{ "c min", -3, true },
{ "b min", 2, true },
{ "bf min (a# min)", -5, true },
{ "a# min (bf min)", 7, true },
{ "a min", 0, true },
{ "af min (g# min)", -7, true },
{ "Af Maj", -4, false },
{ "A Maj", 3, false },
{ "Bf Maj", -2, false },
{ "B Maj (Cf Maj)", 5, false },
{ "Cf Maj (B Maj)", -7, false },
{ "C Maj", 0, false },
{ "C# Maj (Df Maj)", 7, false },
{ "Df Maj (C# Maj)", -5, false },
{ "D Maj", 2, false },
{ "Ef Maj", -3, false },
{ "E Maj", 4, false },
{ "F Maj", -1, false },
{ "F# Maj (Gf Maj)", 6, false },
{ "Gf Maj (F# Maj)", -6, false },
{ "G Maj", 1, false }
}; -
I guess that even a piano would turn into a forte, or forte fortissimo molto, so you for practical purposes you are right. You could also point out the accelerando - close to 9.8 m/s2. But we were talking scales, weren't we?
Accelerando? :laugh:
Robust Services Core | Software Techniques for Lemmings | Articles
-
This is what I came up with after a lot of googling on the 'fifths' that was mentioned earlier. I use it in my MIDI sequencer. I'm relatively sure I got it right, but not absolutely, so if anyone sees anything I've screwed up, feel free to give me hell! :laugh: (And I see I should have used non-caps for some, from another comment!) - edit: fixed
const KeySignatures::KeySig KeySignatures::keySigsC[] = {
{ "g# min (af min)", 5, true },
{ "g min", -2, true },
{ "f# min", 3, true },
{ "f min", -4, true },
{ "e min", 1, true },
{ "ef min (d# min)", -6, true },
{ "d# min (ef min)", 6, true },
{ "d min", -1, true },
{ "c# min (df min (unused))", 4, true },
{ "c min", -3, true },
{ "b min", 2, true },
{ "bf min (a# min)", -5, true },
{ "a# min (bf min)", 7, true },
{ "a min", 0, true },
{ "af min (g# min)", -7, true },
{ "Af Maj", -4, false },
{ "A Maj", 3, false },
{ "Bf Maj", -2, false },
{ "B Maj (Cf Maj)", 5, false },
{ "Cf Maj (B Maj)", -7, false },
{ "C Maj", 0, false },
{ "C# Maj (Df Maj)", 7, false },
{ "Df Maj (C# Maj)", -5, false },
{ "D Maj", 2, false },
{ "Ef Maj", -3, false },
{ "E Maj", 4, false },
{ "F Maj", -1, false },
{ "F# Maj (Gf Maj)", 6, false },
{ "Gf Maj (F# Maj)", -6, false },
{ "G Maj", 1, false }
};Free Bird!!!
-
I don't. It's sad I know, esp considering I just delivered a MIDI library unto the world. Anyway, I have a question for a music nerd, and it has to do with key signatures. Googling led me to some confusion. Basically I'm getting my key signature back as an int and a bool together, where the int is range -7 to 7 and the bool indicates minor or major. The int indicates the number of flats (int is negative) or the number of sharps (int is positive) or C if it's 0. Regarding the int, I'm not sure if I'm translating it correctly in code.
const string FLATS = "FBEADGC";
const string SHARPS = "GDEABFC";if (0 == scode)
return "C " + (IsMinor ? "minor" : "major");
if(0>scode)
return FLATS[((-scode)-1)].ToString() + "b " + (IsMinor ? "minor" : "major");
else // if(0scode
is the aforementioned int.Real programmers use butterflies
Maybe it's just a typo, but you have two of the major keys transposed (bad choice of words maybe in this context!) Line 2 SHARPS should be "GDAEBFC" However, there are bigger problems! This code will return mostly wrong answers. If we look at the sharps only, your code (assume it's major) would return: C, G# major, D# major, A# major ... which is incorrect. The correct sequence (without all the "majors" shown) would be: C G D A E B F# C# And a sort of reverse applies situation applies to the flats. (C), F, Bb, Eb, Ab, Db, Gb, Cb Hope that helped!
-
I don't. It's sad I know, esp considering I just delivered a MIDI library unto the world. Anyway, I have a question for a music nerd, and it has to do with key signatures. Googling led me to some confusion. Basically I'm getting my key signature back as an int and a bool together, where the int is range -7 to 7 and the bool indicates minor or major. The int indicates the number of flats (int is negative) or the number of sharps (int is positive) or C if it's 0. Regarding the int, I'm not sure if I'm translating it correctly in code.
const string FLATS = "FBEADGC";
const string SHARPS = "GDEABFC";if (0 == scode)
return "C " + (IsMinor ? "minor" : "major");
if(0>scode)
return FLATS[((-scode)-1)].ToString() + "b " + (IsMinor ? "minor" : "major");
else // if(0scode
is the aforementioned int.Real programmers use butterflies
Hi, I'm not sure what language the pretty generic C-style code is in but I guess it's not Javascript as ToString is Pascal case. Anyway, this JS library is brilliant for accessing musical theory in code.
-
Accelerando - Conjugation of the infinite "Accelerare" in italian; In English, "to accelerate": The "Gerundio" (a form of the verb), is like the -ing in English. Most of the musical notation currently used was invented in Italy many centuries ago (even the pentagram, for example). In Italy the musical notes are represented by syllables which traditionally are: DO, RE, MI, FA, SOL, LA, SI with LA to be the equivalent to A in international notation. All words like crescendo, diminuendo, piano, pianissimo, etc. etc. they are Italian words used as an international jargon for the music.
I wouldn't call it "international jargon for the music", but "established notational conventions". You'll see acc. in all sorts of sheet music. It has been used for centuries. We had a conductor that took pleasure in playing with such terms, like he could ask for an "accelerandissimo" - a small increase in the beat rate. Or "acelerando moltissimo", not a very strong accelerando (like an "accelerando molto") but above average.
-
I don't. It's sad I know, esp considering I just delivered a MIDI library unto the world. Anyway, I have a question for a music nerd, and it has to do with key signatures. Googling led me to some confusion. Basically I'm getting my key signature back as an int and a bool together, where the int is range -7 to 7 and the bool indicates minor or major. The int indicates the number of flats (int is negative) or the number of sharps (int is positive) or C if it's 0. Regarding the int, I'm not sure if I'm translating it correctly in code.
const string FLATS = "FBEADGC";
const string SHARPS = "GDEABFC";if (0 == scode)
return "C " + (IsMinor ? "minor" : "major");
if(0>scode)
return FLATS[((-scode)-1)].ToString() + "b " + (IsMinor ? "minor" : "major");
else // if(0scode
is the aforementioned int.Real programmers use butterflies
SHARPS string is wrong. Should be GDAEBFC. Otherwise looks good
-
I wouldn't call it "international jargon for the music", but "established notational conventions". You'll see acc. in all sorts of sheet music. It has been used for centuries. We had a conductor that took pleasure in playing with such terms, like he could ask for an "accelerandissimo" - a small increase in the beat rate. Or "acelerando moltissimo", not a very strong accelerando (like an "accelerando molto") but above average.
-
I just realized this is probably regional. Maybe you do it that way in Norway. I have some Le Orme sheet music, and those weird Italians don't write A minor as "a" or "Am". They actually write "La m" (La from do-re-mi... and m = minore). I rarely think in solfege. And if I do, it's relative: "la" = submediant (^6). But they use it absolutely: "la" = A, regardless of the key. Needless to say, I find their annotations useless.
Robust Services Core | Software Techniques for Lemmings | Articles
Accelerando - Conjugation of the infinite "Accelerare" in italian; In English, "to accelerate": The "Gerundio" (a form of the verb), is like the -ing in English. Most of the musical notation currently used was invented in Italy many centuries ago (even the pentagram, for example). In Italy the musical notes are represented by syllables which traditionally are: DO, RE, MI, FA, SOL, LA, SI with LA to be the equivalent to A in international notation. All words like crescendo, diminuendo, piano, pianissimo, etc. etc. they are Italian words used as an international jargon for the music.
-
I don't. It's sad I know, esp considering I just delivered a MIDI library unto the world. Anyway, I have a question for a music nerd, and it has to do with key signatures. Googling led me to some confusion. Basically I'm getting my key signature back as an int and a bool together, where the int is range -7 to 7 and the bool indicates minor or major. The int indicates the number of flats (int is negative) or the number of sharps (int is positive) or C if it's 0. Regarding the int, I'm not sure if I'm translating it correctly in code.
const string FLATS = "FBEADGC";
const string SHARPS = "GDEABFC";if (0 == scode)
return "C " + (IsMinor ? "minor" : "major");
if(0>scode)
return FLATS[((-scode)-1)].ToString() + "b " + (IsMinor ? "minor" : "major");
else // if(0scode
is the aforementioned int.Real programmers use butterflies
-
I don't. It's sad I know, esp considering I just delivered a MIDI library unto the world. Anyway, I have a question for a music nerd, and it has to do with key signatures. Googling led me to some confusion. Basically I'm getting my key signature back as an int and a bool together, where the int is range -7 to 7 and the bool indicates minor or major. The int indicates the number of flats (int is negative) or the number of sharps (int is positive) or C if it's 0. Regarding the int, I'm not sure if I'm translating it correctly in code.
const string FLATS = "FBEADGC";
const string SHARPS = "GDEABFC";if (0 == scode)
return "C " + (IsMinor ? "minor" : "major");
if(0>scode)
return FLATS[((-scode)-1)].ToString() + "b " + (IsMinor ? "minor" : "major");
else // if(0scode
is the aforementioned int.Real programmers use butterflies
The closest I've came was writing a few measures of "music" containing abominations like 4096th notes, and notes with a half dozen dots in a highschool class to spite a teacher I disliked. (It was trivial - if a bit tedious - to create iteratively by splitting notes in half and inserting the new one randomly, far harder for the teacher to actually add up to make sure it actually had the correct total. :-\ )
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, weighing all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt
-
Hi, I'm not sure what language the pretty generic C-style code is in but I guess it's not Javascript as ToString is Pascal case. Anyway, this JS library is brilliant for accessing musical theory in code.
it's C#.. oooh and thank you. I'll take a look
Real programmers use butterflies
-
Or learn German (or a related language, such as Norwegian): In the Germanic tradition, B is called H, and B flat is called B. In any case, it will be less confusing if you use a true musical ♭ sign for the flats, rather than a plain lowercase b letter. B♭ and b♭ isn't that confusing. Bonus joke: What could you get if you drop a piano down a mine shaft? Answer: a♭
What could you get if you drop a piano down a mine shaft?
ab minor (miner)