- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试转置音符,但它返回的结果不是应有的结果。您能检查一下我的代码并告诉我哪里错了吗?
public int changeTone(String chord) {
int changeTone = 0;
switch(chord) {
case "I":
changeTone = 0;
break;
case "II":
changeTone = 1;
break;
case "III":
changeTone = 2;
break;
case "IV":
changeTone = 3;
break;
case "V":
changeTone = 4;
break;
case "VI":
changeTone = 5;
break;
case "VII":
changeTone = 6;
break;
case "i":
changeTone = 0;
break;
case "ii":
changeTone = 2;
break;
case "iii":
changeTone = 4;
break;
case "iv":
changeTone = 5;
break;
case "v":
canviDeTo = 7;
break;
case "vi":
changeTone = 9;
break;
case "vii":
changeTone = 11;
break;
default:
System.out.println("Vaya");
break;
}
return changeTone ;
}
public String getChord(int interval) {
String chord = "";
switch(interval) {
case "0":
chord = "C";
break;
case "2":
chord = "D";
break;
case "4":
chord = "E";
break;
case "5":
chord = "F";
break;
case "7":
chord = "G";
break;
case "9":
chord = "A";
break;
case "11":
chord = "B";
}
return chord;
}
public String WriteChord(String chords, String tone) {
String finalChord;
String[] chordArray = chords.split("-");
for(int i=0; i < chordArray.length; i++){
String chord = chordArray[i];
int interval = changeTone(chord);
chord = getChord(interval);
Note note = new Note(chord);
finalChord += note.changeValue(interval).toString() += "-";
}
return finalChord;
}
<小时/>好的,所以这试图做的是改变和弦的值给定和弦进行和音程。就像 I-III-IV-iv 一样。用户将选择一个音调(我注意到的是主音),并且将以该音符作为引用来更改和弦。因此,例如,运行代码应执行以下操作:
预期输出是:E-G#-A#-A#实际输出是:C-G#-G#-Bb
为什么这不起作用?我已经简化了我的代码,所以如果您需要更多,请告诉我!提前致谢。
编辑:我已经更正了代码并添加了预期/得到的输出。
最佳答案
JFugue 已经支持音程和和弦进行。我希望以下代码能够满足您的需求:
import org.jfugue.theory.ChordProgression;
public static void main(String[] args) {
ChordProgression cp = new ChordProgression("I-III-IV-iv").setKey("E");
System.out.println(cp);
}
此代码的输出是:
E4MAJ G#4MAJ A4MAJ A4MIN
您可以直接在播放器中播放此内容:
Player player = new Player(); // Don't forget to import org.jfugue.player.Player
player.play(cp);
如果由于四分音符的默认持续时间而对您来说演奏得太快,您可以将每个和弦演奏得更长,例如整个音符:
player.play(cp.eachChordAs("$!w"));
如果您只想要根,在本例中为 [E、G#、A、A](如果您发现我的音乐理论有错误,请告诉我),您可以使用:
cp.eachChordAs("$0");
http://www.jfugue.org/examples.html 有几个和弦进行示例
关于java - JFugue 音符更改无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53169518/
我正在尝试转置音符,但它返回的结果不是应有的结果。您能检查一下我的代码并告诉我哪里错了吗? public int changeTone(String chord) { int
我正在运行 Jfugue 测试程序,这里是代码: package ge; import org.jfugue.*; public class GE { /** * @param ar
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 4 年前。 Improve t
假设我有一个玩家当前正在播放一个模式,并且在某个时刻我想设置它应该播放的下一个模式,而在两者之间切换时不会产生小暂停。 它类似于 Android 的媒体播放器类,您可以有 2 个媒体播放器,每个媒体播
我正在尝试控制模式的音量。从文档中我发现了这一点: X[Volume]=10200; 他们提到的控制音量。我不确定如何使用它。我应该声明一些东西来使用它吗?据我了解,这是一个“ Controller
我已经在我的项目中实现了 Ksoji 的“jfugue-android”库 (https://github.com/kshoji/JFugue-for-Android/tree/master/jfug
我正在尝试使用 jfugue 连续演奏大约 200 个音调。音符都在演奏,但很断断续续。是否可以让音符以平滑的方式演奏,就像乐器将两个音符连声演奏一样? 最佳答案 如果您的音高跨越多个 Octave
我正在开发一个通过多线程在后台播放音乐的程序,因为否则 GUI 会卡住。我有多线程的基本知识( volatile 、同步等),但我想知道如何立即停止/暂停线程(即使进程正在处理)。我有音乐在后台循环播
我正在用 JFugue 5.0 做一个项目,我试过 4.0,但 5.0 似乎比他 previous sibling 更流畅。不管怎样,我有 JFugue v4 的完整指南,这些是用来引用 differ
在下面给定的代码中,频率 240 和 254.1764 相距很远,但听起来都是 240。288 和 301.395 也是如此,最后两个 432 和 552.09 也有同样的问题。我需要帮助来确定问题出
使用 JFugue 5.0,如何像吉他专业版中那样创建弯音和滑音? 我尝试过使用 CC65,但它似乎不适用于吉他音色。我查看了文档,但没有明确说明这是如何完成的。我可以使用微音调记谱法,但我知道有更好
我在使用 JFugue 5.0.7 时遇到了问题:我正在编写一个可以无限期播放音乐的实时应用程序,但 jfugue 库提供的 RealtimePlayer 会相互混合乐器。 我有以下代码 public
我正在尝试在我的 Java 项目中使用 JFugue 5.0.9 来创建 *.midi 文件。在我的项目中实现 JFugue 的 midi 功能时,该项目使用 24 tune makam piano
我喜欢 jFugue,但我无法控制模式的音量。这两种模式在我的笔记本电脑中以相同的音量播放(在纸上,第二个应该比第一个大两倍): Pattern pattern1 = new Patt
This pdf说倒转和弦可以通过在和弦定义的末尾添加 ^ 来定义,但据我所知,这只适用于明确的和弦定义。 例如: ChordProgression cp = new ChordProgression
我是 JFugue 的新手,我一直在尝试一些东西,但我无法更改 MusicString 的调。这是我尝试的方法: Player player = new Player(); player.play("
在 JFugue (vr 5.0.9) 中获得两个音符之间的半音的最快方法是什么(如果有)? 例如,我如何获得F4和G5之间的半音数? 最佳答案 我认为 Note 上的 getValue() 方法将为
我使用以下代码通过 JFugue 加载和播放 MIDI 文件: import java.io.File; import org.jfugue.Pattern; import org.jfugue.Pl
当我只运行 java 文件时,它会产生声音。我现在想要单击按钮来调用 java 文件并在 eclipse 中产生声音。 这是我的 Java 代码: import org.jfugue.player.P
我想将 midi 文件转换为 .csv 格式,如下所示: 音符名称、startTick、持续时间、力度 还包括整个和弦(从同一刻度开始的音符组)。 现在,JFugue 有一个 MidiParser 类
我是一名优秀的程序员,十分优秀!