From 890a0a2ed927a1c37578778c46e4b66cb88772cf Mon Sep 17 00:00:00 2001 From: Daniel Napora Date: Wed, 18 Feb 2026 14:58:56 +0100 Subject: [PATCH] modern config for cava --- common/cava/config | 262 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 230 insertions(+), 32 deletions(-) diff --git a/common/cava/config b/common/cava/config index 034fc0d..d93edcf 100644 --- a/common/cava/config +++ b/common/cava/config @@ -1,7 +1,13 @@ -## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting. -## Modified by benChile for Mabox +## Configuration file for CAVA. + +# Lines starting with ; show config parameters and default values. +# Remove the ; to change parameters. + [general] +# Auto reload config if the configuration file has changed. 1 = on, 0 = off. +; live-config = 0 + # Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0 ; mode = normal @@ -16,52 +22,82 @@ framerate = 144 # Manual sensitivity in %. If autosens is enabled, this will only be the initial value. # 200 means double height. Accepts only non-negative values. -sensitivity = 100 +; sensitivity = 100 -# The number of bars (0-200). 0 sets it to auto (fill up console). +# The number of bars (0-512). 0 sets it to auto (fill up console). # Bars' width and space between bars in number of characters. ; bars = 0 -bar_width = 3 +bar_width = 2 bar_spacing = 1 +# bar_height is only used for output in "noritake" format +; bar_height = 32 +# For SDL width and space between bars is in pixels, defaults are: +; bar_width = 20 +; bar_spacing = 5 + +# sdl_glsl have these default values, they are only used to calculate max number of bars. +; bar_width = 1 +; bar_spacing = 0 + +# ceter bars in terminal, if there is space. +; center_align = 1 + +# max height of bars in terminal, in percent of terminal height. +; max_height = 100 # Lower and higher cutoff frequencies for lowest and highest bars # the bandwidth of the visualizer. # Note: there is a minimum total bandwidth of 43Mhz x number of bars. -# Cava will automatically increase the higher cutoff if a too low band is specified. +# Cava will automatically increase the higher cutoff frequency if needed to satisfy the minimum bandwidth. ; lower_cutoff_freq = 50 ; higher_cutoff_freq = 10000 - # Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and # only check for input once per second. Cava will wake up once input is detected. 0 = disable. -sleep_timer = 4 +; sleep_timer = 0 [input] -# Audio capturing method. Possible methods are: 'pulse', 'alsa', 'fifo', 'sndio' or 'shmem' -# Defaults to 'pulse', 'alsa' or 'fifo', in that order, dependent on what support cava was built with. +# Audio capturing method. Possible methods are: 'fifo', 'portaudio', 'pipewire', 'alsa', 'pulse', 'sndio', 'oss', 'jack' or 'shmem' +# Defaults to 'oss', 'pipewire', 'sndio', 'jack', 'pulse', 'alsa', 'portaudio' or 'fifo', in that order, dependent on what support cava was built with. +# On Mac it defaults to 'portaudio' or 'fifo' +# On windows this is automatic and no input settings are needed. # # All input methods uses the same config variable 'source' # to define where it should get the audio. # -# For pulseaudio 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink +# For pulseaudio and pipewire 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink # (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them). # +# For pipewire 'source' will be the object name or object.serial of the device to capture from. +# Both input and output devices are supported. To capture the monitor source of a sink node, append '.monitor' to the sink's object name. +# # For alsa 'source' will be the capture device. # For fifo 'source' will be the path to fifo-file. # For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address -method = pulse +# +# For sndio 'source' will be a raw recording audio descriptor or a monitoring sub-device, e.g. 'rsnd/2' or 'snd/1'. Default: 'default'. +# README.md contains further information on how to setup CAVA for sndio. +# +# For oss 'source' will be the path to a audio device, e.g. '/dev/dsp2'. Default: '/dev/dsp', i.e. the default audio device. +# README.md contains further information on how to setup CAVA for OSS on FreeBSD. +# +# For jack 'source' will be the name of the JACK server to connect to, e.g. 'foobar'. Default: 'default'. +# README.md contains further information on how to setup CAVA for JACK. +# +; method = pulse ; source = auto +method = pipewire +source = auto + ; method = alsa ; source = hw:Loopback,1 ; method = fifo ; source = /tmp/mpd.fifo -; sample_rate = 44100 -; sample_bits = 16 ; method = shmem ; source = /squeezelite-AA:BB:CC:DD:EE:FF @@ -69,30 +105,93 @@ method = pulse ; method = portaudio ; source = auto +; method = sndio +; source = default + +; method = oss +; source = /dev/dsp + +; method = jack +; source = default + +# The options 'sample_rate', 'sample_bits', 'channels' and 'autoconnect' can be configured for some input methods: +# sample_rate: fifo, pipewire, sndio, oss +# sample_bits: fifo, pipewire, sndio, oss +# channels: sndio, oss, jack +# autoconnect: jack +# Other methods ignore these settings. +# For pipewire, sample_rate will default to 48000, for all other input methods, sample_rate will default to 44100. +# +# For 'sndio' and 'oss' they are only preferred values, i.e. if the values are not supported +# by the chosen audio device, the device will use other supported values instead. +# Example: 48000, 32 and 2, but the device only supports 44100, 16 and 1, then it +# will use 44100, 16 and 1. +# +# +# The 'pipewire' input method has three options to control linking and mixing: +# active: Force the node to always process. Useful for monitoring sources when no other application is active. +# remix: Allow pipewire to remix audio channels to match cava's channel count. Useful for surround sound. +# virtual: Set the node to virtual, to avoid recording notifications from the DE. +# +; sample_rate = 44100 +; sample_bits = 16 +; channels = 2 +; autoconnect = 2 +; active = 1 +; remix = 1 +; virtual = 1 + [output] -# Output method. Can be 'ncurses', 'noncurses' or 'raw'. -# 'noncurses' uses a custom framebuffer technique and draws only changes -# from frame to frame. 'ncurses' is default if supported +# Output method. Can be 'ncurses', 'noncurses', 'raw', 'noritake', 'sdl' +# or 'sdl_glsl'. +# 'noncurses' (default) uses a buffer and cursor movements to only print +# changes from frame to frame in the terminal. Uses less resources and is less +# prone to tearing (vsync issues) than 'ncurses'. # # 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data # stream of the bar heights that can be used to send to other applications. -# 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above. -method = ncurses +# 'raw' defaults to 1024 bars stereo (512 bars mono), which can be adjusted in the 'bars' option above. +# +# 'noritake' outputs a bitmap in the format expected by a Noritake VFD display +# in graphic mode. It only support the 3000 series graphical VFDs for now. +# +# 'sdl' uses the Simple DirectMedia Layer to render in a graphical context. +# 'sdl_glsl' uses SDL to create an OpenGL context. Write your own shaders or +# use one of the predefined ones. +; method = noncurses + +# Orientation of the visualization. Can be 'bottom', 'top', 'left', 'right' or +# 'horizontal'. Default is 'bottom'. 'left and 'right' are only supported on sdl +# and ncruses output. 'horizontal' (bars go up and down from center) is only supported +# on noncurses output. +# Note: many fonts have weird or missing glyphs for characters used in orientations +# other than 'bottom', which can make output not look right. +; orientation = bottom # Visual channels. Can be 'stereo' or 'mono'. # 'stereo' mirrors both channels with low frequencies in center. # 'mono' outputs left to right lowest to highest frequencies. # 'mono_option' set mono to either take input from 'left', 'right' or 'average'. +# set 'reverse' to 1 to display frequencies the other way around. channels = mono mono_option = average +; reverse = 0 -# Raw output target. A fifo will be created if target does not exist. +# Only valid if orientation is set to 'horizontal'. +# Set 'horizontal_stereo' to 1 to have left channel bars at top and right channel at bottom. +# Set 'left_bottom' to 0 to have right channel at top and left channel at bottom. +; horizontal_stereo = 0 +; left_bottom = 1 + +# Raw output target. +# On Linux, a fifo will be created if target does not exist. +# On Windows, a named pipe will be created if target does not exist. ; raw_target = /dev/stdout # Raw data format. Can be 'binary' or 'ascii'. -data_format = binary +; data_format = binary # Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530). ; bit_format = 16bit @@ -105,20 +204,80 @@ data_format = binary ; bar_delimiter = 59 ; frame_delimiter = 10 +# sdl window size and position. -1,-1 is centered. +; sdl_width = 1024 +; sdl_height = 512 +; sdl_x = -1 +; sdl_y= -1 +; sdl_full_screen = 0 + +# set label on bars on the x-axis. Can be 'frequency' or 'none'. Default: 'none' +# 'frequency' displays the lower cut off frequency of the bar above. +# Only supported on ncurses and noncurses output. +; xaxis = none + +# enable synchronized sync. 1 = on, 0 = off +# removes flickering in alacritty terminal emulator. +# defaults to off since the behaviour in other terminal emulators is unknown +; synchronized_sync = 0 + +# Shaders for sdl_glsl, located in $HOME/.config/cava/shaders +; vertex_shader = pass_through.vert + +# Default spectrum shader +# default value: bar_spectrum.frag +; fragment_shader = bar_spectrum.frag + +# other styles shaders +; fragment_shader = eye_of_phi.frag +; fragment_shader = northern_lights.frag +; fragment_shader = spectrogram.frag +; fragment_shader = winamp_line_style_spectrum.frag + +# Orion shaders (use with: method = sdl_glsl) +# Static Orion +; fragment_shader = orion_circle.frag +# Rotating Orion +; fragment_shader = orion_circle_rotate.frag +# Orion saturn subring +; fragment_shader = orion_saturn_subring.frag +# Orion saturn core +; fragment_shader = orion_saturn_core.frag + +# For glsl output mode, keep rendering even if no audio. 1 = on, 0 = off. Default: 0 +# Enable for animated shaders so time-based effects keep updating. +; continuous_rendering = 0 + +# SDL_GLSL only: gain applied to bar amplitudes before sending to shaders, in percent. Default: 100 +# 0 = mute, 100 = unchanged, >100 = amplify (shader input is clamped to the [0..1] range). +; sdl_glsl_gain = 100 + +# disable console blank (screen saver) in tty. 1 = on, 0 = off. Default: 0 +# (Not supported on FreeBSD) +; disable_blanking = 0 + +# show a flat bar at the bottom of the screen when idle, 1 = on, 0 = off +; show_idle_bar_heads = 1 + +# show waveform instead of frequency spectrum, 1 = on, 0 = off +; waveform = 0 [color] # Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow. # Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires -# ncurses output method and a terminal that can change color definitions such as Gnome-terminal or rxvt. -# if supported, ncurses mode will be forced on if user defined colors are used. +# a terminal that can change color definitions such as Gnome-terminal or rxvt. # default is to keep current terminal color -; background = white -foreground = '#DDDDDD' +; background = default +foreground = '#00FF00' -# Gradient mode, only hex defined colors (and thereby ncurses mode) are supported, -# background must also be defined in hex or remain commented out. 1 = on, 0 = off. +# SDL and sdl_glsl only support hex code colors, these are the default: +; background = '#111111' +; foreground = '#33ffff' + +# Gradient mode, only hex defined colors are supported, +# background must also be defined in hex or remain commented out. 1 = on, 0 = off. # You can define as many as 8 different colors. They range from bottom to top of screen gradient = 1 gradient_count = 3 @@ -127,30 +286,69 @@ gradient_color_2 = '#FFFF00' gradient_color_3 = '#FF0000' +; gradient = 0 +; gradient_color_1 = '#59cc33' +; gradient_color_2 = '#80cc33' +; gradient_color_3 = '#a6cc33' +; gradient_color_4 = '#cccc33' +; gradient_color_5 = '#cca633' +; gradient_color_6 = '#cc8033' +; gradient_color_7 = '#cc5933' +; gradient_color_8 = '#cc3333' + +# Horizontal is only supported on noncurses output. +# Only one color will be calculated per bar. +; horizontal_gradient = 0 +; horizontal_gradient_color_1 = '#c45161' +; horizontal_gradient_color_2 = '#e094a0' +; horizontal_gradient_color_3 = '#f2b6c0' +; horizontal_gradient_color_4 = '#f2dde1' +; horizontal_gradient_color_5 = '#cbc7d8' +; horizontal_gradient_color_6 = '#8db7d2' +; horizontal_gradient_color_7 = '#5e62a9' +; horizontal_gradient_color_8 = '#434279' + +# If both vertical and horizontal gradient is enabled, vertical will be blended in this direction. +# Can be 'up', 'down', 'left' or 'right'. 'up' means the vertical gradient will be blended in from +# bottom to top. I.e. the bottom will be only the horizontal +# and top will be only the color of the vertical gradient. +; blend_direction = 'up' + +# use theme file instead of defining colors in this file +# themes are located in $HOME/.config/cava/themes +; theme = 'none' + [smoothing] # Percentage value for integral smoothing. Takes values from 0 - 100. # Higher values means smoother, but less precise. 0 to disable. -integral = 70 +# DEPRECATED as of 0.8.0, use noise_reduction instead +; integral = 77 # Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable. -monstercat = 1 +; monstercat = 0 ; waves = 0 # Set gravity percentage for "drop off". Higher values means bars will drop faster. # Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off". -gravity = 400 - +# DEPRECATED as of 0.8.0, use noise_reduction instead +; gravity = 100 # In bar height, bars that would have been lower that this will not be drawn. +# DEPRECATED as of 0.8.0 ; ignore = 0 +# Noise reduction, int 0 - 100. default 77 +# the raw visualization is very noisy, this factor adjusts the integral and gravity filters to keep the signal smooth +# 100 will be very slow and smooth, 0 will be fast but noisy. +noise_reduction = 77 + [eq] # This one is tricky. You can have as much keys as you want. -# Remember to uncomment more then one key! More keys = more precision. +# Remember to uncomment more than one key! More keys = more precision. # Look at readme.md on github for further explanations and examples. ; 1 = 1 # bass ; 2 = 1