|
@@ -677,7 +677,17 @@ public class UserChannelContext {
|
|
|
|
|
|
double correctedStartTime = queryFirstNoteStartTime(chunkAnalysisList, musicXmlNote, floatingRange);
|
|
|
double correctedEndTime = correctedStartTime + musicXmlNote.getDuration();
|
|
|
-
|
|
|
+
|
|
|
+ // 颤音频率只要有一个符合 就符合
|
|
|
+ if (musicXmlNote.isOrnament()) {
|
|
|
+ for (ChunkAnalysis chunkAnalysis : chunkAnalysisList) {
|
|
|
+ NoteFrequencyRange noteFrequencyRange = new NoteFrequencyRange(standardFrequecy, musicXmlNote.getFrequency());
|
|
|
+ if((noteFrequencyRange.getMinFrequency() < chunkAnalysis.getFrequency() * 2 && chunkAnalysis.getFrequency() * 2 < noteFrequencyRange.getMaxFrequency())
|
|
|
+ || (noteFrequencyRange.getMinFrequency() < chunkAnalysis.getFrequency() / 2 && chunkAnalysis.getFrequency() / 2 < noteFrequencyRange.getMaxFrequency())){
|
|
|
+ return Float.valueOf(musicXmlNote.getFrequency()).intValue();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
//重新计算延迟
|
|
|
dynamicOffset = correctedStartTime - musicXmlNote.getTimeStamp();
|
|
|
dynamicOffset = dynamicOffset < 0 ? 0 : dynamicOffset;
|