7.2. Музыкальный редактор
Wham the Music Box
Wham the Music Box ("музыкальная шка-
тулка") - пожалуй, самый богатый по своим
возможностям музыкальный редактор для ZX-
Spectrum. С его помощью Вы сможете созда-
вать двухголосые мелодии с использованием
барабана и шумовых эффектов. Созданный му-
зыкальный фрагмент можно сохранить на лен-
те или дискете и, при необходимости, заг-
рузить его снова и внести изменения.
Большим достоинством редактора является
то, что мелодии, написанные с его помощью,
можно использовать для оформления других
программ.
После загрузки Wham'а звучит мелодия, а
на экране появляется главное меню (MAIN
MENU). Для выбора какого-либо режима наж-
мите соответствующую цифровую клавишу:
1. LOAD TUNE - загрузка мелодии
2. SAVE TUNE - сохранение мелодии
3. HEAR TUNE - прослушивание мелодии
4. WHAMPILER - компиляция
5. SET TEMPO - установка темпа
6. EDIT MODE - режим редактирования
7. HELP PAGE - подсказка
7.2.1. LOAD TUNE - загрузка мелодии
Этот режим позволяет загрузить файл,
содержащий ранее созданную мелодию, в ре-
дактор для дальнейшей работы с ним. Пос-
ле перехода в режим LOAD TUNE (клавиша 1)
программа спросит, с какого устройства Вы
хотите загружать файл:
SELECT PERIFERAL DEVICE
TAPE MEMORY DRIVE (SPACE=EXIT)
Если Вы решили отказаться от своей за-
теи, то нажмите пробел. В противном слу-
чае - выбирайте устройство с помощью од-
ной из клавиш: T - кассета, M - оператив-
ная память, D - микродрайв.
При загрузке с кассеты на запрос "FILE-
NAME ?" введите имя файла, в котором хра-
нится мелодия.
Вместе с Wham'ом на кассете (дискете)
поставляется файл EXAMPLE, в котором со-
держится веселая мелодия. Попробуйте его
загрузить и прослушать (см. дальше).
Так как в России микродрайв не прижил-
ся, а вместо него прижился дисковод, воз-
никает законное желание заменить надпись
DRIVE на DISK, со всеми вытекающими отсю-
да последствиями. Это было довольно успеш-
но сделано несколькими российскими прог-
раммистами (существует также версия прог-
раммы на русском языке). Самый распростра-
ненный дисковый вариант перед запросом
"FILENAME ?" (см.выше) спрашивает, не рас-
печатать ли ему каталог диска "A" (Да/
Нет):
PRINT CATALOGUE 'A:' (Y/N) ?
А затем загрузка идет стандартным обра-
зом.
Если Вы обратитесь к оперативной памя-
ти (клавиша M), то на экране появится спи-
сок из шести мелодий:
1. FREEDOM
2. TROPICANA
3. YOUNG GUNS
4. WHISPER
5. BAD BOYS
6.
Первые пять из них созданы авторами
программы, а шестая зарезервирована для
Ваших творений. Для загрузки любой из них
достаточно нажать соответствующую цифро-
вую клавишу.
По окончании загрузки программа автома-
тически переходит в режим MAIN MENU.
7.2.2. SAVE TUNE - сохранение мелодии
Благодаря этому режиму Ваш труд не про-
падет даром, когда Вам придется надолго
оторваться от составления мелодии, то есть
созданный музыкальный фрагмент можно бу-
дет сохранить на ленте или диске для даль-
нейшего усовершенствования.
Войти в режим SAVE TUNE можно из глав-
ного меню, нажав клавишу 2, после чего
появится уже знакомый вопрос об устрой-
стве, на которое Вы желаете записать свое
произведение:
SELECT PERIFERAL DEVICE
TAPE MEMORY DRIVE (SPACE=EXIT)
Как и раньше, нажав пробел, Вы верне-
тесь в главное меню, а выбрав устройство:
T - кассета, M - память и D - микродрайв
(дискета), получите запрос "FILENAME ?",
на который надо ввести имя файла, в кото-
ром будет сохранена мелодия.
Если Вы решили записать свой музы-
кальный фрагмент в оперативную память, пе-
ред Вами появится список из шести мелодий.
Ваше произведение можно записать на место
любой из них, но храниться оно будет толь-
ко до выключения питания или нажатия кноп-
ки сброса.
В случае записи на кассету, после ее
завершения появится вопрос: VERIFY (Y/N).
Если Вы уверены в качестве записи, то мо-
жете жать клавишу "N", в противном случае
нажмите "Y", перемотайте ленту на начало
только что записанного файла и включите
воспроизведение для его проверки.
По окончании записи программа автомати-
чески переходит в режим MAIN MENU.
7.2.3. EDIT MODE - режим редактирования
Режим редактирования - это основной ин-
струмент, с помощью которого Вы сможете
реализовать свои музыкальные идеи.
Войти в этот режим можно из главного
меню, нажав клавишу 6. При этом на экране
появятся изображения двух нотных станов
(для басового и скрипичного ключей), а
также указатель октавы OCTAVE, указатель
текущего канала (голоса) CHANNEL 1(2) и
счетчики шагов для каждого из каналов
COUNTERS (CHN1, CHN2).
Для выбора функций редактора использу-
ются два верхних ряда клавиш, а нижние
два - заменяют собой клавиатуру фортепиа-
но. Значения этих клавиш Вы можете уви-
деть на рис.5. Ряд от Caps Shift до Space
играет роль белых клавиш, а от A до L -
черных.
Итак, Вы хотите "набросать" какую-ни-
будь мелодию. Нажимая клавишу T, выбери-
те голос, с которым собираетесь работать,
клавишами 1...4 - октаву (1 - большая, 2 -
малая, 3 - первая, 4 - вторая) и попробуй-
те "наиграть" мелодию на "звуковых" клави-
шах. При этом на нотном стане появятся
изображения нот, а цветные квадратики ука-
жут соответствующие клавиши фортепиано
(для первого голоса квадратик красный, для
второго - фиолетовый). Если Вы ошибочно
нажали не ту клавишу, не расстраивайтесь,
все поправимо: нажав клавишу 0, Вы верне-
тесь на один шаг назад. Если же нужно вер-
нуться больше, чем на шаг, нажмите 9.
Проигрывание одной ноты с продвижением
на шаг вперед осуществляется клавишей P.
Удерживая эту клавишу, Вы можете прослу-
шать часть мелодии. С помощью клавиши O
можно "перемотать" мелодию вперед.
Вам наверняка захочется прослушать му-
зыкальный фрагмент целиком, не выходя из
режима редактирования. Нажмите R (возврат
в начало мелодии), затем Q (проигрывание
мелодии), - и зазвучит Ваше творение. Ос-
тановить воспроизведение можно нажатием
любой клавиши.
Для написания второго голоса переключи-
те клавишей T канал и с помощью клавиш R,
O, P, 0, 9 перейдите к тому шагу, с кото-
рого Вы собираетесь его использовать.
К сожалению, Wham не дает возможности
записать мелодию нотами разной длительнос-
ти. Необходимая длительность достигается
либо использованием паузы (клавиша Enter),
либо записью нужного количества одинако-
вых нот.
Ваш музыкальный фрагмент зазвучит сов-
сем по-другому, если Вы используете для
его аранжировки барабан (клавиша E) и шу-
мовые эффекты (клавиши Y, U, I). Барабан
может звучать по-разному, в зависимости от
того, в каком канале он установлен. В пер-
вом канале это действительно барабан, а во
втором он больше похож на ноту СИ контрок-
тавы или ДО большой октавы. Шумовые эффек-
ты можно редактировать с помощью соответ-
ствующего режима, в который можно попасть
из EDIT MODE, нажав клавишу 8. После это-
го на экране появится меню выбора частоты
(WAVEFORM) и длительности (DURATION) шумо-
вых эффектов. Выбрать один из предостав-
ляемых программой 16 вариантов длительнос-
ти и 8 вариантов частоты (формы колебаний)
шумовых эффектов можно с помощью следую-
щих клавиш:
5,8 - Выбор редактируемого шумового
эффекта;
6 - Переход к функции выбора частоты;
7 - Переход к функции выбора длитель-
ности;
0 - Изменение эффекта.
Получающиеся в процессе редактирования
шумовые эффекты можно прослушать, исполь-
зуя клавишу 9.
После настройки эффектов можно выйти
обратно в режим редактирования мелодии
(любая клавиша, кроме участвующих в нас-
тройке эффектов) и использовать их в рабо-
те с помощью клавиш Y, U и I. Хотя под шу-
мовые эффекты отведены только эти три кла-
виши, Вы можете использовать гораздо боль-
шее их количество (до 128). Для этого соз-
даются первые три эффекта и расставляются
в нужных местах мелодии, затем следующие
три и т.д.
Наличие барабана и шумовых эффектов в
мелодии отображается на нотном стане в ви-
де пробела, что очень неудобно. Учтите,
что одновременно с барабаном и шумовыми
эффектами не может звучать нота (исключе-
ние составляет только барабан, установлен-
ный во втором канале).
Если Вы хотите, чтобы мелодия повторя-
лась с какого-либо шага, то есть звучала
непрерывно, клавишей W установите на выб-
ранном шаге метку цикла в обоих каналах.
При этом компьютер спросит:
SET LOOP HERE ? (Y/N) - установить
метку здесь ? (Да/Нет)
Расположение меток в первом и втором
каналах может и не совпадать. Но для того,
чтобы при циклическом проигрывании мело-
дии не нарушалась синхронность звучания
голосов, количества шагов в первом и вто-
ром каналах должны быть кратны друг другу.
Для успешной компиляции (см. ниже) уста-
новка метки в обоих каналах обязательна.
Если Вы хотите очистить память от неу-
дачного произведения, нажмите 7 и подтвер-
дите запрос:
ERASE CURRENT TUNE ? (Y/N) - удалить
мелодию ? (Да/Нет)
С помощью клавиши 5 можно изменять цвет
бордюра. А чтобы вернуться в главное меню,
нажмите клавишу 6.
7.2.4. HELP PAGE - подсказка
В режиме редактирования Вам понадобит-
ся использовать немалое количество клавиш,
сразу запомнить их функциональное назначе-
ние не так просто. Поэтому в качестве по-
мощи Вам предлагается страница подсказки -
HELP PAGE, которую можно вызвать из глав-
ного меню, нажав клавишу 7.
На экране появится список клавиш, ис-
пользуемых при редактировании:
KEYS FUNCTION
1-4 SELECT OCTAVE выбор октавы
5 CHANGE BORDER изменение цвета бордюра
6 MAIN MENU выход в главное меню
7 ERASE TUNE удаление мелодии
8 NOISE MIXING редактирование шумовых эффектов
9 REPEAT BACKSTEP прокрутка назад
0 SINGLE BACKSTEP возврат на один шаг
Q REPLAY TUNE проигрывание мелодии
E DRUM EFFECT барабан
T CHANGE CHANNEL выбор канала
Y,U&I NOISE EFFECTS шумовые эффекты
O FAST FORWARD прокрутка вперед
P PLAY NEXT NOTE проигрывание следующей ноты
The lower half of the keyboard Нижняя половина клавиатуры
mimics a piano, enter is a rest имитирует фортепиано, enter -
пауза
Use cursor keys to edit the Используйте курсорные клавиши
white noise with 9 to hear the для редактирования белого шума,
current effect and 0 to alter it 9 - прослушивание, 0 - изменение
7.2.5. HEAR TUNE - прослушивание мелодии
При прослушивании мелодии в режиме EDIT
MODE она звучит в несколько искаженном ви-
де, так как процессор кроме воспроизведе-
ния музыки занят еще и выводом на экран
нот, обслуживанием клавиатуры и т.д. Что-
бы получить представление об истинном зву-
чании мелодии, то есть услышать, как она
будет исполняться после компиляции (см.
ниже), воспользуйтесь функцией HEAR TUNE
(клавиша 3 главного меню).
После прослушивания, нажав любую клави-
шу, Вы попадаете в режим EDIT MODE.
7.2.6. SET TEMPO - установка темпа
Если после прослушивания мелодии Вы за-
хотите изменить темп ее исполнения, вос-
пользуйтесь режимом SET TEMPO (клавиша 5
главного меню).
Клавишей 8 можно ускорить темп испол-
нения мелодии, а клавишей 5 - замедлить.
Изменение темпа изображается наглядно, с
помощью фиолетовой полоски на экране. С
уменьшением темпа полоска тоже уменьшается
и наоборот.
Нажав любую клавишу, кроме 5 и 8, Вы
попадете в режим редактирования (EDIT MO-
DE).
7.2.7. WHAMPILER - компиляция
Музыкальный фрагмент, сохраненный в ви-
де редактируемого файла в режиме SAVE
TUNE, можно загрузить снова (LOAD TUNE) и
продолжить работу с ним. Однако такой спо-
соб представления мелодии позволяет прос-
лушивать ее только находясь в редакторе.
Если же Вы хотите оформить музыкой
программу, написанную на бейсике или ас-
семблере, необходимо записать мелодию в
виде программы, работающей независимо от
редактора. Такая подпрограмма создается с
помощью режима компиляции WHAMPILER.
В результате компиляции на ленту или
дискету записывается файл, который пред-
ставляет собой программу в кодах, запус-
каемую отдельно от Wham'а, но, в отличие
от редактируемого файла, не поддающуюся
дальнейшему изменению.
Перед компиляцией с помощью функции
LOAD TUNE загрузите мелодию, которую хоте-
ли бы скомпилировать и проверьте, в обоих
ли каналах выставлены метки цикла.
В качестве примера попробуем откомпили-
ровать одну из 5 мелодий, загружаемых из
памяти (см. LOAD TUNE - MEMORY), допустим,
тему под номером 1 - FREEDOM. Загрузите ее
и, нажав клавишу 4, войдите в режим компи-
ляции. На запрос TUNENAME ? введите имя,
под которым Вы хотите сохранить откомпили-
рованный файл, например, FREE-MUS. Далее
программа попросит ввести адрес, с которо-
го будет располагаться и запускаться от-
компилированный файл:
ASSEMBLY ADDRESS ?
Укажите десятичный адрес не менее
32768, например, 60000, после чего компи-
лятор выведет на экран следующую информа-
цию:
TUNE NAME: FREE-MUS имя мелодии
ASSEMBLY ADDRESS: 60000 адрес
RETURN OPTION: KEYPRESS условие возврата
WHITE NOISE: --NONE-- шумовые эффекты отсутствуют
CHANNEL 1 LENGTH: 313 число шагов в 1-ом канале
CHANNEL 1 LOOP : START цикл от начала в 1-ом канале
CHANNEL 2 LENGTH: 313 число шагов во 2-ом канале
CHANNEL 2 LOOP : START цикл от начала во 2-ом канале
1. KEYPRESS
2. ALWAYS
3. TUNEEND
RETURN OPTION 1, 2 OR 3 ?
Цифрами 1, 2 и 3 обозначены условия
окончания воспроизведения мелодии. В зави-
симости от выбранного варианта получаются
определенные модификации откомпилированно-
го файла: KEYPRESS - проигрывание мелодии
завершается при нажатии любой клавиши;
ALWAYS - проигрывание мелодии осуществля-
ется одновременно с работой программы (по-
дробно этот режим описан ниже); TUNEEND -
проигрывание завершается либо по окончании
мелодии, либо при нажатии любой клавиши.
Запуск компиляции произойдет сразу пос-
ле выбора клавишами 1, 2 или 3 одного из
перечисленных условий. Нажмите, к примеру,
клавишу 1.
По окончании компиляции на экран будет
выведена длина исполняемого файла в бай-
тах и сообщение о нормальном завершении
операции:
CODE LENGTH: 893
ROUTINE COMPILATION COMPLETED OK
Затем, после надписи ADJUSTMENT POKES:
(настроечные POKE), появится информация,
необходимая для настройки исполняемого
файла уже в процессе использования его в
Вашей программе (помните, что в нашем при-
мере ASSEMBLY ADDRESS равен 60000):
REPLAY SPEED: 60035, (230 TO 255)
этой надписью программа сообщает, что, за-
писывая в ячейку памяти с адресом 60035
(ASSEMBLY ADDRESS + 35) число от 230 до
255, можно изменять темп исполнения мело-
дии;
BORDER COLOR: 60026, (0 TO 7)
это сообщение говорит о том, что, записы-
вая в ячейку памяти 60026 (ASSEMBLY AD-
DRESS + 26) число от 0 до 7, Вы можете на
время исполнения мелодии устанавливать
требуемый цвет бордюра (по умолчанию -
фиолетовый);
TO RUN - RANDOMIZE USR 60000
эта надпись напоминает, что для запуска
мелодии из бейсика необходимо использо-
вать команду RANDOMIZE USR 60000 (ASSEMBLY
ADDRESS).
После вывода этих сообщений производит-
ся запись исполняемого файла на кассету
или диск, в зависимости от версии.
Теперь можно смело жать кнопку сброса и
загружать в память полученную после компи-
ляции программу в кодах. Если исполняемый
файл сохранен на ленте, то для его загруз-
ки и запуска напишите следующую программу
на бейсике:
10 LOAD "FREE-MUS" CODE
20 POKE 60026,7: REM цвет бордюра - белый
30 RANDOMIZE USR 60000
Запустите ее и загрузите мелодию, а за-
тем Вы услышите скомпилированную мелодию,
которая будет звучать, пока Вы не нажмете
какую-нибудь клавишу. Поэкспериментируйте
с темпом исполнения произведения, занося с
помощью оператора POKE различные числа в
пределах от 230 до 255 в ячейку 60035.
Для дисковой версии первую строку прог-
раммы нужно заменить на следующую:
10 RANDOMIZE USR 15619: REM: LOAD
"FREE-MUS" CODE
Теперь Вы сможете откомпилировать лю-
бую мелодию (в том числе и свою собствен-
ную), выполняя аналогичные действия.
Процесс компиляции может проходить нес-
колько иначе. Например, если Вы решили
сделать повторяющуюся басовую партию и за-
циклили ее гораздо раньше основной мело-
дии (проследите, чтобы число шагов в обоих
каналах было кратно друг другу). В этом
случае программа исключает возможность
компиляции в режиме TUNEPEND и устанавли-
вает режим KEYPRESS, а вместо возможности
выбора спрашивает:
CHANGE RETURN OPTION TO ALWAYS ?
сменить режим компиляции на ALWAYS ?
Если Вы нажмете клавишу Y, режим будет
сменен. В противном случае компиляция про-
должится в режиме KEYPRESS.
Учтите, что компилятор выдает число ша-
гов в канале вместе с меткой цикла. Поэто-
му Вы можете обнаружить, что, например, 65
кратно 9 (на самом деле - 64 и 8).
Если в Вашей мелодии число шагов в
обоих голосах не кратно друг другу, то
компиляция прервется следующим сообщением:
WARNING ПРЕДУПРЕЖДЕНИЕ
End markers mismatch Не совпадают метки цикла.
may cause distorted tune Может исказиться мелодия.
Continue ? (Y/N) Продолжить ? (Да/Нет)
Если Вы нажмете Y, то компиляция про-
должится, как если бы число шагов было
кратно друг другу, но за то, что получит-
ся, никто ответственности не несет. В про-
тивном случае компиляция прервется и Вы
окажетесь в главном меню.
Если же Вы вообще забыли поставить мет-
ку цикла хотя бы в одном из каналов, то
Вашему взору предстанет следующая картина:
TUNE NAME: XXXXXXXXXX
ASSEMBLY ADDRESS: XXXXX
RETURN OPTION: KEYPRESS
WHITE NOISE: XXXXXXXX
CHANNEL 1 LENGTH: NOT PRESENT
число шагов в первом канале не определено
CHANNEL 1 LOOP : START
CHANNEL 2 LENGTH: NOT PRESENT
число шагов во втором канале не определено
CHANNEL 2 LOOP : START
Tune compilation abandoned. Компиляция прервана.
No end markers defined. Не установлены метки цикла.
Use the W key to place the end Используя клавишу W, установите
marker for the current channel. метку в каждом канале.
Если машина обругала Вас, отнеситесь к
этому спокойно. Нажав клавишу Enter, вый-
дите из режима компиляции, устраните заме-
ченные недостатки и, будьте уверены, что
со второй, в крайнем случае с третьей по-
пытки мелодия будет откомпилирована, и Вы
сможете украсить ею свою программу. Ско-
рее всего, Вы захотите, чтобы Ваша прог-
рамма работала одновременно с проигрыва-
нием мелодии. Подобного эффекта можно до-
биться, если при компиляции использовать
режим ALWAYS. Файл, скомпилированный в
этом режиме, вызывается по двум адресам:
имеет две точки входа. Первая служит для
инициализации мелодии и проигрывания пер-
вой ноты и расположена по тому же адресу,
что и в других режимах (ASSEMBLY ADDRESS),
а вторая - проигрывания всех последующих
нот (расположена по адресу ASSEMBLY AD-
DRESS+12).
Таким образом, если в приведенном выше
примере компиляции использовать режим AL-
WAYS, то для инициализации мелодии и про-
игрывания первой ноты нужно выполнить опе-
ратор
RANDOMIZE USR 60000,
а для проигрывания каждой последующей но-
ты - оператор
RANDOMIZE USR 60012.
Вот пример программы, демонстрирующей
возможности режима ALWAYS:
10 PAPER 0: BORDER 0: INK 7: BRIGHT 1:
CLS
20 LOAD "FREE-MUS" CODE: CLS: OVER 1
30 LET A$="ALWAYS-mode demonstration!"
40 RANDOMIZE USR 60000
50 PRINT AT 10,3;
60 FOR A=1 TO LEN A$: RANDOMIZE USR 60012
70 PRINT INK RND*6+1; A$(A);
80 NEXT A: GOTO 50
Аналогичным образом Вы можете оформлять
и программы в машинных кодах.
Учтите, что время выполнения Вашей про-
граммы в промежутках между нотами не дол-
жно быть очень большим, иначе теряется ка-
чество мелодии. Кроме того, оно должно
быть примерно одинаковым между двумя любы-
ми нотами.
7.2.8. Советы
1. Если программа вышла в бейсик с сооб-
щением об ошибке (например, при заг-
рузке с магнитофона или если Вы совер-
шенно случайно нажали клавишу BREAK),
то для возвращения в главное меню вве-
дите команду RUN.
2. Если Вы решили создать более менее
длинную мелодию, используя оба голоса,
то вводить эти голоса следует парал-
лельно, иначе неизбежны ошибки. Кроме
того, желательно время от времени про-
слушивать, что у Вас получилось.
3. Все сочиненные Вами мелодии стоит сох-
ранять на одной кассете (или дискете)
с помощью функции SAVE TUNE. Благода-
ря этому через некоторое время у Вас
будет довольно большой выбор мелодий
при оформлении новой программы.