Системные программы для ZX-Spectrum 128K 1969 г.

Руководство по программированию на языке Бейсик - программирование звуков. Запись данных.


7.5. ПРОГРАММИРОВАНИЕ 3BУKOB

При записи нот имеет значение размер буквы. Так "ga" нё одно и тоже что "GA".

Наиболее простой способ получения звука - команда ВЕЕР. Ее формат:

ВЕЕР продолжительность,высота,

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

Ниже приводится схема, показывающая высоту всех нот одной октавы пианино
для ВЕЕР:

Итак, чтобы сыграть А выше среднего С полсекунды, Вы должны использовать:

ВЕЕР 0.5,9,

а чтобы сыграть гамму (например, си мажор), потребуется целая программа (хотя
и короткая):

10 FOR F-l ТО 8

20 READ note

30 ВЕЕР 0.5, note

40 NEXT F

50 DATA 0,2,4,5,7,9,11,12

Чтобы получить более высокие или более низкие ноты, Вы должны добавить или
вычесть 12 для каждой октавы, на которую Вы повышаете или понижаете.

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

Оператор PLAY гораздо гибче, чем ВЕЕР - он может заставлять играть гармонично
на три голоса со всеми видами эффектов и давать более высокое качество звука. Он
также проще в применении.

Брать: PLAY "а",

а чтобы сыграть основную гамму С (для чего ранее требовалась программа),
используйте следующую запись:

PLAY "cdefgabC"

Заметим, что последнее С в примере набрано заглавными буквами. Этим команде
PLAY сообщается, что нужно играть октавой выше, чем первое. Последний пример
заставляет звучать основную октаву С (мажор), поскольку это набор нот между двумя
С.

Для примера, гамма си минор задается так:

PLAY "cd$efg$a$bC", где $ - знак доллара.

Если перед нотой стоит такой знак, то происходит снижение ноты на полтона
(сглаживание), а если стоит знак "#", происходит подъем на полтона. Оператор PLAY
охватывает 9 октав и можно выбрать любую из них, задав букву О (заглавную), за
которой следует номер в списке заданных нот. Приведем схему нот и номеров октав,
которые соответствуют стандартной равнотемперированной музыкальной гамме:

PLAY также может обработать много различных длин нот. Длина ноты может быть
изменена в любом месте строки при включении числа между 1 и 9, и это эффективно
для всех последующих нот, пока не встретится новое число. Каждая из этих девяти
длин нот имеет музыкальное название и выглядит по-разному, когда записывается в
музыкальной нотации. На следующем рисунке показано соответствие между ними:

Номер

Название ноты

Музыкальный символ

1

semi-quaver

к
ё

2

doffed semi-quaver

I

quaver

*

| Номер

.'-:•:: • НаШаШёнотй

шутштшштшт

4

doffed quaver

5

crotchet

j

6

doffed crotchet

j.

7

minim

j

8

doffed minim

j.

9

semi-breve

о

1 - полвосьмой; 2 - полвосьмой с точкой;

3 - восьмая; 4 - восьмая с точкой;

5 - четвёртая; 6 - четвертная с точкой;

7 - половинная; 8 - половинная с точкой;

9 - полукратная.

PLAY вполне может "замолчать"! Период времени, в течение которого не звучат
ноты, называется отдыхом и для его обозначения используется знак "&". Длительность
отдыха равна длительности текущей ноты.

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

Номер

Название ноты

Музыкальный символ

10

triplet semi-quaver

JD

li

triplet quaver

Я)

12

triplet crotchet

Ш

1 - триплет полвосьмой; 2 - триплет восьмая;

3 - триплет четвертная.

Компьютер "Спектрум 128К" может изменять уровень звучания ноты при игре так,
что она может звучать громче или тише, как пианино, или поднимать или снижать
тон, как рычащая собака. Чтобы включить эти эффекты, используйте "W" (для формы
волны), вслед за которой идет число от 0 до 7, вместе с "U" для каждого канала,
который Вы хотите использовать. Любой канал, на котором установлен уровень
звучания "U", не будет отзываться на "U". На рис.17 приведена диаграмма,
графически показывающая, как изменяется уровень для каждой установки:

Приведенная далее программа играет одну ноту с каждым из приведенных
эффектов, так что Вы можете сравнить их с диаграммой:

10 LET a$-"UH 1000WC&W2C&W3C&W4C&W5C&W6C&W7C"

20 PLAY а$

Команда PLAY не ограничивается чисто музыкальными эффектами, имеется
также три генератора "белого шума" (белый шум похож на звук ненастроенного
радиоприемника или телевизора с частотной модуляцией) и любой из трех каналов
может играть ноты, белый шум или их смесь. Для выбора смеси шума и ноты Вы
можете использовать "М", вслед за которым проставляется число от 1 до 63. Вы можете
определить, какое число использовать, из следующей таблицы:

Тоне

А

>вые ка*
в

*алы

с

Шуме

А

>вые ка
в

налы

с

Номер

1

2

4

8

16

32

Номера каналов в соответствии с желаемыми эффектами складываются. Так, если
вы хотите чтобы а издавал шум, в тон, с - шум, то сложите 8,2,4 и 32, что дает 46.

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

В конце приведем краткий список параметров, которые могут использоваться в
строке команды PLAY вместе со значениями, которые они могут принимать:

11ШЩШ11

11111111^

a-G

высота звука в пределах выбранной октавы

$

понижение следующей ноты

#

повышение следующей ноты

0

указыват номер октавы (0-9)

1-12

длительность нот

&

длительность пауз

слитное звучание ноты

N

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

V

устанавливает громкость звучания (0-15)

W

амплитудный эффект звука (0-7)

X

длительность амплитудного эффекта

т

темп мелодии

(...)

Фраза в скобках повторяется

! !

• ••••

Коментарии

н

остановка команды PLAY

Y

указывает капал MIDI (1-16)

Z

указывает код MIDI (номер кода после

символа)

7.6. ЗАПИСЬ ДАННЫХ

LOAD, SAVE, VERIFY, MEGRE

Для сохранения программы на кассете введите:

SAVE "FILENAME"
Имя файла может быть длиной до десяти символов.

SPECTRUM-128 отвечает сообщением:

START TAPE/THEN PRESS ANY KEY

После нажатия соответствующих клавиш магнитофона и любой клавиши
компьютера программа сохраняется на ленте. Программа записывается блоками.

Перед тем как стирать программу из памяти наберите VERIFY, перемотайте ленту в
начало и включите воспроизведение, компьютер проверит качество записи. На экране
появится сообщение:

PROGRAM: FILENAME,
а в конце записи "ОК", что означает удовлетворительное качество записи. Если
запись произошла с ошибкой появится сообщение:

R ТАРЕ LOADING ERROR
Для загрузки используется команда LOAD "FILENAME".

Команда LOAD уничтожает старую программу в компьютере и загружает новую.
После загрузки можно запускать программу командой RUN.

Команда MERGE "FILENAME" также загружает программу в память, но при этом
старая программа не уничтожается. Две программы сливаются в одну.

Команда SAVE может даваться с параметрами:

SAVE "FILENAME" LINE номер строки
Сохраненная таким образом программа может быть загружена только командой
LOAD (но не MERGE).

Можно сохранить также не целиком программу, а только определенные данные.
SAVE "FILENAME" DATA имя массива О
SAVE "BLOGGS" DATA В ()
Таким образом сохраняются все элементы массива.

Команда LOAD "BLOGGS" DATA В О находит массив на кассете, загружает его в
память и если в программе есть массив В, то он заменяется полученным с ленты.

Команда MERGE с сохранением массива не используется.

Область памяти сохраняется командой

SAVE "PICTURE" CODE 16384,6912
Первый параметр - начальный адрес сохраняемой области, второй - длина области.

Загрузка машинного кода производится командой:

LOAD "FILENAME" CODE начальный адрес, длина
Экранную область можно сохранить командой:

SAVE "PICTURE" SCREAN$
Соответственно загрузка:

LOAD "PICTURE" SCREAN$
SAVE, LOAD и MERGE работают также со встроенным диском до 64к.

SAVE! "FILENAME"
LOAD ! "FILENAME"

MERGE! "FILENAME"

«_ _

Команда CAT! Показывает содержимое диска.

ERASE ! "FILENAME" - уничтожает файл на диске.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Юмор - что такое программист.
BBS - список станций BBS ZXNet.
От авторов - Креаторы и всё такое.
INTRO - Создание К. Синклером компьютера ZX-2000.
Лаборатория - Как подружить ALASM v4.1 и STS v6.2.

В этот день...   4 мая