我一直想寫一段音樂程序,但是我對編程不是很瞭解,所以可能不會發生。首先這個程序的目標是代表帶有字母名稱的吉他和絃(例如:CMaj = CEG),並且可能有幾種不同類型的和絃(專業,未成年人,減少等等)。爲了使這個最簡單,我我認爲我要從C大調開始,因爲那裏沒有任何利器或單位。我的第一個和絃可能是一個C大調,它是刻度的第一,第三和第五(C D E F G A B)。我的問題是,使用字符串和字符(或其他方式,我有點猜測),有沒有辦法將C表示爲String(?)C,其中C = 1,D = 2,E = 3。 。等等。這樣當節目輸入一個大和絃時,它會請求相應音階的第1,3,5個位置? 因此,基本上用戶選擇和絃C Maj,它將轉換爲1,3,5,然後將音階匹配起來,程序調用那個音階的3個特定間隔。製作一串字母和數字?
任何幫助將不勝感激,或完全不同的方式來思考這一點。
使用什麼小知識我有,我用Oracles網站,發現他們列舉的例子,並把這個在一起:
public enum Chord {
CHORD, MAJOR, MINOR, DIMINISHED, BASS, BASS2
}
public enum Scales {
C, D, E, F, G, A
}
public class EnumTest {
Chord chord;
public EnumTest(Chord chord) {
this.chord = chord;
}
public void tellItLikeItIs() {
switch (chord) {
case MAJOR: System.out.println("C, E, G");
break;
case MINOR: System.out.println("C, Eb, G");
break;
default: System.out.println("I screwed up");
break;
}
}
public static void main(String[] args) {
EnumTest firstDay = new EnumTest(Chord.MAJOR);
firstDay.tellItLikeItIs();
EnumTest thirdDay = new EnumTest(Chord.MINOR);
thirdDay.tellItLikeItIs();
}
}
我仍然不明白,使用Olivers示例,如何指定何時製作C大調和絃,以便我需要Scales枚舉的第1,第3和第5個值。我喜歡使用C中的半音並構建每個和絃的想法,但我無法弄清楚如何將#放入Scales類(非法字符)中。所以基本上我的問題是如何獲得Chord類從Scales類獲取縮放比例並將其插入EnumTest類中?
(如果有別的地方我可以去,問愚蠢的問題沒有竊聽的人,我可以試着問有= P)
你只是試圖做出一個界面,告訴用戶什麼音符是和絃的一部分,或者你想實際播放聲音嗎? – Shaded
我想讓用戶選擇C從下拉菜單中選擇,然後使用和絃的音階程序將返回1,3,5(或C,E,G) – cutrightjm
我會盡量在接下來的幾天裏找到一兩個小時給你「我的」完全實現你的問題,如果你願意的話);現在談到Scale和degree,就代碼實現而言,這只是令人困惑,你不應該關心它。對於非法的#字符,請命名爲C#CSharp,它也可以執行此操作;) – Olivier