|
@@ -703,12 +703,14 @@ public class UserChannelContext3 {
|
|
|
|| chunkAnalysis.getFrequency() > noteFrequencyRange.getMaxFrequency()) {
|
|
|
// 判断是否是同一个音
|
|
|
tempo = false;
|
|
|
+ LOGGER.info("节奏错误原因:不是同一个音[{}]:{}-{}", chunkAnalysis.getFrequency(), noteFrequencyRange.getMinFrequency(), noteFrequencyRange.getMaxFrequency());
|
|
|
break;
|
|
|
}
|
|
|
if (isContinue == false) {
|
|
|
if ((i + 1) / chunkAnalysisList.size() < hardLevel.getIntegrityRange()) {
|
|
|
if (unplayedSize > 0) {
|
|
|
tempo = false;
|
|
|
+ LOGGER.info("节奏错误原因:信号不连续");
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -724,12 +726,14 @@ public class UserChannelContext3 {
|
|
|
|
|
|
if (tempo) {
|
|
|
// 判断进入时间点
|
|
|
- if(firstPeakIndex * 100 /chunkAnalysisList.size() > hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) * 2){
|
|
|
+ if(firstPeakIndex * 100 /chunkAnalysisList.size() > hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator())){
|
|
|
tempo = false;
|
|
|
+ LOGGER.info("节奏错误原因:进入时间点太晚");
|
|
|
}else{
|
|
|
//判断是否与上一个音延续下来的
|
|
|
if(firstChunkAnalysis.getFrequency() > 100 && lastChunkAnalysis.getFrequency() > 100){
|
|
|
- return new NoteFrequencyRange(standardFrequecy, firstChunkAnalysis.getFrequency()).equals(new NoteFrequencyRange(standardFrequecy, lastChunkAnalysis.getFrequency())) == false;
|
|
|
+ tempo = new NoteFrequencyRange(standardFrequecy, firstChunkAnalysis.getFrequency()).equals(new NoteFrequencyRange(standardFrequecy, lastChunkAnalysis.getFrequency())) == false;
|
|
|
+ LOGGER.info("节奏错误原因:上一个音延续下来导致的");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -835,7 +839,8 @@ public class UserChannelContext3 {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return chunkAnalysisList.get(chunkAnalysisList.size() - 1).getEndTime();
|
|
|
+ //return chunkAnalysisList.get(chunkAnalysisList.size() - 1).getEndTime();
|
|
|
+ return musicXmlNote.getTimeStamp() + dynamicOffset;
|
|
|
}
|
|
|
|
|
|
public static void main(String[] args) {
|