Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 23 ноя 2017, 18:55

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: 30 ноя 2014, 12:42 
Не в сети
Аватара пользователя

Сообщения: 843
Откуда: Днепропетровская обл.
Адаптирован для ZXDev проигрыватель мелодий в формате редактора Wham (вариант для бипера). Интерфейс учитывает все режимы воспроизведения: до нажатия клавиши, до окончания мелодии или по одной ноте (для "фоновой" музыки на заднем плане):

Код: "OBERON"
  1. DEFINITION Wham; (* WHAM! The Music Box *)
  2.  
  3. TYPE
  4. Channel = INTEGER;
  5.  
  6. (* Режим ALWAYS: InitPlayNote не играет первую ноту мелодии *)
  7. PROCEDURE InitPlayNote (channel1, channel2: Channel);
  8. (* Режим KEYPRESS: *)
  9. PROCEDURE PlayKeyPress (channel1, channel2: Channel);
  10. PROCEDURE PlayNote; (* Играть одну ноту. Мелодия зациклена *)
  11. (* Режим TUNEEND: *)
  12. PROCEDURE PlayTuneEnd (channel1, channel2: Channel);
  13. PROCEDURE SetTempo (tempo: INTEGER); (* 230..255 *)
  14.  
  15. END Wham.

Пример использования:
Код: "OBERON"
  1. MODULE WhamTest;
  2. IMPORT Wham, B := Basic, Input;
  3.  
  4. VAR
  5. chan1, chan2: Wham.Channel; atr: INTEGER;
  6.  
  7. BEGIN (*$MAIN*)
  8. B.Init;
  9. B.DEFDATA(chan1, 706);
  10. B.DATA12(...); (* Данные первого канала *)
  11. B.DEFDATA(chan2, 706);
  12. B.DATA12(...); (* Данные второго канала *)
  13. Wham.InitPlayNote(chan1, chan2);
  14. atr := 5800H;
  15. REPEAT
  16. (* Делаем полезную работу в фоне: *)
  17. B.POKE(atr, B.RND(0, 127)); INC(atr);
  18. IF atr >= 5B00H THEN atr := 5800H END;
  19. (* А теперь играем одну ноту мелодии: *)
  20. Wham.PlayNote;
  21. UNTIL Input.Available() # 0;
  22. B.Quit
  23. END WhamTest.


Вложения:
WhamTest.tap [4.89 КБ]
Скачиваний: 730
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Тех.поддержка phpBB