Configuration File

  • The config.yaml file serves as the layout specification for the Shaders.
  • Used to Define:-
    • Audio Objects
    • Shader Objects , belonging to an Audio object

The YAML Configuration file has the following structure:


audios:
    - name: audio1
      pipewire-settings:
        .
        .
        .
      audio-overrides:
        .
        .
        .
      shaders:
        - name: linear
          class-name: linear1
          .
          .
          .
          audio-overrides:
            .
            .
            .
          paintables:
            - class-name: paintable_1
              .
              .
              .
          post-processing:
            - name: glow
              passes: 1
            .
            .
            . 
          overrides:
            - visualiserMode=1
            .
            .
            .
    - name: audio2
    .
    .
    .

PipeWire Settings Represents Audio Capturing properties, such as Sample Rate and Buffer Size
PropertyDescription
sample-rateSample Rate that will be used for capturing audio. Consumed by PipeWire.channelsNumber of channels that specify Mono / Stereo capturing.
fft-scaleFactor for how to scale higher frequencies. Used in a linear equation which is multiplied by the result of the fft transformation.
fft-cutOffCut-Off for the Bass end of the audio data when scaling frequencies. Higher values cause more of the bass frequencies to be skipped when scaling.
apply-fftWhether to apply FFT to the captured Audio. Set False for Waveform Audio Output.
sample-sizeRepresents the amount of audio samples that get captured at once. Consumed by PipeWire.
fragment-sizeRepresents the actual amount of audio samples that get sent to the Shaders for Visualisation.
target-objectSpecifies the Target Object to which the PipeWire Stream will be connected. Consumed by PipeWire.
capture-micEnable if microphone input audio needs to be captured. Consumed by PipeWire.
audio-formatSpecifies the Audio Format in which audio will be captured. Consumed by PipeWire.

Channels Map Handles mapping for each Audio Channel
PropertyDescription
leftChannel to map to the Left Audio Channel. 0 : Left Channel 1 : Right Channel
rightChannel to map to the Right Audio Channel. 0 : Left Channel 1 : Right Channel

Smooth Settings Represents various paramters used to smoothen the Audio Output
PropertyDescription
round-formulaThe type of formula to use for weighting values when smoothing. 0 : Circular, heavily rounded points 1 : Sinusoidal, rounded at both low and high weighted values like a sine wave 2 : Linear, not rounded at all; linear distance
sample-modeSampling Mode for Smoothing. 0 : averages all the inputs in the sample range for a given point. Produces smooth output, but peaks are not well represented. 1 : obtains the best value from the closest peak in the sample range. Very accurate peaks, but output is jagged and sporadic. 2 : uses the results from both 0 and 1 sample modes, with the weight provided in sample-hybrid-weight .
sample-hybrid-weightShould be provided in the range (0, 1). Higher values favor averaged results. For sample-mode : 2 only.
sample-scaleFactor used to scale frequencies. Lower values allows lower frequencies to occupy more space.
sample-rangeThe frequency range to sample. 1.0 would be the entire FFT output, and lower values reduce the displayed frequencies in a log-like scale.
smooth-factorLarger values mean more smoothing in the output, however high values can be expensive to compute.adjacent-
sample-numsThe Number of samples that are taken from the left and right of the current audio sample, that are also included in the current audio sample. The final result is then averaged based on the number of averaged samples.

Gravity Settings Represents the amount of time for which the captured Audio Data 'stays' in the buffer
PropertyDescription
gravity-stepSpecifies the 'Gravity' of the Audio. Higher values means faster drops.
average-framesNumber of Frames to queue and run through the average function. Increasing this value will create latency between the audio input and the Visualiser Output, but will make for much smoother results.

Audio Overrides Represents Audio Transformation properties
PropertyDescription
min-frequencyMinimum Frequency for the input Audio.
max-frequencyMaximum Frequency for the input Audio. Should be greater than min-frequency , and smaller than or equal to sample-rate / 2.0
reduce-frequency-rangeSpecifies whether the input Audio Range corresponds to the supplied Minimum and Maximum Frequencies. If False, the audio input for the Shaders will always have fragment-size length, regardless of the Minimum / Maximum Frequencies.
smooth-audioSpecifies whether the audio should be smoothed by the Smoothing Function, conforming to the smooth-settings parameters.
channels-mapUsed to map the Audio Channels. Left Channel can be mapped to the Right, and vice-versa. Or, Both Channels can be mapped to either the Left or the Right Channel.
smooth-settingsParameters used while Smoothing the audio input values for the Shaders.
gravity-settingsParameters used to specify the responsiveness and the latency of audio input for the Shaders.

Post-Processing Object Represents the Post-Processing Shader.
PropertyDescription
nameThe name of the Post-Processing Shader / Effect to apply
passesThe number of times the effect gets applied

Paintable Object Represents the layout properties for the Paintable. It is essentially a 'copy' of a Shader that displays the same output as the Shader.
PropertyDescription
class-nameClass Name to identify the Shader for Styling purposes
width, heightBounds of the Window
layerSpecifies the placement of the Shader on the 'Z Axis' on the screen, via the Wayland Layer Shell Protocol. Supported Types are Background , Bottom , Top , and Overlay
exclusive-layerWhether to enable Exclusive Layer for this Window.
anchorsEdges to anchor to
marginsMargin from anchored Edges

Audio Object Represents various Audio Capturing and Transformation properties
PropertyDescription
nameName of the Audio Capturing thread
pipewire-settingsRepresents Audio Capturing properties, such as Sample Rate and Buffer Size . Consumed by PipeWire
audio-overridesRepresents Audio Transformation properties, such as minimum / maximum frequency , smoothing parameters, and averaging / gravity parameters
shadersRepresents the list of Shaders that take in as input the transformed Audio values for visualisation

Shader Object Represents the layout properties of the Shader Program that gets displayed in a Window.
PropertyDescription
nameName of the Shader Program to display
class-nameClass Name to identify the Shader for Styling purposes
fpsTarget Framerate
width, heightBounds of the Window
layerSpecifies the placement of the Shader on the 'Z Axis' on the screen, via the Wayland Layer Shell Protocol. Supported Types are Background , Bottom , Top , and Overlay
exclusive-layerWhether to enable Exclusive Layer for this Window.
image-texturesThe number of Image Textures that should be enabled for this Shader
atomic-texturesThe number of Atomic Image Textures that should be enabled for this Shader
anchorsEdges to anchor to
marginsMargin from anchored Edges
overridesGLSL Overrides for specifying different #define attribute substitutions
audio-overridesAudio Overrides that deviate from the 'Global' Audio Overrides (that is, Overrides that belong to the parent Audio Object for the current Shader)
post-processingList of Post-Processing Effects that get applied one after the other
paintablesList of 'Copies' of the Current Shader that can be displayed in another Window