Просмотр спектра муз. файлов с помощью SOX на WSH-панели

Список разделов Аудиоплеер foobar2000 Секреты foobar2000

Описание: Кнопочки, конфиги, секреты, советы.

Сообщение #1 Zin-Uru » 16.04.2010, 22:57

Сделал на досуге панельку на WSH, в которой будет показываться и генерироваться спектр с помощью SOX. Картинки сохраняются в папке Spectrum внутри папки с муз. файлами.

Изображение

Вот ее код:
Код: Выделить всё
//WSH Spectrum panel by Zin-Uru, 2010
//Version 1.0

// Use with GdiDrawText()
// {{
var DT_TOP = 0x00000000;
var DT_CENTER = 0x00000001;
var DT_VCENTER = 0x00000004;
var DT_WORDBREAK = 0x00000010;
var DT_CALCRECT = 0x00000400;
var DT_NOPREFIX = 0x00000800;
// }}

// {{
// Used in window.GetColorCUI()
ColorTypeCUI = {
    text: 0,
    selection_text: 1,
    inactive_selection_text: 2,
    background: 3,
    selection_background: 4,
    inactive_selection_background: 5,
    active_item_frame: 6
};

// Used in window.GetFontCUI()
FontTypeCUI = {
    items: 0,
    labels: 1
};

//  Used in window.GetColorDUI()
ColorTypeDUI = {
    text: 0,
    background: 1,
    highlight: 2,
    selection: 3
};

// Used in window.GetFontDUI()
FontTypeDUI = {
    defaults: 0,
    tabs: 1,
    lists: 2,
    playlists: 3,
    statusbar: 4,
    console: 5
};
//}}

//{{
// Used in window.SetCursor()
var IDC_HAND = 32649;
//}}

var track_path = fb.TitleFormat("$replace(%path%,%filename_ext%,)");
var track_fullpath = fb.TitleFormat("$if(%__referenced_file%,$if($strcmp($replace(%__referenced_file%,.$ext(%__referenced_file%),),%filename%),%path%,$replace(%path%,%filename_ext%,%__referenced_file%)),%path%)");
var track_filename = fb.TitleFormat("$if(%__referenced_file%,$if($strcmp($replace(%__referenced_file%,.$ext(%__referenced_file%),),%filename%),%filename%,$replace(%__referenced_file%,.$ext(%__referenced_file%),)),%filename%)");
var track_ext = fb.TitleFormat("$if(%__referenced_file%,$if($strcmp($replace(%__referenced_file%,.$ext(%__referenced_file%),),%filename%),$ext(%filename_ext%),$ext(%__referenced_file%)),$ext(%filename_ext%))");
var ref_ext = fb.TitleFormat("$if(%__referenced_file%,$ext(%__referenced_file%),$ext(%filename_ext%))");
var track_num = fb.TitleFormat("%track%");
var track_tf = fb.TitleFormat("%track% - %title%");
var track_filename_ext = fb.TitleFormat("%filename_ext%");
var image_name = fb.TitleFormat("$if(%__referenced_file%,$replace(%path%,%filename_ext%,%__referenced_file%))");
var image_ext = fb.TitleFormat("$if(%__referenced_file%,$ext(%__referenced_file%))");
var total = fb.TitleFormat("%totaltracks%");
var subs = fb.TitleFormat("%subsong%");
var char_quote = fb.TitleFormat("$char(34)");

var WshShell = new ActiveXObject("WScript.Shell");
var g_instancetype = window.InstanceType;
var g_font = null;
var working = 0;
var g_text;
var ww = 0, wh = 0;
var g_textcolor = 0, g_textcolor_hl = 0;
var g_backcolor = 0;
var g_hot = false;
var show_spectrum = 0;
var image;
var embed_ch;
var batch_run = 0;

//Getting properties
var work_dir = fb.FoobarPath+"\\"+window.GetProperty("WSH Spectrum folder","WSH_Spectrum\\");
var sp_height = window.GetProperty("Spectrogram height","600");
var sp_width = window.GetProperty("Spectrogram width","800");
var algo = window.GetProperty("Algorithm (1-5): Hann, Hamming, Bartlett, Rectangular or Kaiser","1");
var by_panel = window.GetProperty("Use panel size",true);
var auto_gen = window.GetProperty("Automatically generate spectrum",true);
var trans = window.GetProperty("Transparent (CUI only)",false);

var sp_algo;

algo = algo*1;
if(algo==1) sp_algo = "Hann";
if(algo==2) sp_algo = "Hamming";
if(algo==3) sp_algo = "Bartlett";
if(algo==4) sp_algo = "Rectangular";
if(algo==5) sp_algo = "Kaiser";

embed_ch = "0";
if(track_ext.Eval()!="cue" && subs.Eval()!="0" && image_ext.Eval()=="") {embed_ch = "1";}
if(track_ext.Eval()=="cue" || embed_ch=="1") {image = track_path.Eval()+"Spectrum\\track_"+track_num.Eval()+".png";} else {image = track_path.Eval()+"Spectrum\\"+ track_filename.Eval() + ".png";}

function get_font() {
    if (g_instancetype == 0) { // CUI
        g_font = window.GetFontCUI(FontTypeCUI.items);
    } else if (g_instancetype == 1) { // DUI
        g_font = window.GetFontDUI(FontTypeDUI.defaults);
    } else {
        // None
    }
}
get_font();

function get_colors() {
    if (g_instancetype == 0) { // CUI
        g_textcolor = window.GetColorCUI(ColorTypeCUI.text);
        g_textcolor_hl = window.GetColorCUI(ColorTypeCUI.text);
        if(trans) {g_backcolor = 7;} else {g_backcolor = window.GetColorCUI(ColorTypeCUI.background);}
    } else if (g_instancetype == 1) { // DUI
        g_textcolor = window.GetColorDUI(ColorTypeDUI.text);
        g_textcolor_hl = window.GetColorDUI(ColorTypeDUI.highlight);
        g_backcolor = window.GetColorDUI(ColorTypeDUI.background);
    } else {
        // None
    }
}
get_colors();

// START
function on_size() {
    ww = window.Width;
    wh = window.Height;
}

function on_paint(gr) {
    var text_color = g_hot ? g_textcolor_hl : g_textcolor;
    gr.FillSolidRect(0, 0, ww, wh, g_backcolor);
    if(working==1) {g_text = "Generating spectrogram...";} else {g_text = "Click here to show (generate) or hide spectrogram";}
    if(file_exists(image) && show_spectrum==1) {
        gr.DrawImage(gdi.Image(image),0,0,window.Width,window.Height,0,0,gdi.Image(image).Width,gdi.Image(image).Height,0,255);
    } else {
        gr.GdiDrawText(g_text, g_font, text_color, 0, 0, ww, wh, DT_VCENTER | DT_CENTER | DT_WORDBREAK | DT_CALCRECT | DT_NOPREFIX);  
    }
}

function on_mouse_lbtn_up(x, y) {
    if(track_path.Eval().substring(0,4)=="cdda" || ref_ext.Eval()=="avi" || ref_ext.Eval()=="mpg" || ref_ext.Eval()=="mp4" || ref_ext.Eval()=="mkv" || ref_ext.Eval()=="wmv" || ref_ext.Eval()=="tak") {
    } else {
    if(show_spectrum==0) {
        show_spectrum = 1;
        if(working==0 && fb.IsPlaying) {
            if(file_exists(image)==false) {create_batch(track_ext.Eval()); batch_run = 1;}
            working = 1;
        }
    } else {
        if(batch_run==0) {
        show_spectrum = 0;
        working = 0;
        }
    }
    window.Repaint();
    }
}

function on_mouse_move() {
    if (!g_hot) {
        window.SetCursor(IDC_HAND);
        g_hot = true;
        window.Repaint();
    }
}

function on_mouse_leave() {
    if (g_hot) {
        g_hot = false;
        window.Repaint();
    }
}

function on_font_changed() {
    get_font();
    window.Repaint();
}

function on_colors_changed() {
    get_colors();
    window.Repaint();
}

function file_exists(chemin) {
  var fso, bool;
  fso = new ActiveXObject("Scripting.FileSystemObject");
  bool=fso.Fileexists(chemin);
  return bool;
}

function GrabShortPath(filespec)
{
   var fso, f, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   if(filespec && track_path.Eval().substring(0,4)!="cdda") {
    f = fso.GetFile(filespec);
   s = f.ShortPath;
    } else {s = "";}
   return(s);
}

function GrabShortName(filespec)
{
   var fso, f, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   if(filespec && track_path.Eval().substring(0,4)!="cdda") {
   f = fso.GetFile(filespec);
   s = f.ShortName
    } else {s = "";}
   return(s);
}

function on_playback_time(time) {
    if(file_exists(image) && working==1) {
        working = 0;
        batch_run = 0;
        window.Repaint();
    }
}

function on_playback_new_track(info) {
   CollectGarbage();
    embed_ch = "0";
    if(track_ext.Eval()!="cue" && subs.Eval()!="0" && image_ext.Eval()=="") {embed_ch = "1";}
    if(track_ext.Eval()=="cue" || embed_ch=="1") {image = track_path.Eval()+"Spectrum\\track_"+track_num.Eval()+".png";} else {image = track_path.Eval()+"Spectrum\\"+ track_filename.Eval() + ".png";}
    if(file_exists(image)==false) {
        if(auto_gen) {
            if(track_path.Eval().substring(0,4)=="cdda" || ref_ext.Eval()=="avi" || ref_ext.Eval()=="mpg" || ref_ext.Eval()=="mp4" || ref_ext.Eval()=="mkv" || ref_ext.Eval()=="wmv" || ref_ext.Eval()=="tak") {
            } else {
            create_batch(track_ext.Eval());
            batch_run = 1;
            working = 1;
            show_spectrum = 1;            
            }
        } else {
            show_spectrum = 0; working = 0;
        }
    } else {
        show_spectrum = 1;
    }
    window.Repaint();
}

function convert_to_translit(str) {
    var work_str = str;
    var alphabet1 = "абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
    var alphabet2 = "abvgdeegziiklmnoprstyfxc4wwbu'euaABVGDEEGZIIKLMNOPRSTYFXC4WWbU'EUA";

    for(var i = 0; i < work_str.length; i++) {
        for(var j = 0; j < alphabet1.length; j++) {
            if(work_str.charAt(i)==alphabet1.charAt(j)) {
                work_str = work_str.substring(0,i)+alphabet2.charAt(j)+work_str.substring(i+1,work_str.length);
                break;
            }
        }
    }
    return work_str;
}

function create_batch(ftype) {

var fso, f1, ts, s;
var ForReading = 1;
var ForWriting = 2;
var Str0, Str1, Str2, Str3, Str4;
var chem;
var mypath;
var mover;
var dest;
var num;
var imgn;
var imgx;
var tot;
var ext;
var pic_text;
var s_trk_fullpath = GrabShortPath(track_fullpath.Eval());
var s_trk_filename_ext = GrabShortName(track_fullpath.Eval());

var wtitle="WSH Spectrum";
var runcmd;
var c_quote;

if(by_panel) {
    sp_height = window.Height-50;
    sp_width = window.Width+10;
}
if(sp_height<130) sp_height = 130;
if(sp_width<100) sp_width = 100;

cdda_check = track_path.Eval();
ext = ref_ext.Eval();
if(cdda_check.substring(0,4)=="cdda" || ext=="avi" || ext=="mpg" || ext=="mp4" || ext=="mkv" || ext=="wmv" || ext=="tak" || s_trk_fullpath=="") {
} else {

c_quote = char_quote.Eval();

chem = track_path.Eval();
mypath = s_trk_fullpath.substring(0,s_trk_fullpath.length-s_trk_filename_ext.length);
num = track_num.Eval();
dest = "\\" + track_filename.Eval()  + ".png";
imgn = image_name.Eval();
imgx = image_ext.Eval();
ext = track_ext.Eval();
tot = total.Eval();

fso = new ActiveXObject("Scripting.FileSystemObject");

   if (file_exists(work_dir + "WSH_Spectrum.bat")==true) {
      ts = fso.OpenTextFile(work_dir + "WSH_Spectrum.bat", ForWriting);
   } else {
      ts = fso.CreateTextFile(work_dir + "WSH_Spectrum.bat", ForWriting);
   }

ts.WriteLine("@echo off");
Str4=s_trk_fullpath;
Str3=s_trk_fullpath;

//extract embedded cue
if(embed_ch=="1") {
   Str4=s_trk_fullpath.substring(0,s_trk_fullpath.length-s_trk_filename_ext.length)+"tmp.cue";
   ts.WriteLine(GrabShortPath(work_dir+"tag.exe")+" --tocuen "+Str4+" "+s_trk_fullpath);
   imgn=track_fullpath.Eval();
   imgx=ext;
}

if(ftype=="cue" || embed_ch=="1") {
    pic_text="'"+track_tf.Eval()+"' of "+track_filename_ext.Eval();
    image = chem+"\\Spectrum\\track_"+num+".png";
} else {
    pic_text=track_filename_ext.Eval();
    image = chem+"\\Spectrum\\"+ track_filename.Eval() + ".png";
}
pic_text = convert_to_translit(pic_text);

//generate spectrum picture for track
if(ftype=="wav") {
   ts.WriteLine(GrabShortPath(work_dir+"SOX\\sox.exe")+" "+s_trk_fullpath+" -n spectrogram -x "+sp_width+" -Y "+sp_height+" -w "+sp_algo+" -S 0 -t "+pic_text+' -c "Generated with SOX in Foobar2000 WSH Spectrum panel" -o '+mypath+"tmp.png");
   ts.WriteLine("goto final");
} else {
   Str0 = GrabShortPath(work_dir+"shntool.exe");
   Str1 = GrabShortPath(work_dir+"ffmpeg.exe");
   Str2 = GrabShortPath(work_dir+"SOX\\sox.exe");
   if(ftype=="cue" || embed_ch=="1") {
      s_imgn = GrabShortPath(imgn);
      Str3 = mypath+"track_"+num+".wav";
      ts.WriteLine(Str1+" -i "+s_imgn+" "+s_imgn.substring(0,s_imgn.length-imgx.length-1)+".wav");
      if(tot=="01") {
         ts.WriteLine(Str1+" -i "+s_imgn+" "+mypath+"track_"+num+".wav");
      } else {
         ts.WriteLine(Str0+" split "+s_imgn.substring(0,s_imgn.length-imgx.length-1)+".wav -f "+Str4+" -O always -o wav -a track_ -d "+mypath+" -x "+num);
         //fix for not null pregap of the first track
         ts.WriteLine("if exist "+mypath+"track_"+num+".wav goto next");
         ts.WriteLine("del "+mypath+"track_*.wav");
         ts.WriteLine(Str0+" split "+s_imgn.substring(0,s_imgn.length-imgx.length-1)+".wav -f "+Str4+" -O always -o wav -a track_ -d "+mypath+" -x "+(num*1+1));
         ts.WriteLine(":next");
      }
      if(embed_ch==1) {ts.WriteLine("if exist "+Str4+" del "+Str4);}
      ts.WriteLine("del "+s_imgn.substring(0,s_imgn.length-imgx.length-1)+".wav");
      dest = "\\track_"+num+".png";
   } else {
      if(ftype.length==4) {
         Str3 = s_trk_fullpath.substring(0,s_trk_fullpath.length-ext.length-0)+".wav";
      } else {
         Str3 = s_trk_fullpath.substring(0,s_trk_fullpath.length-ext.length-1)+".wav";
      }
      ts.WriteLine(Str1+" -i "+s_trk_fullpath+" "+Str3);
   }
   ts.WriteLine(Str2+" "+Str3+" -n spectrogram -x "+sp_width+" -Y "+sp_height+" -w "+sp_algo+' -S 0 -t "'+pic_text+'" -c "Generated with SOX in Foobar2000 WSH Spectrum panel" -o "'+mypath+'tmp.png"');
   ts.WriteLine("del "+Str3);
   ts.WriteLine("goto final");
}
   //finalizing process
   ts.WriteLine(":final");
   ts.WriteLine("if not exist "+mypath+"Spectrum"+" md "+mypath+"Spectrum");
   ts.WriteLine("move "+mypath + 'tmp.png "'+mypath+"Spectrum"+dest+'"');
 //   ts.WriteLine("pause");
   ts.WriteLine("del "+"%0");
   ts.WriteLine("exit");
   ts.Close();
   runcmd = "START "+c_quote+wtitle+c_quote+" /MIN cmd /C ";
   WshShell.run("cmd /C "+runcmd+GrabShortPath(work_dir+"WSH_Spectrum.bat"));
}
}

Changelog:
Код: Выделить всё
29.04.2010 - Версия 1.0:
- Решена проблема с русскими именами файлов (заменяются на транслит при выводе).

16.04.2010 - Версия 0.92:
- Релиз.

Разпознается большинство типов файлов, а также image+.cue (имена файла-образа и .cue должны совпадать), tracks+.cue и image with embedded cue.
Для работы панельки необходимо несколько утилит, вот архив с ними: ССЫЛКА.
Использовать так:
1. Кидаем папку WSH_Spectrum из архива в папку Фубара.
2. Убеждаемся, что отключена галочка File -> Preferences -> Tools -> WSH Panel Mod -> Safe mode.
3. Добавляем WSH-панель в ваш конфиг.
4. Импортируем в панель скрипт из файла WSH_Spectrum.txt, лежащего в архиве (ПКМ -> Configure -> Import).
5. Настраиваем панельку по ПКМ -> Properties:
- выбираем алгоритм генерации спектра;
- задаем примерную ширину и высоту получаемых картинок;
- выбираем тип определения ширины и высоты - из заданных значений, либо из текущих размеров панели;
- выбираем, автоматически ли будут генерироваться спектры;
- ставим если нужно для панели прозрачность Transparent (CUI only), затем в ПКМ -> Configure -> Pseudo Transparent.

Прошу пробовать, если появятся предложения или найдутся какие-то баги, пожалуйста, отписывайтесь. ;)
Последний раз редактировалось Zin-Uru 29.04.2010, 13:08, всего редактировалось 1 раз.
Zin-Uru M
Автор темы, Мастер
Репутация: 41
С нами: 7 лет 9 месяцев

Сообщение #2 PsichoStorM » 17.04.2010, 13:31

2Zin-Uru
Задумка прикольная, ты мне вот что подскажи, где сделать так что-бы cmd автоматом не закрывался.
Делает спектры как то через раз.
Последний раз редактировалось PsichoStorM 17.04.2010, 13:35, всего редактировалось 1 раз.
Изображение
PsichoStorM M
Бывалый
Аватара
Возраст: 37
Откуда: Moscow
Репутация: 8
С нами: 8 лет 7 месяцев

Сообщение #3 Zin-Uru » 17.04.2010, 13:45

2PsichoStorM, ближе к концу строка
//    ts.WriteLine("pause");
Убери из нее //, тогда не будет закрываться. Очень странно, что через раз. Давай тестировать. :)

P.S. Когда cmd стоит на паузе, то в папке WSH_Spectrum есть файлик WSH_Spectrum.bat. Так вот, в случае глюка лучше копирнуть его и выложить сюда вместе со скрином, оба они мне дадут больше информации.
Последний раз редактировалось Zin-Uru 17.04.2010, 13:54, всего редактировалось 1 раз.
Zin-Uru M
Автор темы, Мастер
Репутация: 41
С нами: 7 лет 9 месяцев

Сообщение #4 PsichoStorM » 17.04.2010, 14:07

2Zin-Uru В консоли вроде всё нормально
Код: Выделить всё
Font added (GDI & GDI+): "big_noodle_titling.ttf"
Font added (GDI & GDI+): "big_noodle_titling_oblique.ttf"
Font added (GDI & GDI+): "digital-7 (mono).ttf"
Font added (GDI & GDI+): "Heinrich Text.ttf"
Font added (GDI & GDI+): "MONACO.TTF"
Font added (GDI & GDI+): "uni05.ttf"
Font added (GDI & GDI+): "uni05_53.ttf"
GDI+ Hackes: OK
Fonts loaded in: 0:00.003758
WSH Panel Mod (GUID: FE555B68-9973-4106-9569-0F56AA7E707A): initliased in 0.0000565 s
WSH Panel Mod (GUID: D8C107F3-CD87-47B0-9268-B2A93F21DD6F): initliased in 0.0000068 s
WSH Panel Mod (GUID: 10CAC711-70CF-4C23-9BA4-15CC2F8B207E): initliased in 0.0000030 s
WSH Panel Mod (GUID: 67DCFFEA-F20F-4925-B950-99FE234D6628): initliased in 0.0000017 s
Filter 0 msec
Group 0 msec
Populate 0 msec
Filter Panel - Genre: initialised in 0.000 s
Filter Panel - Artist: initialised in 0.000 s
Filter Panel - Album: initialised in 0.000 s
WSH Panel Mod (GUID: A4CEED06-F3D8-4464-AE8D-F2AC641A7484): initliased in 0.0000017 s
WSH Panel Mod (GUID: 9C80188A-367D-436B-86C9-F40D8BFBE4B7): initliased in 0.0000020 s
WSH Panel Mod (GUID: 305E4E48-FAA0-4D8C-9992-64751C8364C2): initliased in 0.0000027 s
WSH Panel Mod (GUID: 6DE51533-8626-4A22-827A-C4A5C7D89249): initliased in 0.0000016 s
WSH Panel Mod (GUID: CFD19F51-0140-444F-BA25-096381C4D8E1): initliased in 0.0000073 s
WSH Panel Mod (GUID: 56DF1127-3F17-4DD0-9A1C-28E68A692096): initliased in 0.0000024 s
WSH Panel Mod (GUID: F430759F-4E5C-4E96-8ADB-8F76B82AC9C2): initliased in 0.0000009 s
WSH Panel Mod (GUID: 883C9342-A015-4930-ACA9-E6C01E062750): initliased in 0.0000055 s
WSH Panel Mod (GUID: 31C5D6E8-BAAA-4926-A524-462B0335E901): initliased in 0.0000015 s
Startup time : 0:01.875348
Times: a0 - a1: 0msec
Times: a1 - a2: 0msec
Times: a2 - a3: 0msec
Times: a3 - a4: 0msec
Times: a4 - a5: 0msec
Synch: 0 msec (in mainthread!)
Opening track for playback: "D:\Music\House\Blake Jarrell - Concentrate 2009\Concentrate 2009 CD 1\Blake Jarrell - Concentrate 2009 CD 1.wv" / index: 6
Opening track for playback: "D:\Music\House\Blake Jarrell - Concentrate 2009\Concentrate 2009 CD 1\Blake Jarrell - Concentrate 2009 CD 1.wv" / index: 7
0
65
вот скрин
Изображение
вот WSH_Spectrum.bat
Код: Выделить всё
@echo off
C:\PROGRA~1\FOOBAR~1\WSH_SP~1\tag.exe --tocuen D:\Music\House\BLAKEJ~1\CONCEN~1\tmp.cue D:\Music\House\BLAKEJ~1\CONCEN~1\BLAKEJ~1.WV
echo C:\PROGRA~1\FOOBAR~1\WSH_SP~1\ffmpeg.exe -i D:\Music\House\BLAKEJ~1\CONCEN~1\BLAKEJ~1.WV D:\Music\House\BLAKEJ~1\CONCEN~1\BLAKEJ~1.wav
C:\PROGRA~1\FOOBAR~1\WSH_SP~1\ffmpeg.exe -i D:\Music\House\BLAKEJ~1\CONCEN~1\BLAKEJ~1.WV D:\Music\House\BLAKEJ~1\CONCEN~1\BLAKEJ~1.wav
C:\PROGRA~1\FOOBAR~1\WSH_SP~1\shntool.exe split D:\Music\House\BLAKEJ~1\CONCEN~1\BLAKEJ~1.wav -f D:\Music\House\BLAKEJ~1\CONCEN~1\tmp.cue -O always -o wav -a track_ -d D:\Music\House\BLAKEJ~1\CONCEN~1\ -x 07
if exist D:\Music\House\BLAKEJ~1\CONCEN~1\track_07.wav goto next
del D:\Music\House\BLAKEJ~1\CONCEN~1\track_*.wav
C:\PROGRA~1\FOOBAR~1\WSH_SP~1\shntool.exe split D:\Music\House\BLAKEJ~1\CONCEN~1\BLAKEJ~1.wav -f D:\Music\House\BLAKEJ~1\CONCEN~1\tmp.cue -O always -o wav -a track_ -d D:\Music\House\BLAKEJ~1\CONCEN~1\ -x 8
:next
if exist D:\Music\House\BLAKEJ~1\CONCEN~1\tmp.cue del D:\Music\House\BLAKEJ~1\CONCEN~1\tmp.cue
del D:\Music\House\BLAKEJ~1\CONCEN~1\BLAKEJ~1.wav
C:\PROGRA~1\FOOBAR~1\WSH_SP~1\SOX\sox.exe D:\Music\House\BLAKEJ~1\CONCEN~1\track_07.wav -n spectrogram -x 10 -Y -50 -w Hann -S 0 -t "07 - Eilat (Original Mix) of 'Blake Jarrell - Concentrate 2009 CD 1.wv'" -c "Generated with SOX in Foobar2000 WSH Spectrum panel" -o "D:\Music\House\BLAKEJ~1\CONCEN~1\tmp.png"
del D:\Music\House\BLAKEJ~1\CONCEN~1\track_07.wav
goto final
:final
if not exist D:\Music\House\BLAKEJ~1\CONCEN~1\Spectrum md D:\Music\House\BLAKEJ~1\CONCEN~1\Spectrum
move D:\Music\House\BLAKEJ~1\CONCEN~1\tmp.png "D:\Music\House\BLAKEJ~1\CONCEN~1\Spectrum\track_07.png"
pause
del %0
exit
Последний раз редактировалось PsichoStorM 17.04.2010, 14:11, всего редактировалось 1 раз.
Изображение
PsichoStorM M
Бывалый
Аватара
Возраст: 37
Откуда: Moscow
Репутация: 8
С нами: 8 лет 7 месяцев

Сообщение #5 MelomanTG » 17.04.2010, 14:23

Удобно сразу можно спектр заценить... а то сейчас часто в сеть сливают фигню с битрейтом 128к/с называя 320к/с. Но чаще всего и как то удобнее что ли, проверяю с помощью Аудишн.
Музыка нас связала)))
MelomanTG M
Новичок
Аватара
Возраст: 36
Откуда: Россия/ЕКБ
Репутация: 0
С нами: 7 лет 2 месяца

Сообщение #6 Zin-Uru » 17.04.2010, 14:28

2PsichoStorM, проблема в слишком маленьком размере панели по вертикали. Увеличь его, или задай размеры картинок вручную в ПКМ -> Properties. Параметр Use panel size в таком случае должен быть false.
P.S. Чуть позже сделаю проверку в скрипте, чтобы такого глюка больше не было.
Последний раз редактировалось Zin-Uru 17.04.2010, 14:30, всего редактировалось 1 раз.
Zin-Uru M
Автор темы, Мастер
Репутация: 41
С нами: 7 лет 9 месяцев

Сообщение #7 PsichoStorM » 17.04.2010, 14:30

Zin-Uru писал(а):2PsichoStorM, проблема в слишком маленьком размере панели. Увеличь его, или задай размеры картинок вручную в ПКМ -> Properties. Параметр Use panel size в таком случае должен быть false.
Уже пробовал, если бы было дело только в этом я бы не писал, всё тоже самое хоть с маленьким размером хоть с большим  *sorry*

Сори про false забыл, всё ок
Последний раз редактировалось PsichoStorM 17.04.2010, 14:39, всего редактировалось 1 раз.
Изображение
PsichoStorM M
Бывалый
Аватара
Возраст: 37
Откуда: Moscow
Репутация: 8
С нами: 8 лет 7 месяцев

Сообщение #8 PsichoStorM » 17.04.2010, 14:56

2Zin-Uru
вот что ещё подскажи (смотри скрин)

[img width=400 height=111]http://i024.radikal.ru/1004/22/2b0dd23fac6d.jpg[/img]
Текст изменил, осталось только прозрачность сделать.
Всё разобрался, уже сделал  :)

2Zin-Uru Спасибо за фичу  ;)
Последний раз редактировалось PsichoStorM 17.04.2010, 15:10, всего редактировалось 1 раз.
Изображение
PsichoStorM M
Бывалый
Аватара
Возраст: 37
Откуда: Moscow
Репутация: 8
С нами: 8 лет 7 месяцев

Сообщение #9 Zin-Uru » 17.04.2010, 15:19

Ага, пожалуйста. ;)

Для других, кто еще не разобрался, напишу:
1. Цвет и шрифт текста берутся из настроек CUI или DUI, где панель расположена.
2. Прозрачность ставится в ПКМ -> Configure -> Pseudo Transparent, затем в ПКМ -> Properties -> Transparent (CUI only) = true.
Последний раз редактировалось Zin-Uru 17.04.2010, 17:33, всего редактировалось 1 раз.
Zin-Uru M
Автор темы, Мастер
Репутация: 41
С нами: 7 лет 9 месяцев

Сообщение #10 PsichoStorM » 17.04.2010, 15:38

2Zin-Uru
Жалко что не делает спектры от 96000hz и выше, было бы вообще супер !
Изображение
PsichoStorM M
Бывалый
Аватара
Возраст: 37
Откуда: Moscow
Репутация: 8
С нами: 8 лет 7 месяцев

Сообщение #11 Zin-Uru » 17.04.2010, 16:18

2PsichoStorM, сделать-то можно, чтобы и для таких рисовало, только смысл потеряется, т.к. для этого файлы придется ресемплировать, следовательно результат будет искажен.
Zin-Uru M
Автор темы, Мастер
Репутация: 41
С нами: 7 лет 9 месяцев

Сообщение #12 PsichoStorM » 17.04.2010, 16:26

2Zin-Uru, Это не есть гуд, то есть у sox.exe имеется ограничение, благо что хоть делает 24\48000hz.
Изображение
PsichoStorM M
Бывалый
Аватара
Возраст: 37
Откуда: Moscow
Репутация: 8
С нами: 8 лет 7 месяцев

Сообщение #13 Zin-Uru » 17.04.2010, 16:29

Исправил глюк при очень маленьких размерах панели. Достаточно заново импортировать скрипт.

2PsichoStorM, остается ждать и надеяться, может быть в новых версиях SOX это ограничение снимут.
Последний раз редактировалось Zin-Uru 18.04.2010, 20:23, всего редактировалось 1 раз.
Zin-Uru M
Автор темы, Мастер
Репутация: 41
С нами: 7 лет 9 месяцев

Сообщение #14 PsichoStorM » 17.04.2010, 16:39

Zin-Uru писал(а):Исправил глюк при очень маленьких размерах панели
Вот теперь не зависимо от размера панели всё делает как должно.
Изображение
PsichoStorM M
Бывалый
Аватара
Возраст: 37
Откуда: Moscow
Репутация: 8
С нами: 8 лет 7 месяцев

Сообщение #15 Zin-Uru » 17.04.2010, 18:24

Выловил еще один небольшой глюк, когда картинка могла отказаться генерироваться или генерировалась с неправильным размером. Изменился только скрипт.
Последний раз редактировалось Zin-Uru 19.04.2010, 02:24, всего редактировалось 1 раз.
Zin-Uru M
Автор темы, Мастер
Репутация: 41
С нами: 7 лет 9 месяцев

Сообщение #16 PsichoStorM » 17.04.2010, 18:59

В Xchange смотрится вообще супер, поставил WSH_Spectrum вместо второго Channel Spectrum (CSP Line)

Изображение
Изображение
PsichoStorM M
Бывалый
Аватара
Возраст: 37
Откуда: Moscow
Репутация: 8
С нами: 8 лет 7 месяцев

Сообщение #17 Zin-Uru » 17.04.2010, 19:04

Надо же, я сделал почти точно так же. :) Только я его воткнул вместе с уже имеющимися CSP, третьим.
Zin-Uru M
Автор темы, Мастер
Репутация: 41
С нами: 7 лет 9 месяцев

Сообщение #18 PsichoStorM » 17.04.2010, 19:12

Zin-Uru писал(а):Надо же, я сделал почти точно так же. :) Только я его воткнул вместе с уже имеющимися CSP, третьим.
Ну CSP Line мне не особо то и нужен да и выглядит он не очень, а вот WSH_Spectrum солидно  B)
Изображение
PsichoStorM M
Бывалый
Аватара
Возраст: 37
Откуда: Moscow
Репутация: 8
С нами: 8 лет 7 месяцев

Сообщение #19 Zin-Uru » 18.04.2010, 20:40

Спасибо, что перенесли в отдельную тему. :)
Zin-Uru M
Автор темы, Мастер
Репутация: 41
С нами: 7 лет 9 месяцев

Сообщение #20 alex_realist » 22.04.2010, 15:54

А я повесил себе модифицированный скрипт на wsh-панель информации о треке:
[img width=400 height=353]http://img265.imageshack.us/img265/273/spectrumq.jpg[/img]
Последний раз редактировалось alex_realist 22.04.2010, 15:56, всего редактировалось 1 раз.
alex_realist M
Мастер
Аватара
Откуда: BY
Репутация: 139
С нами: 8 лет 11 месяцев

След.

Вернуться в Секреты foobar2000