If somebody has already done this, I'd be interested in the script and relevant DSP presets.
Yes. Somebody has done this already. Here is script for JScript Panel - https://translate.google.ru/translate?sl=ru&tl=en&u=https%3A%2F%2Ffoobar2000.ru%2Fforum%2Fviewtopic.php%3Fp%3D77623%23p77623 It switch DSP preset for every 5 dB step in volume and can use up to 20 presets. It can be modified to change step, use more or less presets, use other presets names. But you should create DSP presets yourself.
var dsp_active_name = "";
var dsp_str = fb.GetDSPPresets();
var dsp_arr = JSON.parse(dsp_str);
var dsp_count = dsp_arr.length;
function get_dsp() {
dsp_active_name = "";
dsp_str = fb.GetDSPPresets();
dsp_arr = JSON.parse(dsp_str);
dsp_count = dsp_arr.length;
for (var i = 0; i < dsp_arr.length; i++) {
//tt(">>> dsp presets name # " + i + ": " + dsp_arr[i].name);
if (dsp_arr[i].active) {
dsp_active_name = dsp_arr[i].name;
}
}
tt('>>> dsp presets count = ' + dsp_count);
tt(">>> dsp active name = " + dsp_active_name);
};
//get_dsp();
function get_dsp_idx(dsp_name) {
for (var i = 0; i < dsp_arr.length; i++) {
if (dsp_arr[i].name == dsp_name) {
return i
}
}
};
function on_dsp_preset_changed() {
get_dsp();
};
var vol_lvl = Math.ceil(fb.Volume);
function on_volume_change(val) {
//---
// 0 is max
// -100 is min
vol_lvl = Math.ceil(val);
if (isNaN(vol_lvl))
vol_lvl = Math.ceil(fb.Volume);
if (vol_lvl == 0) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp 0")); // set dsp preset 0
};
if (vol_lvl == -5) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -5")); // set dsp preset -5
};
if (vol_lvl == -10) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -10")); // set dsp preset -10
};
if (vol_lvl == -15) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -15")); // set dsp preset -15
};
if (vol_lvl == -20) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -20")); // set dsp preset -20
};
if (vol_lvl == -25) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -25")); // set dsp preset -25
};
if (vol_lvl == -30) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -30")); // set dsp preset -30
};
if (vol_lvl == -35) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -35")); // set dsp preset -35
};
if (vol_lvl == -40) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -40")); // set dsp preset -40
};
if (vol_lvl == -45) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -45")); // set dsp preset -45
};
if (vol_lvl == -50) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -50")); // set dsp preset -50
};
if (vol_lvl == -55) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -55")); // set dsp preset -55
};
if (vol_lvl == -60) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -60")); // set dsp preset -60
};
if (vol_lvl == -65) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -65")); // set dsp preset -65
};
if (vol_lvl == -70) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -70")); // set dsp preset -70
};
if (vol_lvl == -75) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -75")); // set dsp preset -75
};
if (vol_lvl == -80) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -80")); // set dsp preset -80
};
if (vol_lvl == -85) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -85")); // set dsp preset -85
};
if (vol_lvl == -90) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -90")); // set dsp preset -90
};
if (vol_lvl == -95) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -95")); // set dsp preset -95
};
if (vol_lvl == -100) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -100")); // set dsp preset -100
};
};
on_volume_change();
function tt(t) {
console.log(t);
};
or
var dsp_active_name = "";
var dsp_str = fb.GetDSPPresets();
var dsp_arr = JSON.parse(dsp_str);
var dsp_count = dsp_arr.length;
function get_dsp() {
dsp_active_name = "";
dsp_str = fb.GetDSPPresets();
dsp_arr = JSON.parse(dsp_str);
dsp_count = dsp_arr.length;
for (var i = 0; i < dsp_arr.length; i++) {
//tt(">>> dsp presets name # " + i + ": " + dsp_arr[i].name);
if (dsp_arr[i].active) {
dsp_active_name = dsp_arr[i].name;
}
}
tt('>>> dsp presets count = ' + dsp_count);
tt(">>> dsp active name = " + dsp_active_name);
};
//get_dsp();
function get_dsp_idx(dsp_name) {
for (var i = 0; i < dsp_arr.length; i++) {
if (dsp_arr[i].name == dsp_name) {
return i
}
}
};
function on_dsp_preset_changed() {
get_dsp();
};
var vol_lvl = Math.ceil(fb.Volume);
function on_volume_change(val) {
//---
// 0 is max
// -100 is min
vol_lvl = Math.ceil(val);
if (isNaN(vol_lvl))
vol_lvl = Math.ceil(fb.Volume);
if (vol_lvl == 0) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp 0")); // set dsp preset 0
};
if (vol_lvl == -1) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp 0")); // set dsp preset 0
};
if (vol_lvl == -2) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp 0")); // set dsp preset 0
};
if (vol_lvl == -3) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp 0")); // set dsp preset 0
};
if (vol_lvl == -4) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp 0")); // set dsp preset 0
};
if (vol_lvl == -5) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -5")); // set dsp preset -5
};
if (vol_lvl == -10) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -10")); // set dsp preset -10
};
if (vol_lvl == -15) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -15")); // set dsp preset -15
};
if (vol_lvl == -20) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -20")); // set dsp preset -20
};
if (vol_lvl == -25) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -25")); // set dsp preset -25
};
if (vol_lvl == -30) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -30")); // set dsp preset -30
};
if (vol_lvl == -35) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -35")); // set dsp preset -35
};
if (vol_lvl == -40) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -40")); // set dsp preset -40
};
if (vol_lvl == -45) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -45")); // set dsp preset -45
};
if (vol_lvl == -50) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -50")); // set dsp preset -50
};
if (vol_lvl == -55) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -55")); // set dsp preset -55
};
if (vol_lvl == -60) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -60")); // set dsp preset -60
};
if (vol_lvl == -65) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -65")); // set dsp preset -65
};
if (vol_lvl == -70) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -70")); // set dsp preset -70
};
if (vol_lvl == -75) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -75")); // set dsp preset -75
};
if (vol_lvl == -80) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -80")); // set dsp preset -80
};
if (vol_lvl == -85) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -85")); // set dsp preset -85
};
if (vol_lvl == -90) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -90")); // set dsp preset -90
};
if (vol_lvl == -95) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -95")); // set dsp preset -95
};
if (vol_lvl == -100) {
tt(">>> vol = " + vol_lvl);
fb.SetDSPPreset(get_dsp_idx("dsp -100")); // set dsp preset -100
};
};
on_volume_change();
function tt(t) {
console.log(t);
};
Hi
i was looking for a vst or plugin to emulate the amp loudness control and i have found this script
should i create a new preset and edit with notepad++ ,copy and paste?
do you think could be create shortcuts to increase and decrease volume?
thanks
about Amplifier DSP foobar2000 component (can't find the topic) does it work like an amp loudness knob or button?
A simple volume adjustment DSP allowing the signal amplitude to be both boosted and lowered.
thanks