Update 6: Better support for different cue sheet encodings, ape output

This commit is contained in:
chudov
2008-10-17 18:21:59 +00:00
parent ab94a4f25e
commit cf87cc9bd2
9 changed files with 476 additions and 244 deletions

View File

@@ -150,24 +150,16 @@ namespace APEDotNet {
sampleCount = nBlocksRetrieved; sampleCount = nBlocksRetrieved;
array<Int32,2>^ _sampleBuffer = gcnew array<Int32,2> (nBlocksRetrieved, 2); array<Int32,2>^ _sampleBuffer = gcnew array<Int32,2> (nBlocksRetrieved, 2);
interior_ptr<Int32> pMyBuffer = &_sampleBuffer[0, 0];
{ unsigned short * pAPEBuffer = (unsigned short *) pBuffer;
interior_ptr<Int32> pMyBuffer = &_sampleBuffer[0, 0]; unsigned short * pAPEBufferEnd = (unsigned short *) pBuffer + 2 * nBlocksRetrieved;
unsigned short * pAPEBuffer = (unsigned short *) pBuffer;
unsigned short * pAPEBufferEnd = (unsigned short *) pBuffer + 2 * nBlocksRetrieved; while (pAPEBuffer < pAPEBufferEnd) {
*(pMyBuffer++) = *(pAPEBuffer++);
*(pMyBuffer++) = *(pAPEBuffer++);
}
while (pAPEBuffer < pAPEBufferEnd) {
*(pMyBuffer++) = *(pAPEBuffer++);
*(pMyBuffer++) = *(pAPEBuffer++);
}
}
#if 0
for (int i = 0; i < nBlocksRetrieved; i++)
{
_sampleBuffer[i,0] = pBuffer[i*4] + (pBuffer[i*4+1] << 8);
_sampleBuffer[i,1] = pBuffer[i*4+2] + (pBuffer[i*4+3] << 8);
}
#endif
sampleBuffer = _sampleBuffer; sampleBuffer = _sampleBuffer;
_sampleOffset += nBlocksRetrieved; _sampleOffset += nBlocksRetrieved;
_samplesWaiting = false; _samplesWaiting = false;
@@ -209,4 +201,126 @@ namespace APEDotNet {
#endif #endif
}; };
public ref class APEWriter {
public:
APEWriter(String^ path, Int32 bitsPerSample, Int32 channelCount, Int32 sampleRate) {
if ((channelCount != 1) && (channelCount != 2)) {
throw gcnew Exception("Only stereo and mono audio formats are allowed.");
}
_path = path;
_tags = gcnew NameValueCollection();
_compressionLevel = COMPRESSION_LEVEL_NORMAL;
_bitsPerSample = bitsPerSample;
_channelCount = channelCount;
_sampleRate = sampleRate;
int nRetVal;
pAPECompress = CreateIAPECompress (&nRetVal);
if (!pAPECompress) {
throw gcnew Exception("Unable to open file.");
}
}
void Close() {
if (pAPECompress)
{
pAPECompress->Finish (NULL, 0, 0);
delete pAPECompress;
pAPECompress = NULL;
}
if ((_finalSampleCount != 0) && (_samplesWritten != _finalSampleCount)) {
throw gcnew Exception("Samples written differs from the expected sample count.");
}
if (_tags->Count > 0)
{
APETagDotNet^ apeTag = gcnew APETagDotNet (_path, true, false);
apeTag->SetStringTags (_tags, true);
apeTag->Save();
apeTag->Close();
_tags->Clear ();
}
}
property Int32 FinalSampleCount {
Int32 get() {
return _finalSampleCount;
}
void set(Int32 value) {
if (value < 0) {
throw gcnew Exception("Invalid final sample count.");
}
if (_initialized) {
throw gcnew Exception("Final sample count cannot be changed after encoding begins.");
}
_finalSampleCount = value;
}
}
property Int32 CompressionLevel {
Int32 get() {
return _compressionLevel;
}
void set(Int32 value) {
if ((value < 1) || (value > 5)) {
throw gcnew Exception("Invalid compression mode.");
}
_compressionLevel = value * 1000;
}
}
void Write(array<unsigned char>^ sampleBuffer, UInt32 sampleCount) {
if (!_initialized) Initialize();
pin_ptr<unsigned char> pSampleBuffer = &sampleBuffer[0];
if (pAPECompress->AddData (pSampleBuffer, sampleCount * sizeof (int)))
{
throw gcnew Exception("An error occurred while encoding.");
}
_samplesWritten += sampleCount;
}
void SetTags (NameValueCollection^ tags) {
_tags = tags;
}
private:
IAPECompress * pAPECompress;
bool _initialized;
Int32 _finalSampleCount, _samplesWritten;
Int32 _bitsPerSample, _channelCount, _sampleRate;
Int32 _compressionLevel;
NameValueCollection^ _tags;
String^ _path;
void Initialize() {
IntPtr pathChars;
int res;
WAVEFORMATEX waveFormat;
pathChars = Marshal::StringToHGlobalUni(_path);
FillWaveFormatEx (&waveFormat, _sampleRate, _bitsPerSample, _channelCount);
res = pAPECompress->Start ((const wchar_t*)pathChars.ToPointer(),
&waveFormat,
(_finalSampleCount == 0) ? MAX_AUDIO_BYTES_UNKNOWN : _finalSampleCount * sizeof (int),
_compressionLevel,
NULL,
CREATE_WAV_HEADER_ON_DECOMPRESSION);
Marshal::FreeHGlobal(pathChars);
if (res)
{
throw gcnew Exception("Unable to create the encoder.");
}
_initialized = true;
}
};
} }

View File

@@ -51,6 +51,8 @@ namespace JDP {
dest = new FLACWriter(path, bitsPerSample, channelCount, sampleRate); break; dest = new FLACWriter(path, bitsPerSample, channelCount, sampleRate); break;
case ".wv": case ".wv":
dest = new WavPackWriter(path, bitsPerSample, channelCount, sampleRate); break; dest = new WavPackWriter(path, bitsPerSample, channelCount, sampleRate); break;
case ".ape":
dest = new APEWriter(path, bitsPerSample, channelCount, sampleRate); break;
case ".dummy": case ".dummy":
dest = new DummyWriter(path, bitsPerSample, channelCount, sampleRate); break; dest = new DummyWriter(path, bitsPerSample, channelCount, sampleRate); break;
default: default:
@@ -708,6 +710,81 @@ namespace JDP {
} }
} }
class APEWriter : IAudioDest
{
APEDotNet.APEWriter _apeWriter;
//int[,] _sampleBuffer;
int _bitsPerSample;
int _channelCount;
int _sampleRate;
public APEWriter(string path, int bitsPerSample, int channelCount, int sampleRate)
{
if (bitsPerSample != 16)
{
throw new Exception("Bits per sample must be 16.");
}
_bitsPerSample = bitsPerSample;
_channelCount = channelCount;
_sampleRate = sampleRate;
_apeWriter = new APEDotNet.APEWriter(path, bitsPerSample, channelCount, sampleRate);
}
public long FinalSampleCount
{
get { return _apeWriter.FinalSampleCount; }
set { _apeWriter.FinalSampleCount = (int) value; }
}
public int CompressionLevel
{
get { return _apeWriter.CompressionLevel; }
set { _apeWriter.CompressionLevel = value; }
}
public bool SetTags(NameValueCollection tags)
{
_apeWriter.SetTags(tags);
return true;
}
public void Close()
{
_apeWriter.Close();
}
private unsafe void BytesToAPESamples_16(byte[] inSamples, int inByteOffset,
int[,] outSamples, int outSampleOffset, uint sampleCount, int channelCount)
{
uint loopCount = sampleCount * (uint)channelCount;
if ((inSamples.Length - inByteOffset < loopCount * 2) ||
(outSamples.GetLength(0) - outSampleOffset < sampleCount))
{
throw new IndexOutOfRangeException();
}
fixed (byte* pInSamplesFixed = &inSamples[inByteOffset])
{
fixed (int* pOutSamplesFixed = &outSamples[outSampleOffset, 0])
{
short* pInSamples = (short*)pInSamplesFixed;
int* pOutSamples = pOutSamplesFixed;
for (int i = 0; i < loopCount; i++)
{
*(pOutSamples++) = (int)*(pInSamples++);
}
}
}
}
public void Write(byte[] buff, uint sampleCount)
{
//if ((_sampleBuffer == null) || (_sampleBuffer.GetLength(0) < sampleCount))
//{
// _sampleBuffer = new int[sampleCount, _channelCount];
//}
//BytesToAPESamples_16(buff, 0, _sampleBuffer, 0, sampleCount, _channelCount);
//_apeWriter.Write(_sampleBuffer, (int)sampleCount);
_apeWriter.Write (buff, sampleCount);
}
}
class WavPackReader : IAudioSource { class WavPackReader : IAudioSource {
WavPackDotNet.WavPackReader _wavPackReader; WavPackDotNet.WavPackReader _wavPackReader;

View File

@@ -34,6 +34,7 @@ namespace JDP {
WAV, WAV,
FLAC, FLAC,
WavPack, WavPack,
APE,
NoAudio NoAudio
} }
@@ -44,6 +45,7 @@ namespace JDP {
{ {
case OutputAudioFormat.FLAC: return ".flac"; case OutputAudioFormat.FLAC: return ".flac";
case OutputAudioFormat.WavPack: return ".wv"; case OutputAudioFormat.WavPack: return ".wv";
case OutputAudioFormat.APE: return ".ape";
case OutputAudioFormat.WAV: return ".wav"; case OutputAudioFormat.WAV: return ".wav";
case OutputAudioFormat.NoAudio: return ".dummy"; case OutputAudioFormat.NoAudio: return ".dummy";
} }
@@ -214,8 +216,7 @@ namespace JDP {
public string specialExceptions; public string specialExceptions;
public bool replaceSpaces; public bool replaceSpaces;
public bool embedLog; public bool embedLog;
public bool fillUpCUE;
private string[] _charMap;
public CUEConfig() public CUEConfig()
{ {
@@ -237,11 +238,11 @@ namespace JDP {
keepOriginalFilenames = true; keepOriginalFilenames = true;
trackFilenameFormat = "%N-%A-%T"; trackFilenameFormat = "%N-%A-%T";
singleFilenameFormat = "%F"; singleFilenameFormat = "%F";
removeSpecial = true; removeSpecial = false;
specialExceptions = "-()"; specialExceptions = "-()";
replaceSpaces = true; replaceSpaces = true;
embedLog = true; embedLog = true;
BuildCharMap(); fillUpCUE = true;
} }
public void Save (SettingsWriter sw) public void Save (SettingsWriter sw)
@@ -268,6 +269,7 @@ namespace JDP {
sw.Save("SpecialCharactersExceptions", specialExceptions); sw.Save("SpecialCharactersExceptions", specialExceptions);
sw.Save("ReplaceSpaces", replaceSpaces ? "1" : "0"); sw.Save("ReplaceSpaces", replaceSpaces ? "1" : "0");
sw.Save("EmbedLog", embedLog ? "1" : "0"); sw.Save("EmbedLog", embedLog ? "1" : "0");
sw.Save("FillUpCUE", fillUpCUE ? "1" : "0");
} }
public void Load(SettingsReader sr) public void Load(SettingsReader sr)
@@ -351,59 +353,30 @@ namespace JDP {
val = sr.Load("EmbedLog"); val = sr.Load("EmbedLog");
embedLog = (val != null) ? (val != "0") : true; embedLog = (val != null) ? (val != "0") : true;
BuildCharMap(); val = sr.Load("FillUpCUE");
fillUpCUE = (val != null) ? (val != "0") : true;
} }
public void BuildCharMap()
{
System.Collections.BitArray allowed = new System.Collections.BitArray(256, true);
char[] invalid = Path.GetInvalidFileNameChars();
int i;
if (removeSpecial)
{
byte[] exceptions = CUESheet.Encoding.GetBytes(specialExceptions);
for (i = 0; i <= 255; i++)
{
allowed[i] = ((i >= 'a') && (i <= 'z')) ||
((i >= 'A') && (i <= 'Z')) ||
((i >= '0') && (i <= '9')) ||
(i == ' ') || (i == '_');
}
for (i = 0; i < exceptions.Length; i++)
{
allowed[exceptions[i]] = true;
}
}
for (i = 0; i < invalid.Length; i++)
{
allowed[invalid[i]] = false;
}
_charMap = new string[256];
for (i = 0; i <= 255; i++)
{
if (allowed[i])
{
_charMap[i] = CUESheet.Encoding.GetString(new byte[] { (byte)i });
}
else
{
_charMap[i] = String.Empty;
}
}
}
public string CleanseString (string s) public string CleanseString (string s)
{ {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
byte[] b = CUESheet.Encoding.GetBytes(s); char[] invalid = Path.GetInvalidFileNameChars();
for (int i = 0; i < b.Length; i++) s = Encoding.Default.GetString(Encoding.Default.GetBytes(s));
for (int i = 0; i < s.Length; i++)
{ {
sb.Append(_charMap[b[i]]); char ch = s[i];
if (removeSpecial && specialExceptions.IndexOf(ch) < 0 && !(
((ch >= 'a') && (ch <= 'z')) ||
((ch >= 'A') && (ch <= 'Z')) ||
((ch >= '0') && (ch <= '9')) ||
(ch == ' ') || (ch == '_')))
ch = '_';
if (Array.IndexOf(invalid, ch) >= 0)
sb.Append("_");
else
sb.Append (ch);
} }
return sb.ToString(); return sb.ToString();
@@ -473,8 +446,6 @@ namespace JDP {
accDisks = new List<AccDisk>(); accDisks = new List<AccDisk>();
_hasEmbeddedCUESheet = false; _hasEmbeddedCUESheet = false;
_config.BuildCharMap();
TextReader sr; TextReader sr;
if (Path.GetExtension(pathIn).ToLower() != ".cue") if (Path.GetExtension(pathIn).ToLower() != ".cue")
@@ -710,18 +681,21 @@ namespace JDP {
_albumTags = _tracks[0]._trackTags; _albumTags = _tracks[0]._trackTags;
_tracks[0]._trackTags = new NameValueCollection(); _tracks[0]._trackTags = new NameValueCollection();
} }
if (General.FindCUELine(_attributes, "PERFORMER") == null && GetCommonTag("ALBUM ARTIST") != null) if (_config.fillUpCUE)
General.SetCUELine(_attributes, "PERFORMER", GetCommonTag("ALBUM ARTIST"), true); {
if (General.FindCUELine(_attributes, "PERFORMER") == null && GetCommonTag("ARTIST") != null) if (General.FindCUELine(_attributes, "PERFORMER") == null && GetCommonTag("ALBUM ARTIST") != null)
General.SetCUELine(_attributes, "PERFORMER", GetCommonTag("ARTIST"), true); General.SetCUELine(_attributes, "PERFORMER", GetCommonTag("ALBUM ARTIST"), true);
if (General.FindCUELine(_attributes, "TITLE") == null && GetCommonTag("ALBUM") != null) if (General.FindCUELine(_attributes, "PERFORMER") == null && GetCommonTag("ARTIST") != null)
General.SetCUELine(_attributes, "TITLE", GetCommonTag("ALBUM"), true); General.SetCUELine(_attributes, "PERFORMER", GetCommonTag("ARTIST"), true);
if (General.FindCUELine(_attributes, "REM", "DATE") == null && GetCommonTag("DATE") != null) if (General.FindCUELine(_attributes, "TITLE") == null && GetCommonTag("ALBUM") != null)
General.SetCUELine(_attributes, "REM", "DATE", GetCommonTag("DATE"), false); General.SetCUELine(_attributes, "TITLE", GetCommonTag("ALBUM"), true);
if (General.FindCUELine(_attributes, "REM", "DATE") == null && GetCommonTag("YEAR") != null) if (General.FindCUELine(_attributes, "REM", "DATE") == null && GetCommonTag("DATE") != null)
General.SetCUELine(_attributes, "REM", "DATE", GetCommonTag("YEAR"), false); General.SetCUELine(_attributes, "REM", "DATE", GetCommonTag("DATE"), false);
if (General.FindCUELine(_attributes, "REM", "GENRE") == null && GetCommonTag("GENRE") != null) if (General.FindCUELine(_attributes, "REM", "DATE") == null && GetCommonTag("YEAR") != null)
General.SetCUELine(_attributes, "REM", "GENRE", GetCommonTag("GENRE"), true); General.SetCUELine(_attributes, "REM", "DATE", GetCommonTag("YEAR"), false);
if (General.FindCUELine(_attributes, "REM", "GENRE") == null && GetCommonTag("GENRE") != null)
General.SetCUELine(_attributes, "REM", "GENRE", GetCommonTag("GENRE"), true);
}
if (_accurateRipId == null) if (_accurateRipId == null)
_accurateRipId = GetCommonTag("ACCURATERIPID"); _accurateRipId = GetCommonTag("ACCURATERIPID");
@@ -762,7 +736,7 @@ namespace JDP {
public static Encoding Encoding { public static Encoding Encoding {
get { get {
return Encoding.GetEncoding(1252); return Encoding.Default;
} }
} }
@@ -932,8 +906,13 @@ namespace JDP {
} }
public void Write(string path, CUEStyle style) { public void Write(string path, CUEStyle style) {
StreamWriter sw = new StreamWriter(path, false, CUESheet.Encoding); StringWriter sw = new StringWriter();
Write (sw, style); Write(sw, style);
sw.Close();
bool utf8Required = CUESheet.Encoding.GetString(CUESheet.Encoding.GetBytes(sw.ToString())) != sw.ToString();
StreamWriter sw1 = new StreamWriter(path, false, utf8Required?Encoding.UTF8:CUESheet.Encoding);
sw1.Write(sw.ToString());
sw1.Close();
} }
public void Write(TextWriter sw, CUEStyle style) { public void Write(TextWriter sw, CUEStyle style) {
@@ -1602,7 +1581,7 @@ namespace JDP {
{ {
iDest++; iDest++;
audioDest = GetAudioDest(destPaths[iDest], destLengths[iDest], noOutput); audioDest = GetAudioDest(destPaths[iDest], destLengths[iDest], noOutput);
if (audioDest is FLACWriter || audioDest is WavPackWriter) if (!(audioDest is WAVWriter))
{ {
NameValueCollection destTags = new NameValueCollection(); NameValueCollection destTags = new NameValueCollection();

View File

@@ -68,6 +68,7 @@ namespace JDP {
this.toolStripProgressBar2 = new System.Windows.Forms.ToolStripProgressBar(); this.toolStripProgressBar2 = new System.Windows.Forms.ToolStripProgressBar();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.btnCUECreator = new System.Windows.Forms.Button(); this.btnCUECreator = new System.Windows.Forms.Button();
this.rbAPE = new System.Windows.Forms.RadioButton();
this.grpCUEPaths.SuspendLayout(); this.grpCUEPaths.SuspendLayout();
this.grpOutputStyle.SuspendLayout(); this.grpOutputStyle.SuspendLayout();
this.grpOutputPathGeneration.SuspendLayout(); this.grpOutputPathGeneration.SuspendLayout();
@@ -256,6 +257,7 @@ namespace JDP {
// //
// grpAudioOutput // grpAudioOutput
// //
this.grpAudioOutput.Controls.Add(this.rbAPE);
this.grpAudioOutput.Controls.Add(this.rbNoAudio); this.grpAudioOutput.Controls.Add(this.rbNoAudio);
this.grpAudioOutput.Controls.Add(this.rbWavPack); this.grpAudioOutput.Controls.Add(this.rbWavPack);
this.grpAudioOutput.Controls.Add(this.rbFLAC); this.grpAudioOutput.Controls.Add(this.rbFLAC);
@@ -409,6 +411,14 @@ namespace JDP {
this.btnCUECreator.UseVisualStyleBackColor = true; this.btnCUECreator.UseVisualStyleBackColor = true;
this.btnCUECreator.Click += new System.EventHandler(this.btnCUECreator_Click); this.btnCUECreator.Click += new System.EventHandler(this.btnCUECreator_Click);
// //
// rbAPE
//
resources.ApplyResources(this.rbAPE, "rbAPE");
this.rbAPE.Name = "rbAPE";
this.rbAPE.TabStop = true;
this.rbAPE.UseVisualStyleBackColor = true;
this.rbAPE.CheckedChanged += new System.EventHandler(this.rbAPE_CheckedChanged);
//
// frmCUETools // frmCUETools
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
@@ -492,6 +502,7 @@ namespace JDP {
private System.Windows.Forms.Button btnCUECreator; private System.Windows.Forms.Button btnCUECreator;
private System.Windows.Forms.MaskedTextBox txtDataTrackLength; private System.Windows.Forms.MaskedTextBox txtDataTrackLength;
private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label1;
private System.Windows.Forms.RadioButton rbAPE;
} }
} }

View File

@@ -44,8 +44,8 @@ namespace JDP {
OpenFileDialog fileDlg = new OpenFileDialog(); OpenFileDialog fileDlg = new OpenFileDialog();
DialogResult dlgRes; DialogResult dlgRes;
fileDlg.Title = "Input CUE Sheet or FLAC image"; fileDlg.Title = "Input CUE Sheet or album image";
fileDlg.Filter = "CUE Sheets (*.cue)|*.cue|FLAC images (*.flac)|*.flac"; fileDlg.Filter = "CUE Sheets (*.cue)|*.cue|FLAC images (*.flac)|*.flac|WavPack images (*.wv)|*.wv|APE images (*.ape)|*.ape";
dlgRes = fileDlg.ShowDialog(); dlgRes = fileDlg.ShowDialog();
if (dlgRes == DialogResult.OK) { if (dlgRes == DialogResult.OK) {
@@ -113,7 +113,6 @@ namespace JDP {
_writeOffset = settingsForm.WriteOffset; _writeOffset = settingsForm.WriteOffset;
_config = settingsForm.Config; _config = settingsForm.Config;
_config.BuildCharMap();
UpdateOutputPath(); UpdateOutputPath();
} }
} }
@@ -124,7 +123,7 @@ namespace JDP {
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
sw.WriteLine("CUE Tools v1.9.2"); sw.WriteLine("CUE Tools v1.9.2");
sw.WriteLine("Copyright 2006-2007 Moitah http://www.moitah.net/."); sw.WriteLine("Copyright 2006-2007 Moitah http://www.moitah.net/.");
sw.WriteLine("AccurateRip, Monkey's Audio (APE) input and FLAC embedded CUE sheet support added in 2008 by Greg Chudov, gchudov@gmail.com."); sw.WriteLine("AccurateRip, Monkey's Audio and embedded CUE sheet support added in 2008 by Greg Chudov, gchudov@gmail.com.");
sw.WriteLine("Thanks go out to Christopher Key and Whitehobbit for insight on AccurateRip functionality and to Mr Spoon for permission to use the database."); sw.WriteLine("Thanks go out to Christopher Key and Whitehobbit for insight on AccurateRip functionality and to Mr Spoon for permission to use the database.");
sw.WriteLine("Monkey's Audio library by Matthew T. Ashland."); sw.WriteLine("Monkey's Audio library by Matthew T. Ashland.");
reportForm.Message = sw.ToString(); reportForm.Message = sw.ToString();
@@ -397,7 +396,7 @@ namespace JDP {
btnFilenameCorrector.Enabled = !running; btnFilenameCorrector.Enabled = !running;
btnCUECreator.Enabled = !running; btnCUECreator.Enabled = !running;
btnBatch.Enabled = !running; btnBatch.Enabled = !running;
btnConvert.Text = running ? "&Stop" : "&Convert"; btnConvert.Text = running ? "&Stop" : "&Go";
toolStripStatusLabel1.Text = String.Empty; toolStripStatusLabel1.Text = String.Empty;
toolStripProgressBar1.Value = 0; toolStripProgressBar1.Value = 0;
toolStripProgressBar2.Value = 0; toolStripProgressBar2.Value = 0;
@@ -680,6 +679,7 @@ namespace JDP {
get { get {
if (rbFLAC.Checked) return OutputAudioFormat.FLAC; if (rbFLAC.Checked) return OutputAudioFormat.FLAC;
if (rbWavPack.Checked) return OutputAudioFormat.WavPack; if (rbWavPack.Checked) return OutputAudioFormat.WavPack;
if (rbAPE.Checked) return OutputAudioFormat.APE;
if (rbNoAudio.Checked) return OutputAudioFormat.NoAudio; if (rbNoAudio.Checked) return OutputAudioFormat.NoAudio;
return OutputAudioFormat.WAV; return OutputAudioFormat.WAV;
} }
@@ -687,7 +687,8 @@ namespace JDP {
switch (value) { switch (value) {
case OutputAudioFormat.FLAC: rbFLAC.Checked = true; break; case OutputAudioFormat.FLAC: rbFLAC.Checked = true; break;
case OutputAudioFormat.WavPack: rbWavPack.Checked = true; break; case OutputAudioFormat.WavPack: rbWavPack.Checked = true; break;
case OutputAudioFormat.WAV: rbWAV.Checked = true; break; case OutputAudioFormat.APE: rbAPE.Checked = true; break;
case OutputAudioFormat.WAV: rbWAV.Checked = true; break;
case OutputAudioFormat.NoAudio: rbNoAudio.Checked = true; break; case OutputAudioFormat.NoAudio: rbNoAudio.Checked = true; break;
} }
} }
@@ -803,7 +804,7 @@ namespace JDP {
private void updateOutputStyles() private void updateOutputStyles()
{ {
rbEmbedCUE.Enabled = rbFLAC.Checked || rbWavPack.Checked; rbEmbedCUE.Enabled = rbFLAC.Checked || rbWavPack.Checked || rbAPE.Checked;
rbNoAudio.Enabled = rbWAV.Enabled = !rbEmbedCUE.Checked; rbNoAudio.Enabled = rbWAV.Enabled = !rbEmbedCUE.Checked;
} }
@@ -890,6 +891,11 @@ namespace JDP {
} }
} }
} }
private void rbAPE_CheckedChanged(object sender, EventArgs e)
{
updateOutputStyles();
}
} }
enum OutputPathGeneration { enum OutputPathGeneration {

View File

@@ -129,7 +129,7 @@
<value>5</value> <value>5</value>
</data> </data>
<data name="btnConvert.Text" xml:space="preserve"> <data name="btnConvert.Text" xml:space="preserve">
<value>&amp;Convert</value> <value>&amp;Go</value>
</data> </data>
<data name="&gt;&gt;btnConvert.Name" xml:space="preserve"> <data name="&gt;&gt;btnConvert.Name" xml:space="preserve">
<value>btnConvert</value> <value>btnConvert</value>
@@ -383,93 +383,6 @@
<data name="&gt;&gt;txtInputPath.ZOrder" xml:space="preserve"> <data name="&gt;&gt;txtInputPath.ZOrder" xml:space="preserve">
<value>5</value> <value>5</value>
</data> </data>
<data name="&gt;&gt;rbEmbedCUE.Name" xml:space="preserve">
<value>rbEmbedCUE</value>
</data>
<data name="&gt;&gt;rbEmbedCUE.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;rbEmbedCUE.Parent" xml:space="preserve">
<value>grpOutputStyle</value>
</data>
<data name="&gt;&gt;rbEmbedCUE.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;rbGapsLeftOut.Name" xml:space="preserve">
<value>rbGapsLeftOut</value>
</data>
<data name="&gt;&gt;rbGapsLeftOut.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;rbGapsLeftOut.Parent" xml:space="preserve">
<value>grpOutputStyle</value>
</data>
<data name="&gt;&gt;rbGapsLeftOut.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;rbGapsPrepended.Name" xml:space="preserve">
<value>rbGapsPrepended</value>
</data>
<data name="&gt;&gt;rbGapsPrepended.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;rbGapsPrepended.Parent" xml:space="preserve">
<value>grpOutputStyle</value>
</data>
<data name="&gt;&gt;rbGapsPrepended.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;rbGapsAppended.Name" xml:space="preserve">
<value>rbGapsAppended</value>
</data>
<data name="&gt;&gt;rbGapsAppended.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;rbGapsAppended.Parent" xml:space="preserve">
<value>grpOutputStyle</value>
</data>
<data name="&gt;&gt;rbGapsAppended.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;rbSingleFile.Name" xml:space="preserve">
<value>rbSingleFile</value>
</data>
<data name="&gt;&gt;rbSingleFile.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;rbSingleFile.Parent" xml:space="preserve">
<value>grpOutputStyle</value>
</data>
<data name="&gt;&gt;rbSingleFile.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="grpOutputStyle.Location" type="System.Drawing.Point, System.Drawing">
<value>114, 211</value>
</data>
<data name="grpOutputStyle.Size" type="System.Drawing.Size, System.Drawing">
<value>119, 118</value>
</data>
<data name="grpOutputStyle.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="grpOutputStyle.Text" xml:space="preserve">
<value>CUE Style</value>
</data>
<data name="&gt;&gt;grpOutputStyle.Name" xml:space="preserve">
<value>grpOutputStyle</value>
</data>
<data name="&gt;&gt;grpOutputStyle.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;grpOutputStyle.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;grpOutputStyle.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>153, 8</value>
</metadata>
<data name="rbEmbedCUE.AutoSize" type="System.Boolean, mscorlib"> <data name="rbEmbedCUE.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@@ -481,16 +394,19 @@
<value>12, 19</value> <value>12, 19</value>
</data> </data>
<data name="rbEmbedCUE.Size" type="System.Drawing.Size, System.Drawing"> <data name="rbEmbedCUE.Size" type="System.Drawing.Size, System.Drawing">
<value>57, 17</value> <value>75, 17</value>
</data> </data>
<data name="rbEmbedCUE.TabIndex" type="System.Int32, mscorlib"> <data name="rbEmbedCUE.TabIndex" type="System.Int32, mscorlib">
<value>4</value> <value>4</value>
</data> </data>
<data name="rbEmbedCUE.Text" xml:space="preserve"> <data name="rbEmbedCUE.Text" xml:space="preserve">
<value>&amp;Embed</value> <value>&amp;Embedded</value>
</data> </data>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>153, 8</value>
</metadata>
<data name="rbEmbedCUE.ToolTip" xml:space="preserve"> <data name="rbEmbedCUE.ToolTip" xml:space="preserve">
<value>Create single file with embedded CUE sheet. Currently supported only for FLAC output</value> <value>Create single file with embedded CUE sheet.</value>
</data> </data>
<data name="&gt;&gt;rbEmbedCUE.Name" xml:space="preserve"> <data name="&gt;&gt;rbEmbedCUE.Name" xml:space="preserve">
<value>rbEmbedCUE</value> <value>rbEmbedCUE</value>
@@ -624,6 +540,30 @@
<data name="&gt;&gt;rbSingleFile.ZOrder" xml:space="preserve"> <data name="&gt;&gt;rbSingleFile.ZOrder" xml:space="preserve">
<value>4</value> <value>4</value>
</data> </data>
<data name="grpOutputStyle.Location" type="System.Drawing.Point, System.Drawing">
<value>114, 211</value>
</data>
<data name="grpOutputStyle.Size" type="System.Drawing.Size, System.Drawing">
<value>119, 118</value>
</data>
<data name="grpOutputStyle.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="grpOutputStyle.Text" xml:space="preserve">
<value>CUE Style</value>
</data>
<data name="&gt;&gt;grpOutputStyle.Name" xml:space="preserve">
<value>grpOutputStyle</value>
</data>
<data name="&gt;&gt;grpOutputStyle.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;grpOutputStyle.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;grpOutputStyle.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="btnAbout.Location" type="System.Drawing.Point, System.Drawing"> <data name="btnAbout.Location" type="System.Drawing.Point, System.Drawing">
<value>410, 135</value> <value>410, 135</value>
</data> </data>
@@ -936,6 +876,18 @@
<data name="&gt;&gt;txtAppendFilename.ZOrder" xml:space="preserve"> <data name="&gt;&gt;txtAppendFilename.ZOrder" xml:space="preserve">
<value>6</value> <value>6</value>
</data> </data>
<data name="&gt;&gt;rbAPE.Name" xml:space="preserve">
<value>rbAPE</value>
</data>
<data name="&gt;&gt;rbAPE.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;rbAPE.Parent" xml:space="preserve">
<value>grpAudioOutput</value>
</data>
<data name="&gt;&gt;rbAPE.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;rbNoAudio.Name" xml:space="preserve"> <data name="&gt;&gt;rbNoAudio.Name" xml:space="preserve">
<value>rbNoAudio</value> <value>rbNoAudio</value>
</data> </data>
@@ -946,7 +898,7 @@
<value>grpAudioOutput</value> <value>grpAudioOutput</value>
</data> </data>
<data name="&gt;&gt;rbNoAudio.ZOrder" xml:space="preserve"> <data name="&gt;&gt;rbNoAudio.ZOrder" xml:space="preserve">
<value>0</value> <value>1</value>
</data> </data>
<data name="&gt;&gt;rbWavPack.Name" xml:space="preserve"> <data name="&gt;&gt;rbWavPack.Name" xml:space="preserve">
<value>rbWavPack</value> <value>rbWavPack</value>
@@ -958,7 +910,7 @@
<value>grpAudioOutput</value> <value>grpAudioOutput</value>
</data> </data>
<data name="&gt;&gt;rbWavPack.ZOrder" xml:space="preserve"> <data name="&gt;&gt;rbWavPack.ZOrder" xml:space="preserve">
<value>1</value> <value>2</value>
</data> </data>
<data name="&gt;&gt;rbFLAC.Name" xml:space="preserve"> <data name="&gt;&gt;rbFLAC.Name" xml:space="preserve">
<value>rbFLAC</value> <value>rbFLAC</value>
@@ -970,7 +922,7 @@
<value>grpAudioOutput</value> <value>grpAudioOutput</value>
</data> </data>
<data name="&gt;&gt;rbFLAC.ZOrder" xml:space="preserve"> <data name="&gt;&gt;rbFLAC.ZOrder" xml:space="preserve">
<value>2</value> <value>3</value>
</data> </data>
<data name="&gt;&gt;rbWAV.Name" xml:space="preserve"> <data name="&gt;&gt;rbWAV.Name" xml:space="preserve">
<value>rbWAV</value> <value>rbWAV</value>
@@ -982,7 +934,7 @@
<value>grpAudioOutput</value> <value>grpAudioOutput</value>
</data> </data>
<data name="&gt;&gt;rbWAV.ZOrder" xml:space="preserve"> <data name="&gt;&gt;rbWAV.ZOrder" xml:space="preserve">
<value>3</value> <value>4</value>
</data> </data>
<data name="grpAudioOutput.Location" type="System.Drawing.Point, System.Drawing"> <data name="grpAudioOutput.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 211</value> <value>12, 211</value>
@@ -1012,7 +964,7 @@
<value>True</value> <value>True</value>
</data> </data>
<data name="rbNoAudio.Location" type="System.Drawing.Point, System.Drawing"> <data name="rbNoAudio.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 71</value> <value>11, 85</value>
</data> </data>
<data name="rbNoAudio.Size" type="System.Drawing.Size, System.Drawing"> <data name="rbNoAudio.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value> <value>50, 17</value>
@@ -1036,13 +988,13 @@
<value>grpAudioOutput</value> <value>grpAudioOutput</value>
</data> </data>
<data name="&gt;&gt;rbNoAudio.ZOrder" xml:space="preserve"> <data name="&gt;&gt;rbNoAudio.ZOrder" xml:space="preserve">
<value>0</value> <value>1</value>
</data> </data>
<data name="rbWavPack.AutoSize" type="System.Boolean, mscorlib"> <data name="rbWavPack.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
<data name="rbWavPack.Location" type="System.Drawing.Point, System.Drawing"> <data name="rbWavPack.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 54</value> <value>11, 34</value>
</data> </data>
<data name="rbWavPack.Size" type="System.Drawing.Size, System.Drawing"> <data name="rbWavPack.Size" type="System.Drawing.Size, System.Drawing">
<value>69, 17</value> <value>69, 17</value>
@@ -1063,13 +1015,13 @@
<value>grpAudioOutput</value> <value>grpAudioOutput</value>
</data> </data>
<data name="&gt;&gt;rbWavPack.ZOrder" xml:space="preserve"> <data name="&gt;&gt;rbWavPack.ZOrder" xml:space="preserve">
<value>1</value> <value>2</value>
</data> </data>
<data name="rbFLAC.AutoSize" type="System.Boolean, mscorlib"> <data name="rbFLAC.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
<data name="rbFLAC.Location" type="System.Drawing.Point, System.Drawing"> <data name="rbFLAC.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 37</value> <value>11, 17</value>
</data> </data>
<data name="rbFLAC.Size" type="System.Drawing.Size, System.Drawing"> <data name="rbFLAC.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value> <value>50, 17</value>
@@ -1090,13 +1042,13 @@
<value>grpAudioOutput</value> <value>grpAudioOutput</value>
</data> </data>
<data name="&gt;&gt;rbFLAC.ZOrder" xml:space="preserve"> <data name="&gt;&gt;rbFLAC.ZOrder" xml:space="preserve">
<value>2</value> <value>3</value>
</data> </data>
<data name="rbWAV.AutoSize" type="System.Boolean, mscorlib"> <data name="rbWAV.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
<data name="rbWAV.Location" type="System.Drawing.Point, System.Drawing"> <data name="rbWAV.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 20</value> <value>11, 68</value>
</data> </data>
<data name="rbWAV.Size" type="System.Drawing.Size, System.Drawing"> <data name="rbWAV.Size" type="System.Drawing.Size, System.Drawing">
<value>48, 17</value> <value>48, 17</value>
@@ -1117,7 +1069,7 @@
<value>grpAudioOutput</value> <value>grpAudioOutput</value>
</data> </data>
<data name="&gt;&gt;rbWAV.ZOrder" xml:space="preserve"> <data name="&gt;&gt;rbWAV.ZOrder" xml:space="preserve">
<value>3</value> <value>4</value>
</data> </data>
<data name="btnBatch.Location" type="System.Drawing.Point, System.Drawing"> <data name="btnBatch.Location" type="System.Drawing.Point, System.Drawing">
<value>410, 259</value> <value>410, 259</value>
@@ -1191,6 +1143,90 @@
<data name="&gt;&gt;btnSettings.ZOrder" xml:space="preserve"> <data name="&gt;&gt;btnSettings.ZOrder" xml:space="preserve">
<value>3</value> <value>3</value>
</data> </data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>grpAccurateRip</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;txtDataTrackLength.Name" xml:space="preserve">
<value>txtDataTrackLength</value>
</data>
<data name="&gt;&gt;txtDataTrackLength.Type" xml:space="preserve">
<value>System.Windows.Forms.MaskedTextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;txtDataTrackLength.Parent" xml:space="preserve">
<value>grpAccurateRip</value>
</data>
<data name="&gt;&gt;txtDataTrackLength.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;rbArApplyOffset.Name" xml:space="preserve">
<value>rbArApplyOffset</value>
</data>
<data name="&gt;&gt;rbArApplyOffset.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;rbArApplyOffset.Parent" xml:space="preserve">
<value>grpAccurateRip</value>
</data>
<data name="&gt;&gt;rbArApplyOffset.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;rbArVerify.Name" xml:space="preserve">
<value>rbArVerify</value>
</data>
<data name="&gt;&gt;rbArVerify.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;rbArVerify.Parent" xml:space="preserve">
<value>grpAccurateRip</value>
</data>
<data name="&gt;&gt;rbArVerify.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;rbArNone.Name" xml:space="preserve">
<value>rbArNone</value>
</data>
<data name="&gt;&gt;rbArNone.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;rbArNone.Parent" xml:space="preserve">
<value>grpAccurateRip</value>
</data>
<data name="&gt;&gt;rbArNone.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="grpAccurateRip.Location" type="System.Drawing.Point, System.Drawing">
<value>238, 211</value>
</data>
<data name="grpAccurateRip.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 118</value>
</data>
<data name="grpAccurateRip.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="grpAccurateRip.Text" xml:space="preserve">
<value>AccurateRip</value>
</data>
<data name="&gt;&gt;grpAccurateRip.Name" xml:space="preserve">
<value>grpAccurateRip</value>
</data>
<data name="&gt;&gt;grpAccurateRip.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;grpAccurateRip.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;grpAccurateRip.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib"> <data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@@ -1252,7 +1288,7 @@
<value>True</value> <value>True</value>
</data> </data>
<data name="rbArApplyOffset.Location" type="System.Drawing.Point, System.Drawing"> <data name="rbArApplyOffset.Location" type="System.Drawing.Point, System.Drawing">
<value>11, 52</value> <value>8, 20</value>
</data> </data>
<data name="rbArApplyOffset.Size" type="System.Drawing.Size, System.Drawing"> <data name="rbArApplyOffset.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 17</value> <value>120, 17</value>
@@ -1263,9 +1299,6 @@
<data name="rbArApplyOffset.Text" xml:space="preserve"> <data name="rbArApplyOffset.Text" xml:space="preserve">
<value>Verify, &amp;then encode</value> <value>Verify, &amp;then encode</value>
</data> </data>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>153, 8</value>
</metadata>
<data name="rbArApplyOffset.ToolTip" xml:space="preserve"> <data name="rbArApplyOffset.ToolTip" xml:space="preserve">
<value>On the first pass, verify and try to find an offset correction which makes the rip accurate according to the AccurateRip database. On the second pass, convert, possibly applying offset correction.</value> <value>On the first pass, verify and try to find an offset correction which makes the rip accurate according to the AccurateRip database. On the second pass, convert, possibly applying offset correction.</value>
</data> </data>
@@ -1285,16 +1318,16 @@
<value>True</value> <value>True</value>
</data> </data>
<data name="rbArVerify.Location" type="System.Drawing.Point, System.Drawing"> <data name="rbArVerify.Location" type="System.Drawing.Point, System.Drawing">
<value>11, 35</value> <value>8, 54</value>
</data> </data>
<data name="rbArVerify.Size" type="System.Drawing.Size, System.Drawing"> <data name="rbArVerify.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value> <value>122, 17</value>
</data> </data>
<data name="rbArVerify.TabIndex" type="System.Int32, mscorlib"> <data name="rbArVerify.TabIndex" type="System.Int32, mscorlib">
<value>1</value> <value>1</value>
</data> </data>
<data name="rbArVerify.Text" xml:space="preserve"> <data name="rbArVerify.Text" xml:space="preserve">
<value>&amp;Verify</value> <value>&amp;Verify, don't encode</value>
</data> </data>
<data name="rbArVerify.ToolTip" xml:space="preserve"> <data name="rbArVerify.ToolTip" xml:space="preserve">
<value>Contact the AccurateRip databse for validation and compare the image against database</value> <value>Contact the AccurateRip databse for validation and compare the image against database</value>
@@ -1315,16 +1348,16 @@
<value>True</value> <value>True</value>
</data> </data>
<data name="rbArNone.Location" type="System.Drawing.Point, System.Drawing"> <data name="rbArNone.Location" type="System.Drawing.Point, System.Drawing">
<value>11, 18</value> <value>8, 37</value>
</data> </data>
<data name="rbArNone.Size" type="System.Drawing.Size, System.Drawing"> <data name="rbArNone.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 17</value> <value>123, 17</value>
</data> </data>
<data name="rbArNone.TabIndex" type="System.Int32, mscorlib"> <data name="rbArNone.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</value>
</data> </data>
<data name="rbArNone.Text" xml:space="preserve"> <data name="rbArNone.Text" xml:space="preserve">
<value>&amp;Don't verify</value> <value>&amp;Don't verify, encode</value>
</data> </data>
<data name="rbArNone.ToolTip" xml:space="preserve"> <data name="rbArNone.ToolTip" xml:space="preserve">
<value>Don't contact the AccurateRip database for validation</value> <value>Don't contact the AccurateRip database for validation</value>
@@ -1341,30 +1374,6 @@
<data name="&gt;&gt;rbArNone.ZOrder" xml:space="preserve"> <data name="&gt;&gt;rbArNone.ZOrder" xml:space="preserve">
<value>4</value> <value>4</value>
</data> </data>
<data name="grpAccurateRip.Location" type="System.Drawing.Point, System.Drawing">
<value>238, 211</value>
</data>
<data name="grpAccurateRip.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 118</value>
</data>
<data name="grpAccurateRip.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="grpAccurateRip.Text" xml:space="preserve">
<value>AccurateRip</value>
</data>
<data name="&gt;&gt;grpAccurateRip.Name" xml:space="preserve">
<value>grpAccurateRip</value>
</data>
<data name="&gt;&gt;grpAccurateRip.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;grpAccurateRip.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;grpAccurateRip.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>0, 339</value> <value>0, 339</value>
</metadata> </metadata>
@@ -1437,6 +1446,33 @@
<data name="&gt;&gt;btnCUECreator.ZOrder" xml:space="preserve"> <data name="&gt;&gt;btnCUECreator.ZOrder" xml:space="preserve">
<value>0</value> <value>0</value>
</data> </data>
<data name="rbAPE.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="rbAPE.Location" type="System.Drawing.Point, System.Drawing">
<value>11, 51</value>
</data>
<data name="rbAPE.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="rbAPE.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="rbAPE.Text" xml:space="preserve">
<value>APE</value>
</data>
<data name="&gt;&gt;rbAPE.Name" xml:space="preserve">
<value>rbAPE</value>
</data>
<data name="&gt;&gt;rbAPE.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;rbAPE.Parent" xml:space="preserve">
<value>grpAudioOutput</value>
</data>
<data name="&gt;&gt;rbAPE.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>

View File

@@ -26,6 +26,7 @@ namespace JDP {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
System.Windows.Forms.Button btnCancel; System.Windows.Forms.Button btnCancel;
this.grpGeneral = new System.Windows.Forms.GroupBox(); this.grpGeneral = new System.Windows.Forms.GroupBox();
this.chkEmbedLog = new System.Windows.Forms.CheckBox();
this.numericWriteOffset = new System.Windows.Forms.NumericUpDown(); this.numericWriteOffset = new System.Windows.Forms.NumericUpDown();
this.chkAutoCorrectFilenames = new System.Windows.Forms.CheckBox(); this.chkAutoCorrectFilenames = new System.Windows.Forms.CheckBox();
this.chkPreserveHTOA = new System.Windows.Forms.CheckBox(); this.chkPreserveHTOA = new System.Windows.Forms.CheckBox();
@@ -65,7 +66,7 @@ namespace JDP {
this.lblTrackFilenameFormat = new System.Windows.Forms.Label(); this.lblTrackFilenameFormat = new System.Windows.Forms.Label();
this.lblSingleFilenameFormat = new System.Windows.Forms.Label(); this.lblSingleFilenameFormat = new System.Windows.Forms.Label();
this.txtSingleFilenameFormat = new System.Windows.Forms.TextBox(); this.txtSingleFilenameFormat = new System.Windows.Forms.TextBox();
this.chkEmbedLog = new System.Windows.Forms.CheckBox(); this.chkFillUpCUE = new System.Windows.Forms.CheckBox();
btnCancel = new System.Windows.Forms.Button(); btnCancel = new System.Windows.Forms.Button();
this.grpGeneral.SuspendLayout(); this.grpGeneral.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numericWriteOffset)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericWriteOffset)).BeginInit();
@@ -93,6 +94,7 @@ namespace JDP {
// //
// grpGeneral // grpGeneral
// //
this.grpGeneral.Controls.Add(this.chkFillUpCUE);
this.grpGeneral.Controls.Add(this.chkEmbedLog); this.grpGeneral.Controls.Add(this.chkEmbedLog);
this.grpGeneral.Controls.Add(this.numericWriteOffset); this.grpGeneral.Controls.Add(this.numericWriteOffset);
this.grpGeneral.Controls.Add(this.chkAutoCorrectFilenames); this.grpGeneral.Controls.Add(this.chkAutoCorrectFilenames);
@@ -105,6 +107,17 @@ namespace JDP {
this.grpGeneral.TabStop = false; this.grpGeneral.TabStop = false;
this.grpGeneral.Text = "General"; this.grpGeneral.Text = "General";
// //
// chkEmbedLog
//
this.chkEmbedLog.AutoSize = true;
this.chkEmbedLog.Location = new System.Drawing.Point(12, 78);
this.chkEmbedLog.Name = "chkEmbedLog";
this.chkEmbedLog.Size = new System.Drawing.Size(134, 17);
this.chkEmbedLog.TabIndex = 6;
this.chkEmbedLog.Text = "Embed log file as a tag";
this.toolTip1.SetToolTip(this.chkEmbedLog, "File should be in the same directory as source file and have a .log extension");
this.chkEmbedLog.UseVisualStyleBackColor = true;
//
// numericWriteOffset // numericWriteOffset
// //
this.numericWriteOffset.Location = new System.Drawing.Point(133, 20); this.numericWriteOffset.Location = new System.Drawing.Point(133, 20);
@@ -600,16 +613,15 @@ namespace JDP {
this.txtSingleFilenameFormat.TabIndex = 2; this.txtSingleFilenameFormat.TabIndex = 2;
this.txtSingleFilenameFormat.Text = "%F"; this.txtSingleFilenameFormat.Text = "%F";
// //
// chkEmbedLog // chkFillUpCUE
// //
this.chkEmbedLog.AutoSize = true; this.chkFillUpCUE.AutoSize = true;
this.chkEmbedLog.Location = new System.Drawing.Point(12, 78); this.chkFillUpCUE.Location = new System.Drawing.Point(12, 95);
this.chkEmbedLog.Name = "chkEmbedLog"; this.chkFillUpCUE.Name = "chkFillUpCUE";
this.chkEmbedLog.Size = new System.Drawing.Size(134, 17); this.chkFillUpCUE.Size = new System.Drawing.Size(187, 17);
this.chkEmbedLog.TabIndex = 6; this.chkFillUpCUE.TabIndex = 7;
this.chkEmbedLog.Text = "Embed log file as a tag"; this.chkFillUpCUE.Text = "Fill up missing CUE data from tags";
this.toolTip1.SetToolTip(this.chkEmbedLog, "File should be in the same directory as source file and have a .log extension"); this.chkFillUpCUE.UseVisualStyleBackColor = true;
this.chkEmbedLog.UseVisualStyleBackColor = true;
// //
// frmSettings // frmSettings
// //
@@ -697,6 +709,7 @@ namespace JDP {
private System.Windows.Forms.CheckBox chkArFixOffset; private System.Windows.Forms.CheckBox chkArFixOffset;
private System.Windows.Forms.Label label4; private System.Windows.Forms.Label label4;
private System.Windows.Forms.CheckBox chkEmbedLog; private System.Windows.Forms.CheckBox chkEmbedLog;
private System.Windows.Forms.CheckBox chkFillUpCUE;
} }
} }

View File

@@ -42,6 +42,7 @@ namespace JDP {
chkArNoUnverifiedAudio.Checked = _config.noUnverifiedOutput; chkArNoUnverifiedAudio.Checked = _config.noUnverifiedOutput;
chkArFixOffset.Checked = _config.fixOffset; chkArFixOffset.Checked = _config.fixOffset;
chkEmbedLog.Checked = _config.embedLog; chkEmbedLog.Checked = _config.embedLog;
chkFillUpCUE.Checked = _config.fillUpCUE;
} }
private void frmSettings_FormClosing(object sender, FormClosingEventArgs e) { private void frmSettings_FormClosing(object sender, FormClosingEventArgs e) {
@@ -94,6 +95,7 @@ namespace JDP {
_config.noUnverifiedOutput = chkArNoUnverifiedAudio.Checked; _config.noUnverifiedOutput = chkArNoUnverifiedAudio.Checked;
_config.fixOffset = chkArFixOffset.Checked; _config.fixOffset = chkArFixOffset.Checked;
_config.embedLog = chkEmbedLog.Checked; _config.embedLog = chkEmbedLog.Checked;
_config.fillUpCUE = chkFillUpCUE.Checked;
} }
private void chkArFixOffset_CheckedChanged(object sender, EventArgs e) private void chkArFixOffset_CheckedChanged(object sender, EventArgs e)

View File

@@ -123,10 +123,4 @@
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root> </root>