Диалекты бейсика для ZX Spectrum 1992 г.

Megabasic - Звук и музыка.


ЗВУК_

PLAY, SOUND, SON, SREP, SOFF

Дополнительные звуковые возможности MegaBasic реализуются двумя операторами: PLAY и SOUND. Совместно с SOUND работают операторы SON, SREP и SOFF, играющие роль переключателей.

Оператор PLAY воспроизводит заданные звуки непосредственно в момент своего выполнения интерпретатором MegaBasic. При этом, естественно, выполнение каких-либо других операторов возможно лишь после завершения действий, предписанных PLAY (аналогично оператору ВЕЕР Spectrum-Бейсика).

Иначе работает оператор SOUND. Он лишь закладывает в специальный «звуковой буфер» данные, необходимые для воспроизведения звука, а «спусковым крючком» служит оператор SON, запускающий отработку данных. В этом случае на фоне воспроизводимого звука возможно продолжение хода программы (работа в среде так называемого «генератора звука на прерываниях»).

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

Отдельно работающие операторы PLAY и SOUND не позволяют составлять музыкальные фразы, основное их назначение — генерация разнообразных звуковых эффектов.

Операторы PLAY и SOUND используют по пять параметров:

PLAY_m,s,f,r,q[,r,q...]

SOUND_a,m,q,r,n

Сначала рассмотрим параметры, которые в обоих операторах имеют одинаковый смысл, и, естественно, обозначены одинаковыми буквами, хотя они и стоят на разных позициях:

m - «качество» звука: 0 — чистый тон, ненулевое значение — шум;

г - число шагов изменения частоты в пределах одного цикла звучания. В операторе PLAY значение этого параметра может быть сколь угодно большим, а в операторе SOUND только от 1 до 256. Поскольку действие оператора PLAY не удается прекратить даже командами MegaBasic ESCAPE (Space/E) и RESET (Space/R), то в случае «перебора» значения параметра г в операторе PLAY проще перезагрузить MegaBasic, чем дожидаться окончания трелей;

q - смещение частоты от шага к шагу в условных единицах (1...256). Значения параметра от 1 до 127 соответствуют

повышению частоты, а от 129 до 256 — понижению. При q=0 или q=l 28 высота звука не меняется.

Можно помещать в один оператор PLAY несколько пар параметров г и q с разными значениями, что позволяет разнообразить звук. Например:

PLAY_0,10,10ОО, 10,10,20,20

Следующие два параметра используются только в операторе PLAY:

s - темп звучания. Ни в одной из версий MegaBasic не удалось заметить, что значение этого параметра как-то влияет на работу PLAY;

f - начальная частота звука (1 ...256)75.

В операторе SOUND тоже имеются два параметра, которым нет аналогов в PLAY:

а — способ заполнения звукового буфера: при а=0 данные в буфере заменяются, а при ненулевом значении параметра добавляются к содержимому буфера. Звуковой буфер оператора SOUND довольно емкий, но не «резиновый». При его переполнении возможен сбой программы, поэтому следует помнить, что SOUND с нулевым параметром а очищает буфер;

п - число повторений (1...256) циклов, заданных параметром г.

Как уже говорилось, генерация звука, «заложенного» в буфер оператором SOUND, запускается оператором

SON

Вспомогательный оператор

SREPm

обычно «ходит в паре» с оператором SON. Инструкция SREP.J) задает однократное воспроизведение последовательности звуков из буфера, а ненулевое значение m приводит к циклическому повторению звукового эффекта, прервать которое можно только оператором

SOFF

Естественно, звук прерывается также при остановке программы.

Использование всех пяти операторов MegaBasic, управляющих звуком, иллюстрируется следующим примером:

10 LET m=0

15 GO SUB 2000

20 SON: PAUSE 50: GO SUB 1000

30 SOFF: LET m=NOT m: GO TO 15 1000 PLAY_0f 10,1000,10,10: RETURN: REM Музыка 2000 SOUND_1,m,100,5,5:SREP_1: RETURN: REM Шум




СОДЕРЖАНИЕ:
  1. Laser Basic - Вывод спрайтов на экран; Вывод на экран части спрайта; Перенос атрибутов; Преобразование окна экрана; Наборы переменных; Перемещение спрайтов; Наложение спрайтов; Копирование изображения с экрана в спрайт; Преобразование спрайтов; Скроллинг пейзажа; Изменение размеров области спрайт-файла; Вспомогательные графические операторы и функции; Определение столкновений спрайтов; Сервисные операторы и функции; Процедуры; Загрузка и запись программ.


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Юмор - На кладбище ветер свищет, На кладбище нищий дрищет...
CODING - The Оптимизация - построение таблицы частоты повторения байтов.
WANTED - Розыск программ...
Глюки в News'e - О глюках, которые были в предыдущих номерах газеты.
BLOODWYCH - Рассказ по мотиву игры "BloodWych" (глава 3-4).

В этот день...   28 марта