Захотелось прикрутить к сборке пикметр. Понравился
012_onv (автор onv) (тема: Пользовательские индикаторы к foo_vis_vumeter,
сообщение macarych » 18.02.2013, 11:43 ).
Скачал VUEditor. Разобраться пока не разобрался, но показалось, что VUEditor не поддерживает "прозрачность фона" изображения (может ошибаюсь).
Решил сделать на WHS (за основу взял скрипт от DRON в этой теме).
Получилось так:

- Безымянный VU METR.png (1.9 КБ) Просмотров: 6321
А вопрос такой. Можно-ли проверить правильность работы данного скрипта. Я не совсем силен в этих пикметрах.
- Код: Выделить всё
function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }
function RGBA(r, g, b, a) { return ((a << 24) | (r << 16) | (g << 8) | (b)); }
var font = gdi.Font("Arial",9,1);
var ww, wh;
var color = {
0:RGB(0,50,120),
1:RGB(0,60,130),
2:RGB(0,70,140),
3:RGB(0,80,160),
4:RGB(0,90,180),
5:RGB(0,100,200),
6:RGB(0,110,220),
7:RGB(0,120,240),
8:RGB(255,150,150),
9:RGB(255,120,120),
10:RGB(255,90,90),
11:RGB(255,60,60),
12:RGB(255,30,30)
};
var db = {
0:-25,
1:-20,
2:-15,
3:-10,
4:-7,
5:-5,
6:-3,
7:-1,
8:0,
9:1,
10:3,
11:5,
12:7
};
VUMeter = new ActiveXObject("VUMeter");
VUMeter.RegisterWindow(window.ID);
//VUMeter.RegisterRect(window.ID,0,0,300,20);
function ToDB(Level){
return Math.round(2000*Math.log(Level)/Math.LN10)/100;
}
function on_mouse_wheel(step) {
VUMeter.Offset=VUMeter.Offset+step;
}
function on_size() {
ww = window.Width;
wh = window.Height;
}
function on_paint(gr) {
// L=VUMeter.LeftLevel;
// R=VUMeter.RightLevel;
LM=VUMeter.LeftPeak;
RM=VUMeter.RightPeak;
gr.FillSolidRect(0, 0, ww, wh, RGB(0,0,0));
var yl = 10;
var y2 = yl + 25;
var h = 7;
var offset = (ww - 20) / 13;
var w = (ww - 20) / 16;
for (var i = 0; i <= 12; i = i + 1) {
// gr.FillSolidRect(20 + i * offset, 3, w, 1, color[i]);
if (fb.IsPlaying) {
gr.FillSolidRect(20 + i * offset, yl, w, h, ToDB(LM) >= db[i] ? color[i] : RGBA(0,0,0,0));
gr.FillSolidRect(20 + i * offset, y2, w, h, ToDB(RM) >= db[i] ? color[i] : RGBA(0,0,0,0));
}
if (i >1 ) gr.GdiDrawText(db[i] > 0 ? "+" + db[i] : db[i] , font, color[i], 20 + offset * [i], yl + 11, ww, wh);
}
gr.GdiDrawText( "L" , font, color[7], 5, yl - 2, ww, wh);
gr.GdiDrawText( "R" , font, color[7], 5, y2 - 2, ww, wh);
gr.GdiDrawText( "DB" , font, color[4], 20, yl + 11, ww, wh);
}
/*
var seek_timer;
function on_playback_new_track(info) {
seek_timer && window.ClearInterval(seek_timer);
seek_timer = window.SetInterval(function() {
window.Repaint();
},10);
}
function on_playback_stop(reason) {
if(reason == 0) {
window.ClearInterval(seek_timer);
window.Repaint();
}
}
*/
I.m.UR5EQF.
квартет на миллион долларов