プチコンまとめArchive

投稿プログラム : ミニドラム演奏

パンくずリスト

このページの最終更新 : 2022/09/20 (火) 12:44:15

2011年04月03日投稿 / 投稿者 : 名無しさん / タグ : 投稿プログラム MML ドラムマシン 音楽

概要

ゲームへの組み込みに使えるぐらい軽いドラムマシン。

用途

ゲーム内で単純なリズムを演奏させたい場合にご利用下さい。 音程変化、音の長さ等には対応しないことで処理を単純化しています。

プログラム解説

  • 音色定義の部分でアルファベット1文字ごとの音色を定義
  • RESTOREで演奏データを準備し@DRSETで演奏初期化
  • メインループ内で@DRPLAYを呼び出す
  • トラック(TRMAX)を1つにすればさらに軽くなります
  • MSTEPで1音ごとの長さを調整できます
  • 音色定義のところは見やすさ優先でASC("A")としていますが数値でも問題ありません

スクリーンショット・動画

ありません。

プログラムリスト

  1. ’┌─────────┐
  2. ’│ミニト゛ラムマシン│
  3. ’└─────────┘
  4. CLEAR
  5. ’---オンショクテイキ゛
  6. DIM VC(26)
  7. VC(ASC(”A”)-ASC(”A”))=62
  8. VC(ASC(”B”)-ASC(”A”))=52
  9. VC(ASC(”C”)-ASC(”A”))=27
  10. VC(ASC(”O”)-ASC(”A”))=26
  11. VC(ASC(”S”)-ASC(”A”))=53
  12. VC(ASC(”Z”)-ASC(”A”))=55
  13. ’---
  14. TRMAX=3:MSTEP=8
  15. DIM MML$(TRMAX)
  16. DIM MOFS(TRMAX),MCNT(TRMAX),MLEN(TRMAX)
  17. ’---エンソウシ゛ョウホウセッテイ
  18. @BGM1
  19. DATA ”B   S   BCBCSCCS”
  20. DATA ” CO  CCC      Z ”
  21. DATA ” A              ”
  22. RESTORE @BGM1
  23. GOSUB @DRSET
  24. ’---メインルーフ゜
  25. @LOOP
  26. GOSUB @DRPLAY
  27. VSYNC 1
  28. GOTO @LOOP
  29. ’---エンソウ
  30. @DRPLAY
  31. FOR I=0 TO TRMAX-1
  32.  MCNT(I)=MCNT(I)-1
  33.  IF MCNT(I)>0 THEN @_NSKIP
  34.  MCNT(I)=MSTEP
  35.  C$=MID$(MML$(I),MOFS(I),1)
  36.  MOFS(I)=MOFS(I)+1
  37.  IF MOFS(I)>=MLEN(I) THEN MOFS(I)=0
  38.  IF C$==” ” THEN @_NSKIP
  39.  BEEP VC(ASC(C$)-ASC(”A”))
  40. @_NSKIP
  41. NEXT
  42. RETURN
  43. ’---エンソウショキカ
  44. @DRSET
  45. FOR I=0 TO TRMAX-1
  46.  READ MML$(I)
  47.  MLEN(I)=LEN(MML$(I))
  48.  MCNT(I)=0:MOFS(I)=0
  49. NEXT
  50. RETURN

トラックを1つだけにする場合

  1. ’┌─────────┐
  2. ’│ミニト゛ラムマシン│
  3. ’└─────────┘
  4. CLEAR
  5. ’---オンショクテイキ゛
  6. DIM VC(26)
  7. VC(ASC(”A”)-ASC(”A”))=62
  8. VC(ASC(”B”)-ASC(”A”))=52
  9. VC(ASC(”C”)-ASC(”A”))=27
  10. VC(ASC(”O”)-ASC(”A”))=26
  11. VC(ASC(”S”)-ASC(”A”))=53
  12. VC(ASC(”Z”)-ASC(”A”))=55
  13. ’---
  14. MSTEP=8
  15. ’---エンソウシ゛ョウホウセッテイ
  16. @BGM1
  17. DATA ”B   S   BCBCSCCS”
  18. RESTORE @BGM1
  19. GOSUB @DRSET
  20. ’---メインルーフ゜
  21. @LOOP
  22. GOSUB @DRPLAY
  23. VSYNC 1
  24. GOTO @LOOP
  25. ’---エンソウ
  26. @DRPLAY
  27. MCNT=MCNT-1
  28. IF MCNT>0 THEN RETURN
  29. MCNT=MSTEP
  30. C$=MID$(MML$,MOFS,1)
  31. MOFS=MOFS+1
  32. IF MOFS>=MLEN THEN MOFS=0
  33. IF C$==” ” THEN RETURN
  34. BEEP VC(ASC(C$)-ASC(”A”))
  35. RETURN
  36. ’---エンソウショキカ
  37. @DRSET
  38. READ MML$
  39. MLEN=LEN(MML$)
  40. MCNT=0:MOFS=0
  41. RETURN

CHECKER FLAG (ひとことコメント)

この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)

  • すいか : 45がエラーになります (2011/11/27 (日) 08:45:43)
  • すいか : 45がエラーになります (2011/11/27 (日) 08:55:29)
  • わぁぃ@ : ↑なんというエラーですか? (2011/11/27 (日) 11:27:18)
  • すいか : syntax error (45)です トラック一つだけのやつも同じエラーで(34、ASC)とでます (2011/11/27 (日) 13:51:27)
  • バイカウントメルビル : ↑F​O​R​ ​I​=​0​ ​T​O​ ​T​R​M​A​X​-​1がF​O​R​ ​1=​0​ ​T​O​ ​T​R​M​A​X​-​1になってたりとかしてませんか? (2011/11/27 (日) 18:06:49)
  • バイカウントメルビル : あと括弧忘れとか (2011/11/27 (日) 20:05:44)
  • 名無しさん : IF MOFS>MLEN THEN MOFS=0 にしてるんじゃ? ちゃんと >= にしないとそのエラーになりますよ。 (2012/02/06 (月) 22:53:19)
  • わぁぃ@ : 投稿プログラム,音楽のタグをつけておきました。 (2012/02/11 (土) 14:47:31)
  • ''’’ : <span class="basic-text">QRコート゛</span> (&new{2012/06/06 (水) 16:21:33)
  • 名無しさん : ↑名前を&BASICにしたらこうなった 言いたいことは、QRコート゛カ゛ホシイ (2012/06/06 (水) 16:22:46)
  • BASIC : ニチチムフチヒフツカヒヌむちへ!てすふれのきたもつ (2012/09/19 (水) 07:15:58)
  • 名無しさん : 普通にpetiteditor使え (2012/09/19 (水) 07:33:38)
  • 名無しさん : これはプチコン初代用です。mkIIにはmmlがあります。 (2012/09/19 (水) 11:30:21)
  • 名無しさん : 結構役立つかも。 (2012/10/21 (日) 20:59:49)