Added peak dB display in tree

This commit is contained in:
2020-01-27 22:18:17 +00:00
parent 90ca84cfbf
commit 73bcba2c9a
3 changed files with 55 additions and 3 deletions
@@ -2418,7 +2418,8 @@ public class AudiobookRecorder extends JFrame implements DocumentListener {
public double getNoiseFloor() { public double getNoiseFloor() {
if (roomNoise == null) return 0; if (roomNoise == null) return 0;
double[][] samples = roomNoise.getDoubleAudioData(); return roomNoise.getPeak();
/* double[][] samples = roomNoise.getDoubleAudioData();
if (samples == null) { if (samples == null) {
return 0; return 0;
} }
@@ -2431,16 +2432,20 @@ public class AudiobookRecorder extends JFrame implements DocumentListener {
ms *= 10d; ms *= 10d;
ms /= 7d; ms /= 7d;
return ms; return ms;*/
} }
public int getNoiseFloorDB() { public int getNoiseFloorDB() {
if (roomNoise == null) return 0;
return roomNoise.getPeakDB();
/*
double r = getNoiseFloor(); double r = getNoiseFloor();
if (r == 0) return 0; if (r == 0) return 0;
double l10 = Math.log10(r); double l10 = Math.log10(r);
double db = 20d * l10; double db = 20d * l10;
return (int)db; return (int)db;
*/
} }
public void recordRoomNoise() { public void recordRoomNoise() {
@@ -90,7 +90,7 @@ public class BookTreeRenderer extends DefaultTreeCellRenderer {
ctx.gridwidth = 2; ctx.gridwidth = 2;
p.add(ret, ctx); p.add(ret, ctx);
} else { } else {
ctx.weightx = 0.1d; ctx.weightx = 1.0d;
ctx.gridwidth = 1; ctx.gridwidth = 1;
p.add(ret, ctx); p.add(ret, ctx);
Effect e = AudiobookRecorder.window.effects.get(effectChain); Effect e = AudiobookRecorder.window.effects.get(effectChain);
@@ -101,9 +101,20 @@ public class BookTreeRenderer extends DefaultTreeCellRenderer {
p.add(eff); p.add(eff);
} }
ctx.gridwidth = 1;
ctx.weightx = 0.0d; ctx.weightx = 0.0d;
ctx.gridx = 2; ctx.gridx = 2;
ctx.anchor = GridBagConstraints.LINE_END; ctx.anchor = GridBagConstraints.LINE_END;
int peak = s.getPeakDB();
JLabel peakLabel = new JLabel(peak + "dB ");
if (peak > 0) {
peakLabel.setForeground(new Color(0xCC, 0x00, 0x00));
}
p.add(peakLabel, ctx);
ctx.weightx = 0.0d;
ctx.gridx = 3;
ctx.anchor = GridBagConstraints.LINE_END;
p.add(time, ctx); p.add(time, ctx);
p.setOpaque(false); p.setOpaque(false);
@@ -54,6 +54,7 @@ public class Sentence extends BookTreeNode implements Cacheable {
String postGapType = "none"; String postGapType = "none";
int sampleSize = -1; int sampleSize = -1;
double peak = -1;
boolean locked; boolean locked;
@@ -196,6 +197,7 @@ public class Sentence extends BookTreeNode implements Cacheable {
sampleSize = Utils.s2i(Book.getTextNode(root, "samples")); sampleSize = Utils.s2i(Book.getTextNode(root, "samples"));
processed = Utils.s2b(Book.getTextNode(root, "processed")); processed = Utils.s2b(Book.getTextNode(root, "processed"));
runtime = Utils.s2d(Book.getTextNode(root, "time", "-1.000")); runtime = Utils.s2d(Book.getTextNode(root, "time", "-1.000"));
peak = Utils.s2d(Book.getTextNode(root, "peak", "-1.000"));
if ((crossStartOffset == -1) || (crossEndOffset == -1)) { if ((crossStartOffset == -1) || (crossEndOffset == -1)) {
System.err.println("Updating " + id); System.err.println("Updating " + id);
@@ -259,6 +261,7 @@ public class Sentence extends BookTreeNode implements Cacheable {
endOffset = sampleSize - 1; endOffset = sampleSize - 1;
crossEndOffset = sampleSize - 1; crossEndOffset = sampleSize - 1;
processed = false; processed = false;
peak = -1d;
} }
} }
@@ -809,6 +812,8 @@ public class Sentence extends BookTreeNode implements Cacheable {
int gainint = (int)(gain * 100d); int gainint = (int)(gain * 100d);
if (gint != gainint) { if (gint != gainint) {
CacheManager.removeFromCache(this); CacheManager.removeFromCache(this);
peak = -1;
reloadTree();
} }
gain = g; gain = g;
} }
@@ -1470,6 +1475,7 @@ public class Sentence extends BookTreeNode implements Cacheable {
sentenceNode.appendChild(Book.makeTextNode(doc, "processed", isProcessed())); sentenceNode.appendChild(Book.makeTextNode(doc, "processed", isProcessed()));
sentenceNode.appendChild(Book.makeTextNode(doc, "notes", getNotes())); sentenceNode.appendChild(Book.makeTextNode(doc, "notes", getNotes()));
sentenceNode.appendChild(Book.makeTextNode(doc, "time", getLength())); sentenceNode.appendChild(Book.makeTextNode(doc, "time", getLength()));
sentenceNode.appendChild(Book.makeTextNode(doc, "peak", getPeak()));
return sentenceNode; return sentenceNode;
} }
@@ -1500,4 +1506,34 @@ public class Sentence extends BookTreeNode implements Cacheable {
AudiobookRecorder.window.bookTreeModel.reload(this); AudiobookRecorder.window.bookTreeModel.reload(this);
} }
public double getPeak() {
if (peak > -1) return peak;
double[][] samples = getDoubleAudioData();
if (samples == null) {
peak = -1;
return 0;
}
double ms = 0;
for (int i = 0; i < samples.length; i++) {
if (Math.abs((samples[i][Sentence.LEFT] + samples[i][Sentence.RIGHT]) / 2d) > ms) {
ms = Math.abs((samples[i][Sentence.LEFT] + samples[i][Sentence.RIGHT]) / 2d);
}
}
ms *= 10d;
ms /= 7d;
peak = ms;
return ms;
}
public int getPeakDB() {
double r = getPeak();
if (r == 0) return 0;
double l10 = Math.log10(r);
double db = 20d * l10;
return (int)db;
}
} }