|
@@ -48,7 +48,7 @@ public class UserChannelContext {
|
|
|
|
|
|
private int beatByteLength;
|
|
|
|
|
|
- private boolean delayPrcessed;
|
|
|
+ private boolean delayProcessed;
|
|
|
|
|
|
// 曲目与musicxml对应关系
|
|
|
private ConcurrentHashMap<Integer, MusicXmlBasicInfo> songMusicXmlMap = new ConcurrentHashMap<Integer, MusicXmlBasicInfo>();
|
|
@@ -191,7 +191,7 @@ public class UserChannelContext {
|
|
|
recordId = null;
|
|
|
playTime = 0;
|
|
|
receivedTime = 0;
|
|
|
- delayPrcessed = false;
|
|
|
+ delayProcessed = false;
|
|
|
dynamicOffset = 0;
|
|
|
}
|
|
|
|
|
@@ -338,7 +338,7 @@ public class UserChannelContext {
|
|
|
|
|
|
if (noteAnalysis.getMusicalNotesIndex() >= 0 && noteAnalysis.getMusicalNotesIndex() <= getTotalMusicNoteIndex(null)) {
|
|
|
|
|
|
- LOGGER.info("delayPrcessed:{} dynamicOffset:{} Frequency:{} splDb:{} Power:{} amplitude:{} rms:{} time:{}", delayPrcessed, dynamicOffset, playFrequency, splDb, power, amplitude, rms, playTime);
|
|
|
+ LOGGER.info("delayPrcessed:{} dynamicOffset:{} Frequency:{} splDb:{} Power:{} amplitude:{} rms:{} time:{}", delayProcessed, dynamicOffset, playFrequency, splDb, power, amplitude, rms, playTime);
|
|
|
|
|
|
ChunkAnalysis chunkAnalysis = new ChunkAnalysis(playTime - durationTime, playTime, playFrequency, splDb, power, amplitude);
|
|
|
|
|
@@ -349,15 +349,17 @@ public class UserChannelContext {
|
|
|
}
|
|
|
totalChunkAnalysisList.add(chunkAnalysis);
|
|
|
|
|
|
- if(delayPrcessed == false && chunkAnalysis.getFrequency() > 100){
|
|
|
+ if(delayProcessed == false && chunkAnalysis.getFrequency() > 100){
|
|
|
|
|
|
- delayPrcessed = true;
|
|
|
+ delayProcessed = true;
|
|
|
//计算延迟偏移值
|
|
|
//playTime = musicXmlNote.getTimeStamp() + durationTime;
|
|
|
dynamicOffset = chunkAnalysis.getStartTime();
|
|
|
}
|
|
|
|
|
|
- if (playTime >= (dynamicOffset + musicXmlNote.getDuration() + musicXmlNote.getTimeStamp())) {
|
|
|
+ musicXmlNote.setTimeStamp(musicXmlNote.getTimeStamp() + dynamicOffset);
|
|
|
+
|
|
|
+ if (playTime >= (musicXmlNote.getDuration() + musicXmlNote.getTimeStamp())) {
|
|
|
|
|
|
if (musicXmlNote.getDontEvaluating()) {
|
|
|
noteAnalysis.setIgnore(true);
|
|
@@ -487,8 +489,8 @@ public class UserChannelContext {
|
|
|
|
|
|
double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) / 100;
|
|
|
|
|
|
- double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
|
|
|
- double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
|
|
|
+ double endTime = musicXmlNote.getTimeStamp() + floatingRange;
|
|
|
+ double startTime = musicXmlNote.getTimeStamp() - floatingRange;
|
|
|
|
|
|
List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
|
|
|
|
|
@@ -594,8 +596,8 @@ public class UserChannelContext {
|
|
|
|
|
|
double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) / 100;
|
|
|
|
|
|
- double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
|
|
|
- double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
|
|
|
+ double endTime = musicXmlNote.getTimeStamp() + floatingRange;
|
|
|
+ double startTime = musicXmlNote.getTimeStamp() - floatingRange;
|
|
|
|
|
|
List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
|
|
|
|
|
@@ -637,8 +639,8 @@ public class UserChannelContext {
|
|
|
|
|
|
double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) / 100;
|
|
|
|
|
|
- double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
|
|
|
- double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
|
|
|
+ double endTime = musicXmlNote.getTimeStamp() + floatingRange;
|
|
|
+ double startTime = musicXmlNote.getTimeStamp() - floatingRange;
|
|
|
|
|
|
List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
|
|
|
|
|
@@ -670,6 +672,8 @@ public class UserChannelContext {
|
|
|
|
|
|
List<ChunkAnalysis> chunkList = new ArrayList<ChunkAnalysis>(chunkAnalysisList);
|
|
|
|
|
|
+ //根据完整度取部分有效信号
|
|
|
+
|
|
|
if(chunkList.size() == 0){
|
|
|
return false;
|
|
|
}
|
|
@@ -731,8 +735,8 @@ public class UserChannelContext {
|
|
|
|
|
|
double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) / 100;
|
|
|
|
|
|
- double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
|
|
|
- double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
|
|
|
+ double endTime = musicXmlNote.getTimeStamp() + floatingRange;
|
|
|
+ double startTime = musicXmlNote.getTimeStamp() - floatingRange;
|
|
|
|
|
|
List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
|
|
|
|