Skip to content
Maxim edited this page Jan 20, 2022 · 26 revisions

Usage guide

Extra programs

In order to render videos, you will need a copy of FFMPEG. You can download builds at https://ffmpeg.zeranoe.com/builds/.

In order to automatically convert some emulated video game music files like:

  • VGM/VGZ
  • NSF
  • NSFE
  • SPC
  • GBS
  • AY
  • GYM
  • SAP
  • KSS
  • HES

...you will need a copy of MultiDumper. You can download a build I made here: https://github.com/maxim-zhao/multidumper/releases/ This custom version is necessary to enable additional configurable behaviour not found in the "original" version:

  • Sampling rates other than 44100Hz
  • Loop count for formats that have length data
  • Playback length for formats that do not have length data
  • Fade-out time

In order to automatically convert C64 SID emulated video game music files, you will need a copy of SidPlayFP.

In order to not-automatically convert modules (MOD, XM, S3M, MPTM, ...), I recommend OpenMPT. It lets you convert files using its "Lossless export" option, in either channel or instrument modes.

For MIDI files, I wrote a tool called MIDISplit which can convert a single MIDI file into many files, each containing only one instrument with no polyphony. You can then use a program like TiMidity++ to convert them to WAV files. I suggest you look for alternative soundfonts like SC55Soundfont. Again, this is not automatic.

Commandline

The commandline version of SidWizPlus has a reasonably extensive usage guide built in. Note however that it has some functionality not found in the GUI, and also omits some functionality found in the GUI. You probably want to use the GUI.

GUI

Channels

Start with the channels tab. You should either have the files you want to draw in WAV format, or use the built-in MultiDumper/SidPlayFP integration to open a VGM, NSF, GBS, AY, SPC, SID, etc file. Use the first toolbar button to open your file(s).

If you load an emulated audio file, you will be prompted to locate the necessary program the first time. If the file has more than one song in it then you can select the one you want. It will then generate WAV files in the same directory as the file you chose.

Once you have some channels loaded, you will see a preview. You can move the trackbar below the image to see the view at different times during the sound:

Once it has focus, you can also see:

  • The ticks correspond to 1s intervals
  • Pressing /// moves by one frame
  • Pressing Page Up/Page Down moves by one second

You may find (if loading an emulated file) that some of the channels are silent. You can remove these by right-clicking on them or from the "remove channel" dropdown:

You can also right-click to perform other actions on the channels, or left-click a channel to view its settings and use the toolbar to perform the same actions.

Toolbar

  • Add a file
    • You already used this, it's the main way to get data in.
  • Add an empty channel
    • Can be useful to add "placeholder" empty channels. You can then load data into the channel if wanted.
  • Move left
  • Move right
    • Changes the ordering of the channels.
  • Clone channel
    • Duplicates a channel. Can be useful if you want to copy the configuration from an existing channel, and then change the filename.
  • Split stereo channel
    • If the channel data has some stereo separation, this will convert it into two channels, for the left and right sides respectively. If there is no stereo separation then it will let you know and offer to just clone the channel anyway.
  • Copy channel settings
  • Paste channel settings
    • Copies and pastes the selected channel's settings via the system clipboard. You can also paste this into a text editor if you want to edit it - removing lines will make the data leave that setting unchanged when you paste.
  • Copy settings to all channels
    • Sets all channels' settings to match the selected one
  • Save as default settings
    • All channels added in future will have settings based on the current one
  • Reset to default settings
    • Resets the channel settings to the defaults
  • Remove labels
    • Blanks all channels' labels
  • Remove channel
    • Allows you to remove one, all, or just the silent channels.

Left-clicking a channel populates the grid with the properties of the channel; clicking on a property gives you some guidance on what it does.

Adjustment

  • Crop
    • Set this to "True" to constrain anything drawn to its rectangle. This isn't necessary unless the Scale is set such that peaks reach above 100%.
  • Scale
    • This affects the vertical scaling of the waveform. Note that waveforms are not restricted from drawing outside their usual area if you set this to a large value.
  • ViewWidthInMilliseconds
  • ViewWidthInSamples
    • This affects the width of the sample you see, but does not affect what part of the data is used for inter-frame alignment.

Appearance

  • BackgroundColor
    • The background of the channel. Transparent by default.
    • You can enter colours using the picker or by typing. Here's some examples:
      • Red - .net colour names
      • #006699 - HTML style hex codes
      • 0, 102, 153 - decimal RGB
      • #80006699 - HTML style hex codes with alpha transparency
      • 128, 0, 102, 153 - decimal RGB with alpha transparency
  • BorderColor, BorderWidth
    • How the border is drawn. Note that borders overlap each other.
  • BorderEdges
    • If set to false, borders won't be drawn on the outside edges. This is useful when there are margins applied.
  • FillBase, FillColor
    • The waveform fill colour and baseline for what gets filled. Colour is Transparent by default. You can use this to get "solid" wave shapes. The base position of 0 corresponds to the centre line; -1 is the bottom of the channel's area, +1 is the top. Other values allow different effects.
  • Label
    • The channel label. This is automatically guessed from the filename when you load it.
  • LabelAlignment, LabelColor, LabelFont, LabelMargins
    • Settings for how the label is drawn.
  • LineColor, LineWidth
    • Settings for how the waveform line is drawn.
  • RenderIfSilent
    • If set to True, silent channels are drawn (as a flat line). If False, silent channels render as a message to let you know the channel is silent. If the channel has any sound at all, this has no effect.
  • SmoothLines
    • Set to True to draw the wave lines with anti-aliasing; False to draw lines "pixelated". The latter is faster but (arguably) looks worse.
  • ZeroLineColor, ZeroLineWidth
    • Settings for a line drawn at the centre point of the wave.

Data

  • ErrorMessage
    • Will be populated with any errors when loading the file.
  • Filename
    • The file used for this channel. You can load a new WAV file from here.
  • HighPassFilter
    • If set to false, the audio is not filtered at all. If set to true, a high pass filter at 20Hz is applied. This will act to cancel any DC offset - but will change some "flat" wave shapes into slopes. This is especially useful when the waveform is not centred on the zero line, which is common in some FM instruments.
  • Length, Max, SampleRate
    • Details about the loaded data. These are not editable.
  • Side
    • Allows you to select the left or right channels for stereo files. Has no effect if the file is mono.

Triggering

  • Algorithm
    • This lets you select the algorithm used for aligning the waveform. Each algorithm works by looking at a "window" into the data, and then tries to decide which point in that window to draw at the centre of the drawn rectangle for the channel.
      • LibSidWiz.Triggers.AutoCorrelationTrigger
        • Don't use this. It doesn't work.
      • LibSidWiz.Triggers.BiggestPositiveWaveAreaTrigger
        • Scans the window for the largest area above the centre line, and aligns to the left edge of the largest one found. Partial areas are not used.
      • LibSidWiz.Triggers.BiggestWaveAreaTrigger
        • Scans the window for entire waveforms (enclosing an area above and then below the centre line), calculates the area of each, and aligns to the left edge of the largest one found. Partial areas are not used.
      • LibSidWiz.Triggers.MiddleWidest
        • Scans the window for entire waveforms, then aligns to the left edge of the widest (lowest frequency) one found. If more than one of the same width is found, the one closest to the middle of the window is used. This corresponds to SidWiz's "alternate" algorithm.
      • LibSidWiz.Triggers.NullTrigger
        • Makes no attempt to align anything at all. Use this if you want to draw like a "normal" waveform renderer.
      • LibSidWiz.Triggers.PeakSpeedTrigger
        • Scans the window for the highest point, then aligns to the closest zero point before that. If there is more than one peak at the same value, the one where the zero point is closest is chosen.
      • LibSidWiz.Triggers.RisingEdgeTrigger
        • Aligns to the first point in the window where the wave goes from below to above the zero line.
      • LibSidWiz.Triggers.WidestWaveTrigger
        • Scans the window for entire waveforms, then aligns to the left edge of the widest (lowest frequency) one found. If more than one of the same width is found, the leftmost is used. This is almost identical to the MiddleWidest algorithm.
    • ExternalTriggerFilename
      • Allows you to specify a different wave file to use for triggering than rendering. This can be useful for complex FM waveforms that "jank" with the other algorithms, but requires you to have a way to render the channel with a basic waveform.
    • InvertedTrigger
      • Makes the trigger algorithm invert its sense of what is "above" and "below" the zero line.
    • TriggerLookaheadFrames
      • Determines the size of the "window". 0 means "only look at this frame's data" - but this can cause desynchronisation on low frequencies (or high frame rates). 1 means the algorithm can look ahead into the next frame's data, 2 means it can look 2 frames ahead, etc. It is best to leave this at 0 most of the time.
    • TriggerLookaheadOnFailureFrames
      • Determines the size of the "window" used if the "normal" one fails (see TriggerLookaheadFrames above). Set this to a small value to enable better synchronisation on low tones which may not fit in a single frame, especially if you have a higher frame rate.

Layout

  • Width
  • Height
    • The dimensions of the video
  • Columns
    • Determines how the channels are laid out. You normally need more columns when the channel count gets high.
    • Channels are laid out left to right, then top to bottom.
    • You can use empty channels to add padding if wanted.
  • Margins
    • Applies some margins around the edge of the area used for drawing waveforms. This is most useful if you have a background image adding something around the wave area.
  • Vertical scaling/Apply
    • Use this to apply a uniform Scale value to all channels, such that the largest amplitude across all channels is set to the specified percentage of the height - 100% means the waveforms will be drawn as large as possible without extending outside their areas.

Background

You can select a background colour or an image to use. The image is stretched to fill the whole video. This can be useful to add branding or song info to the video.

Audio

  • Autogenerate master audio file
    • If checked, the program will mix the input channels together to produce the final audio for the video. If unchecked, you can select the file to use yourself. This can be useful for emulated audio systems where the channels are not simply mixed together.
  • Apply ReplayGain
    • If set, the master audio will have its volume normalised. You can't use this when you use your own master audio.
  • Location
    • Click to set the master audio file location.

Video

  • Frame rate
    • Sets the video frame rate. This also affects the amount of data the triggering algorithm uses.
  • Preview
    • Useful for trial runs (at a frameskip value of 1) and also for seeing the progress of your video render (generally at a higher frameskip, e.g. 60)
  • FFMPEG
    • Enables rendering to a video file, via FFMPEG. You can set the location and also add extra parameters for the commandline. The default settings get you H.264 video in the YUV444 colourspace and AAC audio at 128kb/s.

Settings

You can load and save all the settings (except the helper program locations) here. The files are simple JSON so you can edit them in a text editor - any settings not specified in the file will be left unaffected.

Programs

Here you can manage the paths to the tools used, and some options for how they are invoked.

  • FFMPEG
    • Extra parameters: These are injected into the commandline after the inputs are defined, but before the output is. You can use this to tweak aspects of the encoding process.
      • You can add -pix_fmt yuv422p or -pix_fmt yuv420p to enable common types of chroma subsampling which will reduce the video size (if you are using any colours) but will produce some blurriness on the colours
      • See the FFMPEG docs for parameters you might use to alter the encoding parameters - e.g. the crf and preset parameters
      • You can also use the -c:v parameter to select a different video codec, e.g. a hardware accelerated encoder for your system (although note that these tend to be lower quality).
  • MultiDumper These settings only take effect if using a version of MultiDumper that supports them.
    • Fade out time (ms): the length of time for a fade-out at the end of a looping track
    • Loop count: the number of times to play any looped section in a track
    • Sampling rate: the sampling rate of the WAV files produced when converting from other formats using MultiDumper.
  • SidPlay