Оберон-клуб «ВЄДАsoft»
https://zx.oberon.org/forum/

Библиотека Wham: двухголосная музыка с шумовыми эффектами на бипер
https://zx.oberon.org/forum/viewtopic.php?f=10&t=226
Страница 1 из 1

Автор:  Zorko [ 30 ноя 2014, 12:42 ]
Заголовок сообщения:  Библиотека Wham: двухголосная музыка с шумовыми эффектами на бипер

Адаптирован для 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 КБ]
Скачиваний: 2225

Страница 1 из 1 Часовой пояс: UTC + 2 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/