|
@@ -328,8 +328,6 @@ public class UserChannelContext {
|
|
|
int playFrequency = -1;
|
|
|
if(!percussionList.contains(subjectId)){
|
|
|
playFrequency = (int)detector.getPitch(samples).getPitch();
|
|
|
- }else{
|
|
|
- LOGGER.info("subjectId:{}", subjectId);
|
|
|
}
|
|
|
|
|
|
int splDb = (int) Signals.soundPressureLevel(samples);
|
|
@@ -541,7 +539,6 @@ public class UserChannelContext {
|
|
|
}
|
|
|
}else{
|
|
|
int beatTimes = (int) chunkAnalysisList.stream().filter(t -> t.getAmplitude() > hardLevel.getAmplitudeThreshold()).count();
|
|
|
- LOGGER.info("Amplitude:{} beatTimes:{} Denominator:{}",chunkAnalysisList.stream().map(t -> t.getAmplitude()).collect(Collectors.toList()), beatTimes, musicXmlNote.getDenominator());
|
|
|
if(beatTimes == 0){
|
|
|
noteAnalysis.setMusicalErrorType(NoteErrorType.NOT_PLAY);
|
|
|
}else if (!noteAnalysis.isTempo()) {
|
|
@@ -702,7 +699,7 @@ public class UserChannelContext {
|
|
|
|
|
|
ChunkAnalysis firstChunkAnalysis = chunkAnalysisList.get(0);
|
|
|
|
|
|
- Optional<ChunkAnalysis> chunkAnalysisOptional = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(firstChunkAnalysis.getStartTime())).findFirst();
|
|
|
+ Optional<ChunkAnalysis> chunkAnalysisOptional = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getEndTime()) < Double.doubleToLongBits(firstChunkAnalysis.getStartTime())).findFirst();
|
|
|
|
|
|
ChunkAnalysis lastChunkAnalysis = null;
|
|
|
if (chunkAnalysisOptional.isPresent()) {
|
|
@@ -811,10 +808,12 @@ public class UserChannelContext {
|
|
|
.getEndTime());
|
|
|
|
|
|
if (musicXmlNote.getFrequency() == -1) {// 休止符
|
|
|
+
|
|
|
+ LOGGER.info("--Amplitude:{} Denominator:{}",chunkList.stream().map(t -> t).collect(Collectors.toList()), musicXmlNote.getDenominator());
|
|
|
return chunkList.stream().filter(t -> t.getAmplitude() > hardLevel.getAmplitudeThreshold()).count() <= 0;
|
|
|
}
|
|
|
|
|
|
- Optional<ChunkAnalysis> chunkAnalysisOptional = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(firstChunkAnalysis.getStartTime())).findFirst();
|
|
|
+ Optional<ChunkAnalysis> chunkAnalysisOptional = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getEndTime()) < Double.doubleToLongBits(firstChunkAnalysis.getStartTime())).findFirst();
|
|
|
|
|
|
ChunkAnalysis lastChunkAnalysis = null;
|
|
|
if (chunkAnalysisOptional.isPresent()) {
|
|
@@ -836,7 +835,10 @@ public class UserChannelContext {
|
|
|
int firstPeakIndex = -1;
|
|
|
int peakSize = 0;
|
|
|
for (int i = 1; i < chunkAmplitudeList.size(); i++) {
|
|
|
- if (chunkAmplitudeList.get(i) > hardLevel.getAmplitudeThreshold() && chunkAmplitudeList.get(i) > chunkAmplitudeList.get(i - 1) + 2) {
|
|
|
+ if (Math.abs(chunkAmplitudeList.get(i) - chunkAmplitudeList.get(i - 1)) < hardLevel.getAmplitudeThreshold()) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (chunkAmplitudeList.get(i) > hardLevel.getAmplitudeThreshold() && chunkAmplitudeList.get(i) > chunkAmplitudeList.get(i - 1)) {
|
|
|
tempo = true;
|
|
|
if(firstPeakIndex == -1){
|
|
|
firstPeakIndex = i;
|