Введение

AmpView

 Top Next

AmpView это Lister-плагин для Total Commander, позволяющий проигрывать файлы в форматах WAV, MP3, MP2, MP1, Ogg Vorbis, WMA, MIDI, MOD и MO3 (MO3, IT, XM, S3M, MTM, MOD, UMX). Он основан на звуковом движке BASS (bass.dll, basswma.dll, bassmidi.dll) и не требует наличия в системе каких-либо кодеков или библиотек. Исключением является воспроизведение MIDI - для поддержки этого формата необходимо наличие в системе установленных звуковых банков (sound-fonts). Также AmpView позволяет открывать списки треков в форматах m3u and pls.

Минимальные системные требования:

· Процессор Pentium 2 (AMD K6-2) с частотой 266 МГц или более
· 32 Мбайт оперативной памяти
· Операционная система Windows 9x/Me или Windows 2000/XP (Home или Pro). Windows 95 и Windows NT ОФИЦИАЛЬНО НЕ ПОДДЕРЖИВАЮТСЯ!
· DirectX 3 или более поздний
· Звуковые шрифты (sound-fonts). Необходимы для поддержки MIDI.

Все права на данный плагин принадлежат автору. Данный продукт абсолютно бесплатен и распространяется свободно. Вы можете использовать его как вам угодно, однако помните, что вы делаете это на свой страх и риск, а автор не несет никакой ответственности за возможный моральный или материальный ущерб, вызванный при использовании данного продукта.

© 2004-2007 Николай Петроченко

E-mail: nik_vr@mail.ru

Web: www.megabyte-web.ru


Благодарности

 Top Previous Next

Автор благодарит за активное участие в тестировании:

mramor

Bill_LP

DimON

Augomol

Игорь aka GALANT

А также тех, кто прислал мне переводы языковых файлов:

Чешский - Yarca <yarca@email.cz>

Немецкий - Kurt Lettmaier <k.lettmaier@onlinehome.de>

Нидерландский - BrainWave <brainwave036@gmail.com>

Французский - Ouistiti <Ouistiti@Gmail.com>

Итальянский - Debenedetti Emanuele <sanremoedaltro@libero.it>

Корейский - BlueSolvit <bluesolvit@hanmail.net>

Литовский - Aleksandr Balbatunov aka zux <zux.root@gmail.com>

Испанский - Vico//Koby <vicokoby7@hotmail.com>

Украинский - Сергей Грицюк <sergri@mail.lviv.ua>

Особая благодарность

Andrey Pyasetskiy <webmaster@wincmd.ru> - администратор Wincmd.ru

Christian Ghisler - автор Total Commander

Sergey Chernih aka SCHMaster, Dest - за помощь в реализации некоторых функций


Горячие клавиши

По-умолчанию установлены следующие комбинации "горячих клавиш":

[Left] - Назад на 10 секунд

[Right] - Вперед на 10 секунд

[F1] - Информация о плагине / Справка

[Ctrl]+[P] - Опции

[Ctrl]+[T] - Режим таймера (прямой/обратный отсчет)

[Alt]+[E] - Показать/скрыть список треков

[Num +] - Увеличить громкость

[Num -] - Уменьшить громкость

[O] - Открыть файл

[Ctrl]+[O] - Открыть папку

[Z] - Открыть предыдущий трек

[X] - Воспроизведение

[C] - Пауза

[V] - Остановить

[B] - Открыть следующий трек (из списка)

[Ctrl]+[B] - Открыть следующий трек (из папки)

[Ctrl]+[1] - Упорядочить список по заголовкам треков

[Ctrl]+[2] - Упорядочить список по именам файлов

[Ctrl]+[3] - Упорядочить список по длине треков

[Esc] - Закрыть окно

Внимание! Некоторые "горячие клавиши" можно изменить в окне настройки.


Пожертвование

 Top Previous

Данная программа является бесплатной, но если вы хотите, чтобы я продолжал работу над ней, вы можете перевести на мой счет небольшую сумму (сколько не жалко).

Мой счёт (рублёвый):

Слободское ОСБ №4387 / 01 пос. Вахруши

ИНН 77 070 83 893

Счёт 303 018 104 270 066 027 34

Ф.И.О. Петроченко Николай Юрьевич


Связь

Сообщения об ошибках, пожелания, предложения, ругательства, угрозы, переводы языковых файлов, новые скины, и прочее вы можете отправлять по адресу Nik_vr@mail.ru


Создание скинов

Краткое руководство по созданию скинов

Последние изменения от 15 апреля 2006 года.

1. Общее описание

Скин для AmpView 3.x представляет собой zLib-архив, в котором содержатся файлы рисунков и файл описания skin.ini При этом файлы рисунков, необходимых для отрисовки окна списка треков, должны располагаться в подкаталоге PlayList, остальные файлы - в корневом каталоге скина. Для упаковки скина можно воспользоваться программой AVTools: укажите программе папку, в которой находится skin.ini и нажмите кнопку Pack.

Сам файл skin.ini представляет собой обычный ini-файл, содержащий несколько секций. Каждая секция отвечает за один из элементов скина.

Если вы используете стандартное значение какого-либо параметра, то его можно не указывать. Если какой-либо элемент вам не нужен, то его секцию можно удалить (что равносильно использованию visible=0).

Далее приводятся описания основных секций skin.ini. В качестве примера используется скин Winamp 5, так как он использует все допустимые элементы.

2. Видимость

Все секции, кроме [info] и [PlayList], содержат параметр visible, отвечающий за видимость элемента. Если этот параметр равен нулю (т.е. visible=0), то соответсвующий элемент скина загружаться не будет (что сокращает время загрузки).

3. Координаты и размеры

Практически все элементы скина (кроме окна списка и основного рисунка) имеют параметры Left и Top, отвечающие за положение элемента на форме. Обратите внимание, что отсчёт координат производится от левого верхнего угла. Значение этих параметров ограничено следующими рамками: от 0 до размера окна - размер элемента. В случае если координата выходит за эти рамки, её значение будут принято равным нулю.

Также для элементов [TrackCaption] и [Timer] необходимо указывать параметры width и height, отвечающие, соответсвенно, за ширину и высоту элемента. Для остальных элеменов эти параметры определяются автоматически.

4. Шрифты

В секциях тех элементов, которые содержат текст, может присутствовать строка, отвечающая за внешний вид шрифта. Строка должна иметь следующий формат:

Font=#FFFFFF|Arial|7|nnnn

При этом первая часть отвечает за цвет шрифта. Цвет указывается в HEX-формате, принятом в HTML. Символ решётки (#) можно не указывать. Вторая указывает имя шрифта. Обратите внимание, что это НЕ имя ФАЙЛА, а название шрифта в том виде, в каком оно доступно системе. Узнать такое название можно в любой программе, где допускается выбор шрифта (например, Блокнот). Третья часть указывает размер шрифта в пикселях. Четвёртая часть отвечает за стиль шрифта. Каждый из четырёх флагов может принимать значения y (да) или n (нет). Флаги отвечают за следующие стили (в порядке следования): Bold (жирный), Italic (куривный), Underline (подчеркнутый), Strikeout (зачеркнутый).

Для удобного формирования строки описания шрифта вы можете использовать программу AVTools.

Размеры шрифтов рекомендуется подбирать при нормальном размере системных шрифтов (100%), поскольку при других системных опциях (например, 120%) производится их автоматическая корректировка.

5. Тени

Для текстовых элементов доступен параметр shadow, отвечающий за отрисовку тени. Если его значение равно 0 (по-умолчанию), то тень отрисовываться не будет. Если shadow=1, то тень будет нарисована, если её отрисовка разрешена опцией AmpView "Разрешить отрисовку тени".

6. Цвета

Параметры, отвечающие за цвет, должны содержать значение в HEX-формате, принятом в HTML. Решётку (#) перед значением можно не указывать. По умолчанию используется значение #FFFFFF (чёрный цвет).

7. Рисунки

Описания графических элементов содержат ссылки на файлы рисунков. Файлы элементов основного окна должны находиться в одном каталоге с файлом skin.ini. Файлы для элементов окна списка должны находиться в подкаталоге PlayList.

Если вы используете стандартные имена файлов (как в этом примере), то имя файла можно не указывать (в целях экономии :) ).

Допускается использование графических файлов в форматах BMP и PNG.

8. Секция описания

Содержит параметры, отвечающие за название скина, имя его автора, краткое описание, а также и адрес электронной почты и URL автора. Вся эта информация отображается в окне опций AmpView.

[info]

name=Winamp 5

author=Nikolay Petrochenko

desc=Winamp5©-like skin

email=Nik_vr@mail.ru

homepage=www.wincmd.ru/plugring/AmpView

9. Текстовые элементы

В данном разделе описан формат текстовых элементов скина. Он одинаков для секций [SPS], [BitRate] и [ChannelMode]. Принципы описания параметров смотри выше.

[ChannelMode]

visible=1

Font=#FFFFFF|Arial|7|nnnn

left=100

top=32

shadow=0

При этом секция [SPS] отвечает за отображение частоты трека (SampleRate), секция [BitRate] за отображение битрейта, а секция [ChannelMode] - за режим каналов (моно, стерео и т.д.)

10. Таймер и строка заголовка

В данном разделе приводится пример описания элемента [Timer]. Аналогично для [TrackCaption]

[Timer]

visible=1

Font=#FFFFFF|Arial|14|nnnn

left=20

top=35

width=68

height=22

shadow=0

10. Основное окно

Это пример описания основного окна. Параметр pic отвечает за рисунок основного окна. Параметр Transparent отвечает за прозрачность окна. Если Transparent=1, то точки окна, окрашенные цветом TransparentColor будут прозрачны. Если Transparent=0, то прозрачность использоваться не будет.

[MainImage]

pic=main.png

Transparent=0

TransparentColor=#FF00FF

11. Кнопки с фиксируемым состоянием

К этой категории относятся кнопки, которые могут иметь два основных состояния ("Включено" и "Отлючено"):

[Play] - "Воспроизведение"

[Pause] - "Пауза/Продолжить"

[Stop] - "Остановить"

[MuteButton] - "Выключить звук"

[PlayListButton] - "Показать/скрыть список треков"

В описании данных кнопок, помимо основных параметров, присутствуют четыре параметра, отвечающие за рисунки, которыми отбражается кнопка. Параметр InactiveImage отвечает за рисунок в обычном состоянии (кнопка не нажата и действие, за которое она отвечает, не активно).

Параметр PushedImage отвечает за рисунок, которым кнопка отображается в нажатом состоянии (над ней нажата кнопка мыши).

Параметр UsedImage отвечает за изображение кнопки в "активном" состоянии. Т.е., например для кнопки Play этот рисунок будет применён, если в данный момент производится воспроизведение, для Pause - если пауза и т.п.

Для кнопки [MuteButton] рисунок UsedImage используется при выключенном звуке (режим Mute), а рисунок InactiveImage - при включенном звуке.

[PlayButton]

visible=1

left=34

top=111

InactiveImage=PlayBtnInactive.png

UsedImage=PlayBtnUsed.png

PushedImage=PlayBtnPushed.png

12. Кнопки без фиксируемого состояния

К этой категории относятся все остальные кнопки, у которых нет второго (фиксированного) положения:

[CloseButton] - "Закрыть окно"

[MinButton] - "Свернуть окно"

[OpenButton] - "Открыть файлы"

[InfoButton] - "Информация о файле"

[PrevButton] - "Предыдущий трек"

[NextButton] - "Следующий трек"

Описания этих кнопок в целом аналогичны, за одним исключением - для них не нужен параметр UsedImage.

[CloseButton]

visible=1

left=328

top=4

InactiveImage=CloseBtnInactive.png

PushedImage=CloseBtnPushed.png

ПРИМЕЧАНИЕ: кнопка "Закрыть", используемая в окне списка треков, не нуждается в отдельном описании. Её изображения и размеры берутся из описания кнопки [Close], а позиция высчитывается в ходе работы. При этом её видимость зависить только от высоты заголовка окна списка: если размер заголовка (фактически определяемый параметром [TopOffset] секции [PlayList]) больше либо равен высоте кнопки [Close] (т.е. кнопка умещается на заголовок), то она отображается. Иначе - кнопка не рисуется. Верхняя позиция для данной кнопки ([Top]) высчитывается таким образом, чтобы она находилась точно по центру заголовка (или на один пиксель выше центра).

13. Индикатор прогресса и регулятор громкости

Эти два элемента скина имеют одинаковое описание. Параметр RulerImage отвечает за фоновый рисунок индикатора (линейку).

Параметры ThumbNormal и ThumbPressed отвечают за внешний вид "бегунка" в обычном и нажатом состояниях соответственно. При этом высота бегунка не должна превышать высоту линейки, а ещё лучше, что бы они совпадали. Ширина бегунка должна быть как минимум в два раза больше длины линейки. При не соблюдении этих двух требований возможны проблемы при отрисовке данных элементов.

[Progress]

visible=1

left=8

top=93

ThumbNormal=ScrollThumbNormal.png

ThumbPressed=ScrollThumbPressed.png

RulerImage=ScrollRuler.png

14. Окно списка треков (PlayList)

Этот элемент - самый сложный из всех, используемых AmpView'ом. Окно списка отрисовывается из восьми (8) небольших фрагментов. Эти фрагменты описываются в следующих параметрах:

LeftTop - Левый верхний угол окна

LeftBottom - Левый нижний угол окна

RightTop - Правый верхний угол окна

RightBottom - Правый нижний угол окна

Left - Левая граница окна

Right - Правая граница окна

Top - Верхняя граница окна

Bottom - Нижняя граница окна

При этом следует помнить, что элементы, отвечающие за граница окна при отрисовке размножаются, поэтому чем меньше их размеры, тем медленнее рисуется окно. В общем случае их размеры должны быть не менее 15 пикселей.

После отрисовки окна произодится установка размеров и позиции самого списка. Для того, чтобы список не "наехал" на рамку окна, необходимо правильно указать значения параметров LeftOffset, RightOffset, TopOffset и BottomOffset. Эти параметры определяют соответственно отступы для списка от левой, правой, верхней и нижней рамок. В общем случае из значения должны совпадать с размерами рамок (в пикселах). Т.е. если ширина левой рамки составляет 6 пикселей, то значение LeftOffset также должно равняться 6.

Ещё один сложный момент - это указание цветов фона и текста для элементов списка. Далее указаны параметры, отвечающие за это и их назначение.

Font - основной шрифт списка. Используется для пункта, который в данный момент не воспроизводится и не выделен.

SelFont - шрифт, используемый для выделенного элемента списка (на котором установлен курсор).

PlayFont - шрифт, используемый для элемента, который воспроизводится в данный момент.

SelPlayFont - шрифт, используемый для элемента, который воспроизводится в данный момент и вдобавок выбран (на нем установлен курсор).

BackColor - основной цвет фона. Используется для пункта, который в данный момент не воспроизводится и не выбран.

BackColor2 - второй основной фоновый цвет. Если этот параметр указан, то чётные пункты списка будут закрашиваться BackColor2, а нечётные - BackColor (как в iTunes). Если этот параметр не указан, то все элементы будут закрашиваться цветом BackColor.

SelBackColor - фоновый цвет выбранного элемента списка.

SelPlayBackColor - фоновый цвет выбранного элемента списка, который воспроизводится в данный момент.

[PlayList]

LeftTop=LeftTop.bmp

Left=Left.bmp

LeftBottom=LeftBottom.bmp

RightTop=RightTop.bmp

Right=Right.bmp

RightBottom=RightBottom.bmp

Top=top.bmp

Bottom=Bottom.bmp

Font=#BBD2FF|Arial|8|nnnn

BackColor=#1C3D7D

SelFont=#BBD2FF|Arial|8|nnnn

PlayFont=#BBD2FF|Arial|8|ynnn

SelPlayFont=#BBD2FF|Arial|8|ynnn

SelBackColor=#6788C9

SelPlayBackColor=#6788C9

LeftOffset=6

RightOffset=6

TopOffset=6

BottomOffset=6

15. Кнопка закрытия окна списка треков (PLCloseButton)

Данная кнопка отличается от всех остальных тем, что у нее нет фиксированных координат - она перемещается при изменении размеров окна. По-этому, вместо параметров Top и Left при её описании используются пареметры RightOffset и TopOffset. Первый указывает, на сколько пикселей будет данная кнопка сдвинута относительно правого края окна. Второй - на сколько кнопка сдвинута относительно верхней гарницы.

Остальные параметры полностью аналогичны используемым другими кнопками без фиксируемого состояния.

[PLCloseButton]

visible=1

RightOffset=7

TopOffset=4

InactiveImage=CloseBtnInactive.png

PushedImage=CloseBtnPushed.png

16. Примечания

В качестве шаблонов для создания собственных скинов вы может использовать один из существующих. В скинах, сделаннх мной (Lister, Lister Lite, Winamp 5 и iTunes) демонстрируются все возможности, которые доступны при создании скинов. Внимательно изучите эти скины перед началом работы. Для облегчения работы вы можете использовать программу AVTools, которая умеет упаковывать и распаковывать скины, а также автоматически генерировать строки описания шрифтов и цвета.

По всем вопросам, связанным с созданием скинов, вы можете обращаться ко мне по адресу Nik_vr@mail.ru


Установка

1. Распакуйте содержимое архива в отдельный каталог (например, C:\Total Commander\Plugins\AmpView)
2. Подключите плагин (выберите пункт меню Конфигурация-Настройка, перейдите на страницу Правка/Просмотр, нажмите кнопку "Настройка внутренней программы", затем кнопку "LS-Plugins" и добавьте AmpView в список)


Форматирование заголовков

Строка форматирования может содержать следующие фрагменты:

1. Обычный текст. Например, "Трек №". Этот текст используется без каких-либо изменений.

2. Специальные константы, начинающиеся с символа '%' для подстановки значений тегов:

"%TITL" - заголовок трека;

"%ARTI" - имя исполнителя;

"%ALBM" - название альбома;

"%GNRE" - жанр трека;

"%YEAR" - год выхода трека/альбома;

"%CMNT" - комментарий;

"%TRCK" - номер трека;

3. Специальные выражения:

"%IFV1(x,a)" - если x не является пустой строкой, то %IFV1() будет содержать a, в противном случае - пустую строку;

"%IFV2(x,a,b)" - если x не является пустой строкой, то %IFV2() будет содержать a, иначе результатом будет b;

"%IUPC(x)" - переводит x в верхний регистр. Например, "%IUPC(foO)" вернет "FOO";

"%ILWC(x)" - переводит x в нижний регистр. Например, "%ILWC(fOO)" вернет "foo";

"%ICAP(x)" - переводит первую букву во всех слова в верхний регистр, а остальные буквы - в нижний. Например, "%ICAP(FoO bAR)" вернет "Foo Bar";

4. Игнорируемые символы:

"%%" - "%"

"%(" - "("

"%," - ","

"%)" - ")"

Пример. Предположим, что открываемый в AmpView трек содержит следующие теги:

Title: "ОПЕРА"

Artist: "ЛЮБЭ"

Album: "Альбом"

Track: "3"

Year: "2003"

Строка форматирования следующего вида: "%IFV1(%TRCK,%TRCK. )%IFV2(%ARTI,%ICAP(%ARTI),no artist) - %IFV2(%TITL,%ICAP(%TITL) -,no title -) %IFV1(%ALBM,%IUPC(%ALBM))%IFV1(%YEAR, %(%YEAR%))"

На выходе получим: "3.- Любэ - Опера - АЛЬБОМ (2003)"

Если поля 'Artist' и 'Title' пусты, то на выходе увидим следующее:

"3. - no artist - no title - АЛЬБОМ (2003)"

Если пусто только поле 'Track', то вывод будет следующим:

"Любэ - Опера - АЛЬБОМ (2003)"

Примечания.

1. Если в mp3-файле содержатся теги двух версий (ID3v1 и ID3v2), то теги ID3v2 будут иметь преимущество.

1. Строка "%IFV2(sometext ,a,b)" всегда возвратит a, поскольку пробел после "sometext" учитывается! Это сделанно специально.

2. Символы '%(,)' зарезервированы. Используйте их внимательно! Так, например, строка %YEAR будет проигнорирована, поскольку такой константы нет.

3. Будьте внимательны при составлении строки форматирования. Ее неправильное использование в отдельных случаях может вызвать сбои! Кроме того, выходная строка может выглядеть очень плачевно...