Список разделов › foobar2000 › Есть вопрос!
}
function spectrum(){
var g_focus_metadb = fb.GetFocusItem();
if(g_focus_metadb!=null){
var subsong=fb.TitleFormat("%subsong%").EvalWithMetadb(g_focus_metadb);
if(subsong==0){
var workdir = fb.FoobarPath+"\spectrum\\";
if(property_tmp_auto) var tmpdir = workdir;
else var tmpdir = property_tmp_dir;
var batname = tmpdir+"spectrum.bat";
var filename = fb.TitleFormat("%path%").EvalWithMetadb(g_focus_metadb);
var lenght = " ("+fb.TitleFormat("%length%=%length_seconds%").EvalWithMetadb(g_focus_metadb)+")";
var fso = new ActiveXObject("Scripting.FileSystemObject");
if (fso.fileexists(batname)==true) var ts = fso.OpenTextFile(batname, 2);
else var ts = fso.CreateTextFile(batname, 1);
ts.WriteLine('@echo off');
ts.WriteLine('"'+workdir+'ffmpeg.exe" -y -i '+shortname(filename)+' "'+tmpdir+'spectrum.wav"');
ts.WriteLine('"'+workdir+'sox.exe" "'+tmpdir+'spectrum.wav" -n spectrogram -x 739 -Y 568 -w Hann -S 0 -c "Generated with SOX in foobar2000 by Alex Realist" -o "'+tmpdir+'spectrum_tmp.png"');
ts.WriteLine('copy "'+tmpdir+'spectrum_tmp.png" "'+tmpdir+'spectrum.png"');
ts.WriteLine('"'+tmpdir+'spectrum.png"');
ts.WriteLine('exit');
ts.Close();
var WshShell = new ActiveXObject("WScript.Shell");
WshShell.run('cmd /c start "spectrum.bat" /min cmd /c "'+batname+'"');
}
else fb.ShowPopupMessage("Spectrum for multiple tracks within single physical file is unreleased in this version.","Information");
}
}
function shortname(filespec){
var fso2 = new ActiveXObject("Scripting.FileSystemObject");
return(fso2.GetFile(filespec).ShortPath);
}
@echo off
"C:\Program Files (x86)\foobar2000\spectrum\ffmpeg.exe" -y -i I:\_____V~1\2019-1~1.AAC "C:\Program Files (x86)\foobar2000\spectrum\spectrum.wav"
"C:\Program Files (x86)\foobar2000\spectrum\sox.exe" "C:\Program Files (x86)\foobar2000\spectrum\spectrum.wav" -n spectrogram -x 739 -Y 568 -w Hann -S 0 -c "Generated with SOX in foobar2000 by Alex Realist" -o "C:\Program Files (x86)\foobar2000\spectrum\spectrum_tmp.png"
copy "C:\Program Files (x86)\foobar2000\spectrum\spectrum_tmp.png" "C:\Program Files (x86)\foobar2000\spectrum\spectrum.png"
"C:\Program Files (x86)\foobar2000\spectrum\spectrum.png"
exit
Если вписать в батник, то плеер его переписывает в ходе использования (убирает те строчки) и временные файлы не стираются.Azaza:del "C:\Program Files (x86)\foobar2000\spectrum\spectrum.wav"
del "C:\Program Files (x86)\foobar2000\spectrum\spectrum_tmp.png"
ts.WriteLine('del "'+tmpdir+'spectrum_tmp.png" "'+tmpdir+'spectrum.wav"');
ts.WriteLine ('del "'+tmpdir+'spectrum_tmp.png")
ts.WriteLine ('del "'+tmpdir+'spectrum.wav")
Я НЕ МОГ это реализовать сам)) Это Alex Realist в свое время замутил. Мне нравится. Никуда убегать не надо, чтобы спектрограмму получить.Azaza:То, как Вы реализовали простую генерацию спектрограмм - яркий пример оверинжиниринга.