Skip to content

Commit d22eded

Browse files
committed
Add a way to pass arbitrary extra options to MultiDumper
1 parent cd33036 commit d22eded

File tree

4 files changed

+23
-5
lines changed

4 files changed

+23
-5
lines changed

LibSidWiz/MultiDumperWrapper.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,18 @@ public class MultiDumperWrapper: IDisposable
1717
private readonly int _loopCount;
1818
private readonly int _fadeMs;
1919
private readonly int _gapMs;
20+
private readonly string _extraOptions;
2021
private ProcessWrapper _processWrapper;
2122
private readonly HashSet<string> _allowedParameters;
2223

23-
public MultiDumperWrapper(string multiDumperPath, int samplingRate, int loopCount, int fadeMs, int gapMs)
24+
public MultiDumperWrapper(string multiDumperPath, int samplingRate, int loopCount, int fadeMs, int gapMs, string extraOptions)
2425
{
2526
_multiDumperPath = multiDumperPath;
2627
_samplingRate = samplingRate;
2728
_loopCount = loopCount;
2829
_fadeMs = fadeMs;
2930
_gapMs = gapMs;
31+
_extraOptions = extraOptions;
3032

3133
// We parse the usage info first to check for allowed parameters
3234
var helpText = GetOutputText("", true);
@@ -201,6 +203,11 @@ public IEnumerable<string> Dump(Song song, Action<double> onProgress)
201203
AddArgIfSupported(args, "play_length", (long)song.ForceLength.TotalMilliseconds);
202204
}
203205

206+
if (!string.IsNullOrEmpty(_extraOptions))
207+
{
208+
args.Append($" {_extraOptions}");
209+
}
210+
204211
_processWrapper = new ProcessWrapper(
205212
_multiDumperPath,
206213
args.ToString());

SidWiz/MultiDumperForm.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ public partial class MultiDumperForm : Form
1414

1515
public IEnumerable<string> Filenames { get; private set; }
1616

17-
public MultiDumperForm(string filename, string multiDumperPath, int samplingRate, int loopCount, int fadeMs, int gapMs)
17+
public MultiDumperForm(string filename, string multiDumperPath, int samplingRate, int loopCount, int fadeMs, int gapMs, string extraOptions)
1818
{
1919
_filename = filename;
20-
_wrapper = new MultiDumperWrapper(multiDumperPath, samplingRate, loopCount, fadeMs, gapMs);
20+
_wrapper = new MultiDumperWrapper(multiDumperPath, samplingRate, loopCount, fadeMs, gapMs, extraOptions);
2121
InitializeComponent();
2222
}
2323

SidWiz/SidWizPlusGUI.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ public class ProgramSettings
6363
[Description("Default is 1000 (1s). Requires a build of MultiDumper that supports this!")]
6464
[DefaultValue(1000)]
6565
public int MultiDumperGapMs { get; set; } = 1000;
66+
[Category("MultiDumper")]
67+
[DisplayName("Extra settings")]
68+
[Description("Extra settings to pass to MultiDumper")]
69+
[DefaultValue("")]
70+
public string MultiDumperExtraSettings { get; set; } = "";
6671

6772
[Category("SidPlay")]
6873
[Editor(typeof(FileNameEditor), typeof(UITypeEditor))]
@@ -377,7 +382,7 @@ private void LoadMultiDumper(string filename)
377382
// Normalize path
378383
filename = Path.GetFullPath(filename);
379384

380-
using var form = new MultiDumperForm(filename, _programSettings.MultiDumperPath, _programSettings.MultiDumperSamplingRate, _programSettings.MultiDumperLoopCount, _programSettings.MultiDumperFadeMs, _programSettings.MultiDumperGapMs);
385+
using var form = new MultiDumperForm(filename, _programSettings.MultiDumperPath, _programSettings.MultiDumperSamplingRate, _programSettings.MultiDumperLoopCount, _programSettings.MultiDumperFadeMs, _programSettings.MultiDumperGapMs, _programSettings.MultiDumperExtraSettings);
381386
if (form.ShowDialog(this) != DialogResult.OK || form.Filenames == null)
382387
{
383388
return;

SidWizPlus/Program.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,11 @@ private class Settings
165165
// ReSharper disable once IdentifierTypo
166166
public int MultidumperGapMs { get; set; }
167167

168+
// ReSharper disable once StringLiteralTypo
169+
[Option("multidumperoptions", Required = false, HelpText = "Extra arguments for MultiDumper. Surround value with quotes and start with a space, e.g. \" --default_filter\", to avoid conflicts with other parameters.", Default = "")]
170+
// ReSharper disable once IdentifierTypo
171+
public string MultidumperOptions { get; set; }
172+
168173
// ReSharper disable once StringLiteralTypo
169174
[Option("backgroundcolor", Required = false, HelpText = "Background color, can be hex or a .net color name", Default = "black")]
170175
public string BackgroundColor { get; set; }
@@ -659,7 +664,8 @@ private static void RunMultiDumper(Settings settings)
659664
settings.MultidumperSamplingRate,
660665
settings.MultidumperLoopCount,
661666
settings.MultidumperFadeOutMs,
662-
settings.MultidumperGapMs);
667+
settings.MultidumperGapMs,
668+
settings.MultidumperOptions);
663669
var song = wrapper.GetSongs(settings.VgmFile).First();
664670
var filenames = wrapper.Dump(song, d => Console.Write($"\r{d:P0}"));
665671
settings.InputFiles = filenames.ToList();

0 commit comments

Comments
 (0)