AY Sound FX Editor v0.6


Содержание

Описание
Интерфейс
Горячие клавиши
Импорт эффектов
Экспорт эффектов
Форматы файлов
Плеер для ZX Spectrum
История версий
Благодарности
Контакты


^ Описание

AY Sound FX Editor представляет собой комплексное решение для создания звуковых эффектов для чипа AY-3-8910. Подобные эффекты могут использоваться в играх и других программах на ZX Spectrum. Возможно использование и на других микрокомпьютерах, использующих AY-3-8910. В состав пакета входят: собственно кросс-редактор звуковых эффектов (программа для PC под ОС Windows), пример простого плеера на ассемблере Z80 в исходниках, скомпилированный пример использования плеера и библиотека готовых звуковых эффектов.

Редактор позволяет создавать одноканальные эффекты длиной до 4096 'кадров' на эффект. Кадров равен 1/50 секунды, соответственно, максимальная продолжительность звучания эффекта - около 80 секунд. Для каждого кадра задаются значения регистров тона/шума/микшера. Огибающая не используется. Данные сохраняются в компактном формате без повторения одинаковых значений. Эффекты собираются в банки до 256 эффектов. Плеер эффектов работает с банком, нужный эффект вызывается по его номеру в банке.

Нужно отметить, что редактор не может содавать эффекты сам по себе, он только упрощает редактирование данных для регистров AY. Способ создания эффектов в редакторе похож на создание сэмплов в музыкальных редакторах для AY. Поэтому для создания эффектов требуется понимание общих принципов работы AY и способов получения требуемого результата. Однако, редактор имеет средства импорта из различных форматов, что может упростить создание эффектов.



^ Интерфейс

Интерфейс редактора англоязычный. В верхней части окна редактора находится главное меню. Назначение пунктов меню:

File
New bank - Очистка банка эффектов, создаётся один пустой эффект (текущий);
Load bank - Загрузка банка эффектов из файла;
Save bank - Сохранение банка эффектов в файл;
Save bank w/o names - Сохранение банка эффектов в файл, без названий эффектов;

Clear current effect - Очистить текущий эффект;
Load current effect - Загрузить текущий эффект из файла одиночного эффекта;
Save current effect - Сохранить текущий эффект в файл;

Multi-load to bank - Загрузить несколько эффектов из файлов, в конец банка, начиная с последнего пустого эффекта;
Multi-save from bank - Сохранить все эффекты из банка в отдельные файлы, имена берутся из имён эффектов в банке. Эффекты сохранятся в указанную для первого из них папку;

Exit - Выход из программы.
Edit
Cut - Удалить из эффекта выделенные строки и поместить их в буфер обмена. Для этого и последующих действий в случае отсутствия выделения берётся текущая строка (с курсором);
Copy - Скопировать выделенные строки в буфер обмена (выделение снимается);
Paste - Вставить содержимое буфера обмена в позицию курсора, текущая и последующие строки будут сдвинуты вниз;
Delete - Удалить выделенные строки;

Select all - Выделить все активные строки эффекта;
Unselect all - Снять выделение со всех строк;
Inverse selection - Инвертировать выделение.
View
Piano input - Показать/спрятать окно ввода музыкальных тонов (см. далее);
Linear period - Отображение значения тона в линейной шкале (неравномерное распределение частот);
Logarithmic period - Отображение значения тона в логарифмической шкале.
Bank
Add new effect - Добавить новый эффект в конец банка. Новый эффект становится текущим;
Delete effect - Удалить текущий эффект из банка;
Insert new effect - Вставить новый эффект в банк вместо текущего; текущий и последующие сдвигаются.
Import (см. раздел Импорт эффектов)
PSG for AY - Импорт из PSG-файла;
VTX file - Импорт из VTX-файла;
VGM file - Импорт из VGM-файла;
Wave file - Импорт из WAV-файла.
Export (см. раздел Экспорт эффектов)
VTII Sample - Экспорт в виде инструмента Vortex Tracker II;
Wave file - Экспорт в виде WAV-файла;
CSV - Экспорт в текстовом формате CSV.


Под главным меню находится строка c несколькими элементами управления. При наведении на них стрелки мыши выводится подсказка об их назначении.

В левой части строки находится группа из трёх кнопок. Кнопки с символами Play и Stop выполняют соответствующие действия с текущим эффектом. Кнопка с клавишами пианино показывает/убирает с экрана окно ввода музыкальных тонов (см. далее).

В правой части строки находятся кнопки управления банком эффектов. Кнопка [Add] добавляет эффект в конец банка. Кнопка [Del] удаляет текущий эффект. Следующие четыре кнопки, между которыми находится индикатор номера текущего эффекта и их общего количества, переключают текущий эффект. Двойные стрелки - переход к первому и последнему эффекту в банке, одинарные - к предыдущему и следующему. Последним в строке располагается поле с именем текущего эффекта. Для ввода имени нужно кликнуть левой кнопкой мыши на поле с названием. Завершение ввода имени происходит по Enter. В процессе редактирования имени все нажатия кнопок направляются полю ввода, поэтому часть горячих клавиш в этот момент не действует.


Всю остальную часть окна занимает поле редактирования текущего эффекта. Редактирование значений может производиться как с помощью мыши, так и вводом значений с клавиатуры. Поле редактирования разделено на несколько колонок. Pos - номер строки. Строки можно выделять кликом левой клавишей мыши на номере; снимается выделение правой клавишей мыши. T, N - значение микшера. Изменяется аналогично выделению. Per - значение периода, то-есть высоты тона. Ns - значение частоты шума. V - значение громкости. При клике любой кнопкой мыши на значениях Per,Ns,V происходит переход курсора в эту позицию. Остальную часть поля редактирования занимает графическое отображение значений периода, частоты шума, и громкости. Кликом любой клавиши мыши можно изменять эти значения. При удержании кнопки Ctrl перемещение мыши по горизонтали запрещается, что позволяет легко рисовать одинаковые значения в нескольких строках.

Окно редактора может изменять размер по вертикали (с дискретностью в строку), размер по горизонтали не меняется.


Для создания эффектов, использующих музыкальные тона в редакторе есть специальное окно. Оно вызывается нажатием клавиши с изображением клавиш пианино или через главное меню View->Piano Input. В левой части окна располагается подсказка, каким клавишам на клавиатуре соответствуют ноты октавы. В правой части - ряд контролов с настройками ввода. В поле Octave указывается текущая октава (1...8). Поле Step - шаг смещения курсора после ввода ноты, в фреймах. Поле Fill - шаг заполнения, т.е. сколько строк подряд будет заполнено одним нажатием. Кнопка Link связывает поля Step и Fill, делая шаг заполнения равным шагу перемещения курсора. Нажатая кнопка Set T устанавливает флаг тона во вводимых строках, отжатая - не меняет ранее установленный. Нажатая кнопка Set volume устанавливает для вводимых строк значение из поля громкости (справа от кнопки), отжатая - не изменяет ранее установленную.



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

Главное окно

Cursor Up/DownПереход к верхней/нижней строке.
Cursor Left/RightПереход между колонками тон/шум/громкость.
0-9, A-FВвод значений тона/шума/громкости.
Page Up/DownПереход на экран вверх/вниз.
Колесо мышиПереход на пять строк вверх-вниз.
HomeПереход на начало эффекта (нулевая позиция).
EndПереход на конец эффекта (последнее ненулевое значение громкости).
Клик мышиНа линейках тона/шума/громкости - изменение их значений; на имени эффекта - переход в режим редактирования имени.
Левая кнопка мышиНа флагах T/N - установка флага; на номере строки - выделение строки.
Правая кнопка мышиНа флагах T/N - сброс флага; на номере строки - сброс выделения.
CtrlЗапрет горизонтального перемещения мыши, когда она находится над полоскам значений эффектов.
~Отображение окна нотного ввода.
EnterВ режиме редактирования эффекта - проигрывание эффекта; в режиме ввода имени эффекта - переход в режим редактирования эффекта.
Ctrl+EnterПроигрывание эффекта с текущей строки.
ПробелПрекращение проигрывания эффекта.
DeleteУдаление выделенного блока (выделенные строки уберутся, остальные сдвинутся). если нет выделенных строк, удаляется текущая.
InsertВставка пустой строки (текущая и последующие строки сдвигаются вниз).
Ctrl+InsertДублирование текущей строки (последующие строки сдвигаются вниз).
TПереключает флаг T на текущей строке.
NПереключает флаг N на текущей строке.
Ctrl+AВыделяет всю активную часть эффекта (до последней ненулевой громкости).
Ctrl+IИнвертирует выделение активной части эффекта.
Ctrl+XПеренести выделенные строки в буфер обмена, удалив их из эффекта.
Ctrl+CСкопировать выделенные строки в буфер обмена (выделение снимается).
Ctrl+VВставить содержимое буфера обмена в позицию курсора, текущая и последующие строки будут сдвинуты вниз.
[+] или Numpad [+]Переход к следующему эффекту в банке.
[-] или Numpad [-]Переход к предыдущему эффекту в банке.
Shift+[+] или Shift+Numpad [+]Увеличить значение тона, шума или громкости в выделенном блоке на 1.
Shift+[-] или Shift+Numpad [-]Уменьшить значение тона, шума или громкости в выделенном блоке на 1.


Окно ввода нот

Z,S,X,D,C,V,G,B,H,N,J,MВвод нот До..Си текущей октавы.
Shift+клавиша нотыВвод ноты с октавой на одну выше текущей.
Ctrl+клавиша нотыВвод ноты с октавой на одну ниже текущей.
Numpad 1...8Выбор текущей октавы.



^ Импорт эффектов

Поддерживаются следующие форматы.

PSG

Дамп регистров AY. Поддерживаются файлы с полным заголовком (16 байт). Такие файлы создают AY-Emulator и Z80Stealth. Перед импортом появляется диалог выбора канала, с которого будут браться данные. Auto выбирает тот канал, на котором первым происходит изменение громкости. Импортируется тон, громкость, и установки микшера выбранного канала, а также значение регистра шума. Для облегчения импорта файл должен содержать одиночные одноканальные эффекты. При auto-выборе канала пауза в начале файла, до начала реальных выводов в порты, пропускается автоматически.

VTX

Дамп регистров AY. Такие файлы создают AY Emulator и UnrealSpeccy. Импорт происходит аналогично PSG.

VGM

Дамп регистров SN76489 и аналогов, звукового чипа, используемого в Master System, Game Gear, Sega Genesis, ColecoVision и ряде других приставок и компьютеров. При импорте происходит попытка адаптации данных для получения схожего звучания, но из-за существенной разницы в возможностях и ограничениях звуковых чипов сходство будет довольно условным.

WAV

Аудиофайлы. Поддерживаются любые стандартные PCM-файлы (любая разрядность, частота дискретизации, mono/stereo). Импортируется громкостная огибающая, выполняется попытка анализа высоты тона. Если удалось определить высоту звука в текущем кадре, для него устанавливается флаг T, иначе N.

^ Экспорт эффектов

Поддерживаются следующие форматы.

VTII Instrument

Инструмент для Vortex Tracker II. Представляет собой текстовый файл. В диалоге экспорта можно задать ноту, относительно которой эффект должен звучать в трекере с правильной высотой тона.

WAV

Обычный звуковой файл с параметрами 44100 Гц, 16 бит, моно, без сжатия.

CSV

Текстовый файл с набором параметров, разделённых запятыми. Формат удобен для последующего разбора внешними утилитами-конверторами.

Current effect

Когда этот пункт выбран, предыдущие функции экспортируют только текущий эффект с указанным именем файла.

All effects

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

^ Форматы файлов

Порядок байт в двухбайтных числах - младший/старший.

Формат одиночного эффекта, расширение .afx

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

 bit0..3  Громкость
 bit4     Запрещение T
 bit5     Изменение T
 bit6     Изменение N
 bit7     Запрещение N

Если установлен bit5, далее следуют два байта со значением тона; если установлен bit6 - байт со значением шума; если установлены оба этих бита - сначала идёт значение тона, потом шума; если не установлен ни один - сразу идёт следующий информационный байт.

Конец эффекта помечается последовательностью байт #D0,#20. Плеер должен определять её до вывода в регистры (сравнением значения шума на = #20). В редакторе за признак конца эффекта считается последнее ненулевое значение громкости, вне зависимости от остальных параметров.

Формат банка эффектов, расширение .afb

Заголовок:

+0 (1 байт) Количество эффектов в банке (максимум 256 эффектов, значение 0 = 256);
+1 (2 байта на эффект) Таблица смещений до начала каждого из эффектов. Смещение указывается относительно второго байта самого смещения. Такой формат смещения позволяет быстро вычислять адрес эффекта:

   hl=адрес в таблице смещений
   ld c,(hl)
   inc hl
   ld b,(hl)
   add hl,bc
   hl=адрес эффекта

Данные:

+n (m байт) Сами эффекты в формате одиночного эффекта. После каждого эффекта может идти строка с его названием, оканчивается нулевым байтом. Строка может отсутствовать (при сохранении через соответствующий пункт в меню File), в этом случае нулевой байт также отсутствует.



^ Плеер для ZX Spectrum

В состав пакета входит простейший плеер эффектов. Он находится в папке /z80player/, файл ayfxplay.a80, в виде исходника для кросс-ассемблера asm80. Файлы .a80 представляют собой текстовый файл, их можно просмотреть любым текстовым редактором. Исходник снабжён комментариями по использованию и работе плеера.

Плеер проигрывает эффекты на всех трёх каналах AY. При наличии свободного (незвучащего) канала выбирается этот канал, иначе - тот, который звучал дольше всего. Проигрывание музыки при работе плеера эффектов невозможно.

Помимо плеера прилагается исходник тестовой программы, и сама программа в собранном виде, в SCL-файле. Все клавиши вызывают различные эффекты, кроме клавиши пробела. Последняя включает/выключает музыку, проигрываемую на втором AY-чипе TurboSound'а по схеме NedoPC (если он есть). Если TS отсутствует, музыка будет проигрываться на том же чипе, что и эффекты, это приведёт к различным звуковым артефактам.



^ История версий

v0.6 01.02.17

+ Экспорт текущего эффекта как WAV, CSV, инструмент для Vortex Tracker II
* Интерполяция эмулируемого звука
+ Кнопка ~ вызывает и скрывает окно нотного ввода
+ Мультиэкспорт для всех форматов
+ Импорт WAV с анализатором амплитуды и высоты звука
+ Импорт VGM файлов с данными для микросхемы SN76489
+ Больше эффектов
+ Исходный код редактора

v0.5, v0.51, v0.52 делались в период 2006-2017, не публиковались

+ Кнопка отмены в диалоге выбора каналов при импорте PSG/VTX
* В диалоге импорта по умолчанию выбрана кнопка OK
+ Ввод с помощью мыши в окне ввода музыкальных тонов
+ Подсветка клавиш в окне ввода музыкальных тонов по нажатию
* Не работал ввод диезов, исправлено
+ Выбор частотной таблицы нот (Soundtracker, Protracker, ASM or PSC, Real, SQ-Tracker)
* Новая иконка

v0.4 09.05.06

- Полностью убрана возможность выбора частоты прерываний
* Изменён формат эффектов и банков
* Ряд оптимизаций z80-плеера по размеру и скорости (в т.ч. по советам AlCo)
* Исправлены критические ошибки в импорте из VTX и PSG
+ Запрещение кнопок переключения эффектов, если переключение невозможно
+ Запрет на сохранение пустого эффекта
+ Сохранение всех эффектов из банка в отдельные файлы
+ Кнопки перехода на первый и последний эффекты в банке
+ Дублирование текущей строки по Shift+Insert
+ Окно ввода музыкальных тонов
- Вводить ноты мышью пока нельзя
+ Добавлено 14 эффектов в библиотеку
* Обновлена документация

v0.3 28.02.06

* Версия для пред-релизного тестирования, реализованы все основные возможности редактора
+ Операции копирования блоков через буфер обмена (cut, copy, paste)
* Исправлены ошибки в импорте из PSG
+ Добавлен импорт из VTX-файлов (thx to SMT)
* Убрана сильная нелинейность в начале логарифмической шкалы отображения тона (thx to AlCo)
+ Компенсация резких перемещений мыши, для избежания пропусков строк
+ Собирание эффектов в банки
+ Автозагрузка сразу нескольких эффектов с добавлением их в банк
+ Написан простейший плеер эффектов для Spectrum и пример его использования (исходники для asm80, с подробными комментариями)
+ Собрана библиотека из 205 эффектов, в основном взятых из различных игр и серии музыкальных демо 'MSX'
+ Подготовлена документация
* Прочие небольшие изменения

v0.2 12.02.06

* Исправлены проблемы с отображением в разных схемах оформления Windows (цвета, размеры, dpi)
* Флаги T/N теперь устанавливаются левой кнопкой мыши, сбрасываются правой (вместо toggle)
* Выделение строк теперь происходит при нажатии левой кнопки мыши (убирается правой) в столбце номера позиции
* Установка значений в линейках тона/шума/громкости теперь происходит любой кнопкой мыши
+ При выделении строк и редактировании линеек мышью происходит удержание её в пределах столбца (предотвращает выход курсора мыши за пределы редактируемого поля)
* Убрана перерисовка поля редактирования при удержании клавиши мыши на линейках тона/шума/громкости
+ Незвучащая часть эффекта (после последней ненулевой громкости) отрисовывается светло-серым цветом
+ Ввод значений тона/шума/громкости с клавиатуры (клавиши 0-9,A-F)
* Эффект теперь проигрывается по Enter (Space останавливает проигрывание)
+ Проигрывание эффекта с текущей строки по Ctrl+Enter
+ Добавлен импорт из PSG-файлов (дамп регистров AY, создаётся различными эмуляторами)
* Исправлено удаление строк
+ Добавлен режим логарифмического отображения/редактирования тона (с переключением на линейный)
* Изменён формат эффекта (код конечного маркера)
+ Вставка пустой строки в текущую позицию по Insert (со сдвигом текущей и последующих вниз)
+ Удаление текущей строки (если нет выделенных) по Delete (со сдвигом последующих вверх)
+ Несколько новых горячих клавиш
* Прочие мелкие исправления и дополнения

v0.1 02.02.06

+ Первая версия для закрытого тестирования, написана за 2 дня
+ Простейший рендер эффекта для прослушивания (без интерполяции и фильтров)
+ Минимальные возможности редактирования (только мышь)
+ Минимальные возможности импорта из WAV-файлов (только громкость)
- Множество планируемых возможностей



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

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

Alone Coder, за соучастие в проекте;
Sergey Bulba, за AY-Emulator, Vortex Tracker, различную документацию на сайте;
SMT, за UnrealSpeccy и плеер VTX с открытыми исходниками;
Copper Feet, за кросс-ассемблер asm80;
А также авторам звуковых эффектов, вошедших в библиотеку.



^ Контакты

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