我一直想写一段音乐程序,但是我对编程不是很了解,所以可能不会发生。首先这个程序的目标是代表带有字母名称的吉他和弦(例如: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