From 4e5fb09ba2be31ad15d25ed5209bd490f0390e5e Mon Sep 17 00:00:00 2001 From: Matt Jenkins Date: Fri, 28 Sep 2018 13:47:49 +0100 Subject: [PATCH] Store recording settings in the book configuration --- .../audiobookrecorder/AudiobookRecorder.java | 30 +++++++++++++++++++ src/uk/co/majenko/audiobookrecorder/Book.java | 16 ++++++++++ .../majenko/audiobookrecorder/Sentence.java | 2 +- 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java b/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java index c76b2c4..30a42b1 100644 --- a/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java +++ b/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java @@ -1220,6 +1220,10 @@ public class AudiobookRecorder extends JFrame { prefs.setProperty("book.genre", book.getGenre()); prefs.setProperty("book.comment", book.getComment()); + prefs.setProperty("audio.recording.samplerate", "" + book.getSampleRate()); + prefs.setProperty("audio.recording.resolution", "" + book.getResolution()); + prefs.setProperty("audio.recording.channels", "" + book.getChannels()); + for (int i = 0; i < 31; i++) { prefs.setProperty("audio.eq." + i, String.format("%.3f", book.equaliser.getChannel(i))); } @@ -1270,6 +1274,13 @@ public class AudiobookRecorder extends JFrame { File r = f.getParentFile(); File cf = new File(r, "coverart.png"); + if (!cf.exists()) { + cf = new File(r, "coverart.jpg"); + if (!cf.exists()) { + cf = new File(r, "coverart.gif"); + } + } + if (cf.exists()) { ImageIcon i = new ImageIcon(cf.getAbsolutePath()); Image ri = Utils.getScaledImage(i.getImage(), 22, 22); @@ -1289,6 +1300,25 @@ public class AudiobookRecorder extends JFrame { book.setGenre(prefs.getProperty("book.genre")); book.setComment(prefs.getProperty("book.comment")); + int sr = Utils.s2i(prefs.getProperty("audio.recording.samplerate")); + if (sr == 0) { + sr = Options.getInteger("audio.recording.samplerate"); + } + book.setSampleRate(sr); + + int chans = Utils.s2i(prefs.getProperty("audio.recording.channels")); + if (chans == 0) { + chans = Options.getInteger("audio.recording.channels"); + } + book.setChannels(chans); + + int res = Utils.s2i(prefs.getProperty("audio.recording.resolution")); + if (res == 0) { + res = Options.getInteger("audio.recording.resolution"); + } + book.setResolution(res); + + for (int i = 0; i < 31; i++) { if (prefs.getProperty("audio.eq." + i) == null) { book.equaliser.setChannel(i, Options.getFloat("audio.eq." + i)); diff --git a/src/uk/co/majenko/audiobookrecorder/Book.java b/src/uk/co/majenko/audiobookrecorder/Book.java index 5880d2f..45decd8 100644 --- a/src/uk/co/majenko/audiobookrecorder/Book.java +++ b/src/uk/co/majenko/audiobookrecorder/Book.java @@ -9,6 +9,7 @@ import java.io.*; import java.nio.file.*; import javax.swing.tree.*; import davaguine.jeq.core.IIRControls; +import javax.sound.sampled.*; public class Book extends DefaultMutableTreeNode { @@ -17,6 +18,10 @@ public class Book extends DefaultMutableTreeNode { String genre; String comment; + int sampleRate; + int channels; + int resolution; + ImageIcon icon; public Equaliser equaliser; @@ -155,4 +160,15 @@ public class Book extends DefaultMutableTreeNode { } } } + + public int getSampleRate() { return sampleRate; } + public void setSampleRate(int sr) { sampleRate = sr; } + public int getChannels() { return channels; } + public void setChannels(int c) { channels = c; } + public int getResolution() { return resolution; } + public void setResolution(int r) { resolution = r; } + + public AudioFormat getAudioFormat() { + return new AudioFormat(getSampleRate(), getResolution(), getChannels(), true, false); + } } diff --git a/src/uk/co/majenko/audiobookrecorder/Sentence.java b/src/uk/co/majenko/audiobookrecorder/Sentence.java index ecb668e..25a0463 100644 --- a/src/uk/co/majenko/audiobookrecorder/Sentence.java +++ b/src/uk/co/majenko/audiobookrecorder/Sentence.java @@ -128,7 +128,7 @@ public class Sentence extends DefaultMutableTreeNode implements Cacheable { } - recordingThread = new RecordingThread(getTempFile(), getFile(), Options.getAudioFormat()); + recordingThread = new RecordingThread(getTempFile(), getFile(), AudiobookRecorder.window.book.getAudioFormat()); Thread rc = new Thread(recordingThread); rc.setDaemon(true);