http://avs.chat.ru/avs.htm
http://avs.chat.ru/avs.zip
 
2009-04-01
 
AVS & APE
 WinAMP 5.24 AVS 2.81b
 WinAMP 2.78 AVS 2.5 (частично)
 
* Часто используемые выражения:
reg00=t;
t=$(reg00:1.2)
x0=getkbmouse(1); reg01=x0;
y0=getkbmouse(2); reg02=y0;
//x0=0.0; y0=0.0;
x=x0+x*h/w;
y=y0+y;
x0=$(reg01:1.1)
y0=$(reg02:1.1)
 
* Обозначение:
 AVS (Advanced Visualisation Studio) - студия визуализации.
 APE (Advanced Visualisation Studio Plugin Effects) - плагины эффектов.
 
* Зарезервированные переменные:
n [100](1..1000),
i(0..1), v(-1..1), b[0](0;1), w[640], h[480],
x [0](-1..1), y [0](-1..1),
d [1](0..sqrt(2)), r [2.22](-pi..+pi), alpha [0.5](0..1),
skip [0](0), drawmode [0](0), linesize [1](0..255),
red [1](0..1), green [1](0..1), blue [1](0..1),
reg00..reg99, 
 
* Полноэкранный режим (Fullscreen Settings)
 
 P4-1300 1024х768х32 : 640x480:32BPP, 512x384:32BPP
 P2-366  1024х768х32 : 320х240:32BPP
 
 Высота экрана в процентах для рендеринга: 100
 Ожидание восстановления: Нет ?
 Клик по страницы (медленно, гладко): Да ?
 Быстрое программное bpp преобразование: Нет ?
 Показывать счетчик частоты (количества кадров): Да
 

* Настройки модуля (меню Settings)
 
 Display - настройки экрана. Здесь можно отметить флажок No minimize on WinAmp minimize, запрещающий сворачивать экран визуализации при сворачивании проигрывателя.
 Fullscreen - настройки полноэкранного режима.
 Presets/Hotkeys - настройка "горячих" клавиш, которые могут запускать тот или иной готовый модуль визуализации. При установке флажка Randomly switch presets модули визуализации будут случайным образом меняться через заданное время.
 Beat Detection - настройки детектора импульсов ударных инструментов.
 
* FPS
 
Строка слева внизу окна редактора показывает текущую FPS - частоту кадров, изменяющуюся в зависимости от загруженности процессора, и размер окна визуализации в пикселах (656х488). Оптимальное значение FPS составляет приблизительно 60 FPS (Render / Dot Plane для проверки). Если значение существенно меньше, то пресет
 или неправильно составлен,
 или перегружен эффектами,
 или нарушены настройки AVS по умолчанию,
 или не хватает мощности процессора.
 
* Редактор AVS
  AVS Editor Settings
 
Режимы смешивания:
 Replace (Замена)
 Additive blend (Общая смесь)
 Blend 50/50 (Смесь пополам)
 OnBeat - По тактам
 
Шаблон -> Создать
 
"+"  Добавить
"х2" Клонировать
"-"  Удалить
 
* Вспомогательные модули
 
 + Misc /
 
     Buffer Save - Буферное Сохранение
     Comment - комментарий
     Custom BPM - ударные. Позволяет производить настройку ударных для использования в WVS. В частности можно установить длительность импульса (Arbitrary), количество пропускаемых импульсов (Skip).
 Set Render mode - установка режима вывода. Позволяет задавать способ вывода изображения для последующих модулей, а также толщину линий элементов.
 
* Генерация изображения [Объект]
 
 + Render /
 
       AVI               - видео PLUGIN\WVS, яркость привязывается к ударным, OnBeat 1
Render Bass Spin         - кружение, два пропеллера, OnBeat 2
       Clear screen      - чистый экран, необходимо всегда, размещается над объектом
Render Dot Fountain      - точечный фонтан, OnBeat 5
       Dot Grid          - сетка из точек
Render Dot Plane         - точечная плоскость, OnBeat 5
Render Moving Particle   - движущаяся частица, круг, OnBeat 1
       OnBeat Clear      - очищать каждые N ударов (вспышка)
Render Oscilliscope Star - осциллографическая звезда, OnBeat 1
Render Picture           - изображение *.bmp (папка avs\)
Render Ring              - кольцо, OnBeat Oscilliscope
Render Rotating Stars    - две звезды, OnBeat 2
       SVP Loader        - библиотека SVP
Render Simple            - спектр, простая горизонтальная линия, OnBeat Oscilliscope
Render Starfield         - звездное поле, OnBeat 1
       SuperScope - Супер Область, OnBeat Oscilliscope
Render SuperScope Spiral                - спираль
Render SuperScope 3D Scope Dish         - блюдо
Render SuperScope Rotating Bow Thing    - лепестки
Render SuperScope Vertical Bouncing     - вертикаль
Render SuperScope Spiral Graph Fun      - функция
Render SuperScope Alternationg Diagonal - диагональ
Render SuperScope Vibration Worm        - червь
  Dots - вид кривой в виде точек
 Lines - вид кривой в виде линий
Render Text              - Текст, OnBeat 1
       Time scope        - Шкала Времени (вертикальная линия), OnBeat Oscilliscope
 
* Преобразование изображения [Изменение] (всегда после объекта)
 
 + Trans /
 
Trans Blitter Feedback - эхо, OnBeat.
      Blur                      - размытие.
      Brightness                - яркость.
      Bump                      - Разрыв
      Color Clip                - Цветной Клип
      Color Fade                -
      Dynamic Distance Modifier - изменение координат.
      Dynamic Movement          - Динамическое Перемещение
      Dynamic Shift             - динамический сдвиг на величину x и y (320х240).
      Fadeout                   - обесцвечивание изображения.
      Fast Brightness           - Быстрая Яркость
      Grain                     - зернистость.
Trans Interferences             - интерференции (радуга), OnBeat.
Trans Interleave                - решетка, OnBeat.
      Invert                    - инвертирование (негатив).
      Mirror                    - зеркало.
      Mosaic                    - мозаика.
      Movement                  - искажение.
Trans Roto Blitter              - масштабирование и поворот, OnBeat.
      Scatter                   - рассеивание.
      Unique tone               - единый цвет.
      Water                     - вода
      Water Bump                - волна.
 
Effect list - список эффектов, позволяющий объединить несколько модулей в один (логическая скобка).
 
* SuperScope:
 
Эффекты, вид которых задается математическими формулами.
Для этого используются следующие предопределенные переменные:
 
 n [numpoints] - количество опорных точек, составляющих кривую (от 1 до бесконечности) [100].
 x,y - координаты точки на экране (-1..+1, ноль в центре экрана визуализации) [0].
 i [pointpos] - номер позиции точки сигнала (0...1). Перебирается от 0 до 1 на каждом фрейме, с n - числом шагов перебора. (i*n) - определение абсолютного значения точки.
 v [value] - значение уровня сигнала в точке i (-1...1).
 b [beat] - ударные. В случае наличия импульса ударных, переменная принимает значение 1, в остальных случаях 0 (1 if beat) [0].
 w [width] - ширина экрана в пикселях [320].
 h [height] - высота экрана в пикселях [240].
red, green, blue - яркость красного, зеленого и синего цвета точки изображения [1].
 
For the "Per Point" expression (which happens n times) use:
red green and blue are all (0...1)
red=cos(r)+1;blue=sin(r);green=sin(i)/2       ?
x=t+0.3*v*pow(sin(i*3.14159),2); y=i*2-1.0;
red=abs(v*2); green=abs(i); blue=abs(1.0-i);
 
Rect coor (полярные координаты):
d [distance] - дистанция (расстояние от центра) (0...1).
r [rotation] - угол (от горизонтали вправо) (0...2Pi).
 
Для ввода формул используются четыре поля:
 Init (юнит) - задаются начальные значения переменных (specifies number of points to render).
 On Beat (кадр) - изменения переменных при наличии импульсов ударных (tv).
 Per Frame (удар) - уравнения изменения переменных на каждом кадре (t).
 Per Point (пункт) - описываются уравнения, по которым вычисляются координаты точек. Поле в обязательном порядке должно содержать уравнения расчета координат точек изображения x и y. Также обязательно должно быть задано количество точек кривой n.
Разделителем между формулами служит точка с запятой.
 
 Функции
 
rand(var)   Возвращает случайное число между 0 и var
 
 Операторы
 
Преобразовывают две величины в целое:
%  performs division, returns remainder
|  returns bitwise OR of both values
&  returns bitwise AND of both values
 
// Толщина линии:
 
linesize=3;
 
// Пересчёт пропорций экрана:
 
x=x*h/w;
 
// Пересчёт яркости:
 
red=(i); green=(i); blue=(i);
red=(i+0.1); green=(i+0.1); blue=(i+0.1);
red=(1-i); green=(1-i); blue=(1-i);
 
// Пересчёт радиан в градусы:
 
rot=if(below(abs(rot),(2*$PI)),rot,0); reg00=rot*180/$PI;
 
// Преобразование между полярными и прямоугольными координатами:
 
r=atan2(-x,-y);
d=sqrt(sqr(x)+sqr(y);
x=-d*sin(r);
y=-d*cos(r);
 
// 2D прямоугольник:
 
n=5; dn=1/(n-1);
xt=dx*(-equal(i,0*dn)-equal(i,1*dn)+equal(i,2*dn)+equal(i,3*dn)-equal(i,4*dn));
yt=dy*(-equal(i,0*dn)+equal(i,1*dn)+equal(i,2*dn)-equal(i,3*dn)-equal(i,4*dn));
zt=0;
 
xt=dx*sign(sin(i*2*$PI));
yt=dy*sign(cos(i*2*$PI));
 
// 2D матрица вращения (поворот предмета на плоскости):
 
x0=0.0; y0=0.0; dx=0.7; dy=0.7;
rz=rz+0.010; cosrz=cos(rz); sinrz=sin(rz);
x=x0+xt*cosrz-yt*sinrz; x=x*h/w;
y=y0+xt*sinrz+yt*cosrz;
 
x=xt*cos(rz)-yt*sin(rz);
y=xt*sin(rz)+yt*cos(rz);
 
x=xt*cos(rz)+yt*sin(rz);
y=xt*sin(rz)-yt*cos(rz);
 
// 3D куб:
 
n=10; dn=1/(n-1);
xt=dx*(-equal(i,0*dn)-equal(i,1*dn)+equal(i,2*dn)+equal(i,3*dn)-equal(i,4*dn)-equal(i,5*dn)-equal(i,6*dn)+equal(i,7*dn)+equal(i,8*dn)-equal(i,9*dn));
yt=dy*(-equal(i,0*dn)+equal(i,1*dn)+equal(i,2*dn)-equal(i,3*dn)-equal(i,4*dn)-equal(i,5*dn)+equal(i,6*dn)+equal(i,7*dn)-equal(i,8*dn)-equal(i,9*dn));
zt=0; zt=if(below(i,5*dn),0,dz);
 
// 3D матрица вращения (поворот предмета в пространстве):
 
x0=0.0; y0=0.0; z0=-2.0; dx=1.0; dy=1.0; dz=0.0;
rx=rx+0.010; ry=ry+0.020; rz=rz+0.030;
cosrx=cos(rx); sinrx=sin(rx); cosry=cos(ry); sinry=sin(ry); cosrz=cos(rz); sinrz=sin(rz);
 
yry=yt; zry=zt*cosry-xt*sinry; xry=zt*sinry+xt*cosry;  xt=xry; yt=yry; zt=zry;
xrx=xt; yrx=yt*cosrx-zt*sinrx; zrx=yt*sinrx+zt*cosrx;  xt=xrx; yt=yrx; zt=zrx;
zrz=zt; xrz=xt*cosrz-yt*sinrz; yrz=xt*sinrz+yt*cosrz;  xt=xrz; yt=yrz; zt=zrz;
 
x1=x; y1=y; z1=z;
x2=x1*cos(rotz)-y1*sin(rotz); y2=x1*sin(rotz)+y1*cos(rotz); z2=z1;
x3=x2*cos(roty)+z2*sin(roty); y3=y2; z3=-x2*sin(roty)+z2*cos(roty);
x4=x3; y4=y3*cos(rotx)-z3*sin(rotx); z4=y3*sin(rotx)+z3*cos(rotx);
 
// Прямая линейная перспектива:
 
xt=xtrx; yt=ytrx; zt=ztrx;
kz=z0/abs(z0+dz+zt);
x=x0+xt*kz; x=x*h/w;
y=y0+yt*kz;
 
* Константы:
$PI=3.14159; $E=2.71828; $PHI=1.618033;
 
* Текст к показу
$(title), $(title:n32) заголовок.
$(playpos), $(playpos.2) текущее время трека.
$(playlen) полное время трека.
$(reg00), $(reg00:1.2) зарезервированные переменные.
 
reg00=rot*180/$PI;
 
* Управление мышью
 
km=1*$PI; kd=1/333;
ks=1; sx=2.9; sy=-0.5;
// перемещение и сдвиг
mx=km*getkbmouse(1)+ks*sx; reg01=mx;
my=km*getkbmouse(2)+ks*sy; reg02=my;
// уменьшение или увеличение радиуса
m3=kd*getkbmouse(3); dz=dz-m3; reg03=m3;
m4=kd*getkbmouse(4); dz=dz+m4; reg04=m4;
x=x+mx; y=y+my;
 

* ПРИМЕРЫ
 
Render / SuperScope
 
n=2; pi=3.14;
 
 Точка
x=0;
 Горизонтальная линия
x=i-0.5; y=0;
 Вертикальная линия
x=0; y=i-0.5;
 Наклонная линия
x=x0+i*dx-0.5; y=y0+i*dy-0.5;
 Движущаяся линия
t=t+0.02; x=sin(t)-i;
 Осциллоскоп 
x=i*2-1; y=v;
 Синусоида
r=r+2*pi/360; r=if(below(abs(r),(2*pi)),r,(-2*pi));
x=r/(2*pi); y=sin(r);
 
n=360; pi=acos(-1);
 
 Окружность polar
x=r*cos(i*pi*2); x=x*h/w; y=r*sin(i*pi*2);
 Окружность cartesian [х*x+у*y=r*r]
x=sqrt(r*r-y*y); x=x*h/w; y=y0+i*r;
 
 Круговая спираль
n=33; r=0.9;
t=t+0.0001;
rf=i*r; fi=(t+i*pi*4)*14;
x=rf*cos(fi); x=x*h/w; y=rf*sin(fi);
 
n=999; r=0.9; px=1;
 
 Круг
px=-px; x=px*sqrt(r*r-y*y); x=x*h/w; y=(2*i-1)*r;
 Квадрат
px=-px; x=px*r; x=x*h/w; y=(2*i-1)*r;
 Треугольник
px=-px; x=r*px*i; x=x*h/w; y=(2*i-1)*r;
 
 [WinAMP 5]
 
++ Комментарии:
  // using the doubleslash comments until the end of the line
  /* using the classic C comments
     comment a block of text */
 
++ "Рендеринг изображений" _ texer2.ape
 
Для обеспечения прозрачности добавить Misc / Set Render Mode перед Texer II. Режим Additive или Maximum blend. Включить Resizing для изменения размера.
 
size=10;
sizex=size; sizey=size;
 

* ПЛАГИНЫ ЭФФЕКТОВ (APE)
 
Сообщение "Unknown Render Object" возникает в редакторе, если эффект APE не загружен или если файл *.ape отсутствует в папке Plugins\avs и должен быть добавлен. Для активации эффекта требуется перезапуск WinAMP. Установка лишних эффектов ведёт к нестабильности работы проигрывателя.
 
Стандартные:
 
AddBorder.ape   - (Add a border to AVS) Бордюр : + Virtual Effects / AddBorders.
colormap.ape    -
convolution.ape -
fyrewurx.ape    - (Firework) Фейерверк : + Render APE / FyrewurX.
multifilter.ape -
texer.ape       -
texer2.ape      - (Texer) Рендерер изображений : + Render APE / Texer II.
 
Дополнительные:
 
AVSGrabber.ape       - (AVS Grabber) Захват AVS видео в файл AVI.
globmgr.ape          - (Global Variable Manager) Мегабуферизация.
FramerateLimiter.ape - (Framerate Limiter) Замедление пресета.
lyrics.ape           - (Lyrics) Лирика.
NegativeStrobe.ape   - (Negative Strobe) Отрицательный строб с переменной скоростью.
picture2.ape         - (Improved picture renderer) Рендеринг изображений.
pfavs.ape            - (Video device input in AVS) Перенаправление видеозахвата в AVS.
RGBfilter.ape        - (RGB filter) Цветные фильтры.
saver.ape            - (Saver) Захват видео в AVI без сжатия : + Pixelcorps / AVI output.
ScreenReverse.ape    - (Screen Reverse) Разворот экрана.
slideshow.ape        - (Slideshow) Слайдшоу изображений : + Render APE / Slideshow.
VfxAviPlayer.ape     - (Avi Player) Проигрыватель : + Virtual Effects / AviPlayer.
vjcontrol.ape        - (VJ Control) Интерактивное управление : + Misc / VJ Control.
 
Artificial Life 1.07:
 
ifs.ape     v.1.01 - (IFS) Пятно : + Render APE / ifs.
flock.ape   v.1.03 - (Flock) Стадо : + Render APE / Flock Off.
conway.ape  v.1.03 - (Game of Life) Игра жизни : + Render APE / Conway's Game of Life.
flame.ape   v.1.04 - (Flame) Пламя : + Render APE / Flame.
 
Tomylobo:
 
buffer.ape         - Buffer blend.
eeltrans.ape       - Automated AVSTrans.
normalise.ape      - (Normalise pictures contrast) Нормализация изображений.
triangle.ape       - Triangle renderer.
 

* Ссылки
 
http://www.visbot.net
http://homepage.ntlworld.com/jheriko/avstutorial.html
http://www.daandirk.nl/avs
http://winlight.narod.ru/lib/AVS.html
http://www.winamp.com/plugins/browse/11
http://www.winamp.com/plugins/browse/1
http://www.winamp.com/plugins
http://www.winamp.com/development/plugins-avs-apes
http://forums.winamp.com
http://forums.winamp.com/showthread.php%3Fthreadid=90097
http://forums.winamp.com/printthread.php%3Fs=3640aa522271de4fae7f5cf30b5485c8%26threadid=90097
http://www.nullsof.com
Hosted by uCoz