remove web and small improvements

This commit is contained in:
2023-11-28 02:33:26 +01:00
parent 344fe990af
commit e079294b11
8 changed files with 80 additions and 549 deletions
-118
View File
@@ -1,138 +1,20 @@
## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting.
[general]
# Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0
; mode = normal
# Accepts only non-negative values.
framerate = 60
# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off
# new as of 0.6.0 autosens of low values (dynamic range)
# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0
; autosens = 1
; overshoot = 20
# Manual sensitivity in %. Autosens must be turned off for this to take effect.
# 200 means double height. Accepts only non-negative values.
sensitivity = 1000
# The number of bars (0-200). 0 sets it to auto (fill up console).
# Bars' width and space between bars in number of characters.
;bars = 128
bars = 2
; bar_width = 2
; bar_spacing = 1
# 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.
; lower_cutoff_freq = 50
; higher_cutoff_freq = 10000
[input]
# Audio capturing method. Possible methods are: 'pulse', 'alsa' or 'fifo'.
# Defaults to 'pulse', 'alsa' or 'fifo', in that order, dependent on what support cava was built with.
#
# 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
# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them).
#
# For alsa 'source' will be the capture device.
# For fifo 'source' will be the path to fifo-file.
; method = pulse
; source = 19
; method = alsa
; source = hw:Loopback,1
; method = fifo
; source = /tmp/mpd.fifo
[output]
# Ouput method. Can be 'ncurses', 'noncurses' or 'raw'.
# 'noncurses' is for systems that does not suport ncurses.
# 'raw' is a 16 bit 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 = raw
# Visual channels. Can be 'stereo' or 'mono'.
# 'stereo' mirrors both channels with low frequencies in center.
# 'mono' averages both channels and outputs left to right lowest to highest frequencies.
; channels = stereo
# Raw output target. A fifo will be created if target does not exist.
; raw_target = /dev/stdout
# Raw data format. Can be 'binary' or 'ascii'.
data_format = ascii
# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530).
; bit_format = 8bit
# Ascii max value. In 'ascii' mode range will run from 0 to value specified here
ascii_max_range = 1000
# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters.
# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)).
; bar_delimiter = 59
; frame_delimiter = 10
[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 a
# terminal that can change color definitions such as Gnome-terminal or rxvt.
; background = black
foreground = red
# Gradient mode, only hex defined colors are supported, background must also be defined in hex
# or remain commented out. 1 = on, 0 = off. Warning: for certain terminal emulators cava will
# not able to restore color definitions on exit, simply restart your terminal to restore colors.
; gradient = 0
; gradient_color_1 = '#0099ff'
; gradient_color_2 = '#ff3399'
[smoothing]
# Percentage value for integral smoothing. Takes values from 0 - 100.
# Higher values means smoother, but less precise. 0 to disable.
integral = 20
# Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable.
; monstercat = 1
; waves = 3;
# 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 = 200
# In bar height, bars that would have been lower that this will not be drawn.
; ignore = 0
[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.
# Look at readme.md on github for further explanations and examples.
1 = 1 # bass
2 = 0
3 = 0 # midtone
+11
View File
@@ -0,0 +1,11 @@
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
@app.route('/set/<int:color>')
def set(color):
return f'{color}'
BIN
View File
Binary file not shown.
+63 -3
View File
@@ -5,6 +5,7 @@ import asyncio
import pickle
import re
import sys
import subprocess
async def scan_for_pi() -> dict():
ip = socket.gethostbyname(socket.gethostname())
@@ -71,9 +72,62 @@ def set_pixels(color):
pi.send(color)
pi.disconnect()
def visualizer(color, amp_strength=0.6):
cava_config = '''
[general]
framerate = 60
bars = 2
[output]
method = raw
data_format = ascii
ascii_max_range = 1000
[color]
foreground = red
[smoothing]
integral = 20
gravity = 200
[eq]
1 = 1 # bass
2 = 0
3 = 0 # midtone
4 = 0
5 = 0 # treble
'''
with open('/tmp/lc_cava.conf', 'w') as f:
f.write(cava_config)
r = int(color[0:2], 16)
g = int(color[2:4], 16)
b = int(color[4:6], 16)
cava = subprocess.Popen(["cava", "-p", "/tmp/lc_cava.conf"], stdout=subprocess.PIPE)
for line in cava.stdout:
cava_value = int(line.decode().split(';')[0])
amp_factor = amp_strength * ((cava_value / 500) - 1) + 1
# send(rgb_to_hex(int(r * amp_factor), int(g * amp_factor), int(b * amp_factor)))
print(r,g,b, amp_factor, line)
color = f'{int(r * amp_factor):02x}{int(g * amp_factor):02x}{int(b * amp_factor):02x}'
print(color)
set_pixels(color)
cava.stdout.close()
sed.stdout.close()
def main(arg):
arg = ('help') if len(arg) == 0 else arg
# if len(arg) == 0:
# from gui import app
# import webview
# webview.create_window('LED Controller', app)
# webview.start()
match arg[0]:
case "set":
if len(arg) < 2:
@@ -81,6 +135,9 @@ def main(arg):
return
set_pixels(arg[1])
case "off":
set_pixels('000000')
case "search":
ip_list = asyncio.run(scan_for_pi())
pi_list = [PI(ip) for ip in ip_list]
@@ -92,10 +149,13 @@ def main(arg):
for pi in pi_list:
print(pi)
case "music":
pass
if len(arg) < 2:
print("color argument missing")
return
visualizer(arg[1])
case _:
print("lc [help|set|search|list]")
print("lc [help|set|off|search|list]")
+16
View File
@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html>
<head>
<title>Input Field and Button</title>
</head>
<body>
<input type="text" id="myInput">
<button type="button" onclick="myFunction()">Submit</button>
<script>
function myFunction() {
var input = document.getElementById("myInput").value;
alert("Input value: " + input);
}
</script>
</body>
</html>