chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
-- auto-eq.lua — Automatically switch EQ preset based on track genre.
|
||||
|
||||
local p = plugin.register({
|
||||
name = "auto-eq",
|
||||
type = "hook",
|
||||
version = "1.0.0",
|
||||
description = "Switch EQ based on track genre",
|
||||
permissions = {"control"},
|
||||
})
|
||||
|
||||
-- Map genres to EQ presets. Keys are lowercase for case-insensitive matching.
|
||||
local genre_map = {
|
||||
rock = "Rock",
|
||||
["alt-rock"] = "Rock",
|
||||
["hard rock"] = "Rock",
|
||||
metal = "Rock",
|
||||
punk = "Rock",
|
||||
grunge = "Rock",
|
||||
pop = "Pop",
|
||||
["synth-pop"] = "Pop",
|
||||
jazz = "Jazz",
|
||||
["smooth jazz"] = "Jazz",
|
||||
bossa = "Jazz",
|
||||
classical = "Classical",
|
||||
orchestra = "Classical",
|
||||
electronic = "Electronic",
|
||||
edm = "Electronic",
|
||||
techno = "Electronic",
|
||||
house = "Electronic",
|
||||
trance = "Electronic",
|
||||
ambient = "Electronic",
|
||||
["hip-hop"] = "Hip-Hop",
|
||||
["hip hop"] = "Hip-Hop",
|
||||
rap = "Hip-Hop",
|
||||
trap = "Hip-Hop",
|
||||
["r&b"] = "R&B",
|
||||
rnb = "R&B",
|
||||
soul = "R&B",
|
||||
folk = "Acoustic",
|
||||
acoustic = "Acoustic",
|
||||
["singer-songwriter"] = "Acoustic",
|
||||
country = "Acoustic",
|
||||
podcast = "Podcast",
|
||||
speech = "Podcast",
|
||||
lofi = "Late Night",
|
||||
["lo-fi"] = "Late Night",
|
||||
chill = "Late Night",
|
||||
}
|
||||
|
||||
local last_preset = nil
|
||||
|
||||
p:on("track.change", function(track)
|
||||
local genre = (track.genre or ""):lower()
|
||||
local preset = genre_map[genre]
|
||||
|
||||
if not preset then
|
||||
-- Try partial match for compound genres like "Indie Rock".
|
||||
for key, val in pairs(genre_map) do
|
||||
if genre:find(key, 1, true) then
|
||||
preset = val
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
preset = preset or "Flat"
|
||||
|
||||
if preset ~= last_preset then
|
||||
cliamp.player.set_eq_preset(preset)
|
||||
last_preset = preset
|
||||
cliamp.log.info("EQ -> " .. preset .. " (genre: " .. (track.genre or "unknown") .. ")")
|
||||
end
|
||||
end)
|
||||
Reference in New Issue
Block a user