Город Дербент - Музей под открытым небом
Print this page

9. Звуковые эффекты в Z-машине

Некоторые игры, начиная с версии 3, начали использовать звуковые эффекты. Они не хранятся в сюжетных файлах (или Z-машины), а интерпретатор просто должен знать, где найти их. Другие игры имеют только один звуковой эффект, годный к употреблению в гораздо более ограниченном варианте: звуковой сигнал или звук, который мы будем называть "бип".
9.1.1
В версии 6, интерпретатор должен установить бит 5 'Flags 1', если он может обеспечить звуковые эффекты, то есть делаем предупреждение.
9.1.2
В версии 5 и более поздних версиях игра должна иметь бит 7 'Flags 2', установленных в его сюжетной файл, если он хочет использовать звуковые эффекты. Интерпретатор должен затем очистить этот бит, если он не обязателен.
 
9.2 Нумерация
Звуковые эффекты пронумерованы вверх от 1. Номер 1 представляет собой пронзительный бип, номер 2 более низкий, эффекты от 3 поставляются интерпретатором конкретной игры.
9.2.1
*** [1.1] Помимо коротких электронных звуков, есть два типа звуковых эффектов, сэмплов и музыки. Игра не имеет возможности указать тип данного звукового эффекта.
 
9.3 Объем
Звуковые эффекты (кроме коротких электронных звуков) могут быть воспроизведены на любом уровне громкости от 1 до 8 (8 громче всего). Уровень громкости -1 должен быть реализован как "громкость возможна".
 
Другие звуковые эффекты работают в фоновом режиме, в то время как происходит работа Z-машины. Управление осуществляется через опкод sound_effect, позволяя игре подготовиться, запускать, останавливать или закончить с эффектом звука.
9.4.1
Игра может (но не обязательно) "подготовить" звуковой эффект перед использованием. Это указывается интерпретатором, что игра намерена в ближайшее время использовать эффект: интерпретатор может действовать на эту информацию путем загрузки сэмпл с диска в кэш-память.
9.4.2
*** [1.1] Звуковой эффект (кроме bleep) , то может быть "остановлен"(stopped) или "начат"(started). Только один звуковой эффект каждого типа может играть в любой момент времени, так что,начиная новый музыкальный звуковой эффект останавливает любую текущую игру музыки, и запуск любого нового звукового эффекта останавливает любой текущий воспроизводимый звук. Сэмплы и музыка не перебивают друг друга.
9.4.3
В версии 5 и более поздних версиях, звуковой эффект может повторяться любое заданное количество раз, или повторять его всегда (пока не будет остановлено).
9.4.4
В конце концов, хотя, если он не был остановлен, он может закончиться сам по себе. Процедуру (указывается во время старта) можно указать. Намерение состоит в том, что эта процедура может реализовать эффекты, такие как замирание in и out, с помощью воспроизведения звукового эффекта разного объема. (Игра не должна помещать какой-либо важный код в такой процедуре). Процедура вызывается только тогда, когда звук играет требуемое количество раз. Если остановлено вручную или прервано другим звуком, подпрограмма не вызывается.
9.4.5
Игра может, но не обязательно, в явном виде "закончить" любой звуковой эффект, который не может произойти снова на некоторое время: интерпретатор может затем удалить его из памяти.
 

Примечание.
Самый безопасный способ, Inform программа может попытаться производить бип выполняя @sound_effect 1 . Некоторые порты Zip считают, что первый операнд это число коротких электронных звуков (так что @sound_effect 2 короткие электронные звуки два раза), но это неправильно.
Несколько Infocom игр используют бип (с использованием sound_effect только с одним операндом, всегда равен 1 или 2). Два при условии выбора звуковых эффектов, но его нет в: «The Lurking Horror» и «Sherlock». Их файлы истории содержат следующие sound_effect :
  sound_effect number 2 volume                   (в TLH)
  sound_effect number 2 volume/repeats function  (в Sherlock)
  sound_effect 0 3
  sound_effect number 3
  sound_effect 0 4
 за исключением того, что, вероятно, из-за ошибки в своем собственном коде, 'TLH' также может генерировать
  sound_effect 4 8
  sound_effect 4095 2 15
Еще одна трудность, связанная с "TLH" в том , что он предполагает, интерпретатор работает так медленно, как интерпретатор Amiga Infocom: он делает несколько звуковых эффектов в одном раунде игры, предполагая, что там будет время для того, чтобы играть большую часть каждого из них. Для имитации этого, sound_effect должен быть переписан, чтобы сделать иногда паузу:
- если новый(сэмпл) звуковой эффект начинается, пока есть еще одна игра, которая была начата с момента последнего ввода с клавиатуры, а затем ждать, пока раньше не заканчивается один цикл перед заменой его новым звуковым эффектом. Звуковые эффекты(музыка) не зависят от этого. Новая музыка должна сразу прервать старую музыку.
В InfocomMS-DOS интерпретаторах для V4-V6 установлен бит 5 'Flags1' во всех режимах. Это было бы неправильным поведением для стандартного интерпретатора.
В Infocomреализованы звуковые эффекты по-разному на разных машинах. Формат поставляемых файлов звуковых эффектов Infocomбыла задокументирована Stefan Jokisch и его заметки доступны на сайте www.ifarchive.org.
Тем не менее, современные интерпретаторы призывают поддерживать Andrew Plotkin, его Blorb формат, который является более современным способом сделать звуковые эффекты и они доступны для новых игр. Blorb файлы не были сделаны для звуковых эффектов Infocom, так что современные интерпретаторы вынуждены больше не поддерживать формат Infocom.
При использовании Blorb ресурсов, поведение интерпретаторов должны быть по умолчанию(если не выставлены игроком), для сэмплов на максимальной громкости (64), в одном канале или MOD в объеме 8, чтобы быть равным объемом в качестве эффекта на максимальной громкости (8). Это будет естественное поведение, если эффекты используют один физический канал и MODs/SONGs используют четыре физических канала.
В идеале, звук, играя в объеме n в SONG на громкости m, должен звучать так же, как при воспроизведении как эффект в объеме  n*m/64. Это предусматривает, что шкала громкости эффектов эквивалентна шкале, определенной для образцов в спецификации MOD.
Если используются эффекты многоканальные, общий объем не должен зависеть от количества каналов, используемых в звуке. Таким образом, стерео AIFF, содержащий те же сэмплы для левой и правой колонки должны звучать так же громко, как моно AIFF, содержащий те же данные. Это будет нужно в корректировке объема, если стерео AIFFs использует два физических канала и моно AIFFs использует один. Никакая корректировка не потребуется, если интерпретатор сводит все AIFFs как моно.
Rate this item
(0 votes)