プチコン3号&BIGまとめWiki

投稿プログラム : プチコンシリーズ共通音楽パックフォーマット NMPACKS

2019年5月26日投稿 / 2019年7月8日更新 / 投稿者 : 高原のな / タグ : 投稿プログラム 実用ツール 音楽

概要

プチコン3号/BIG/4とPiStarterで共通して使える、音楽パックフォーマットです。プチコン4完全対応版も発表しました。

いくつかの曲と、その曲の関連データを一つのファイルにまとめることができます。

音楽プレイヤーに限らず、音ゲーやその他音楽と密接に関連付けたゲームやソフトの開発も楽ができるように、独自拡張がしやすいです!

仕様アップデート履歴

バージョン公開日アップデート内容
0.1(初版)2019年5月26日1ファイルに曲関連データをまとめ上げることを目的として設計した。
0.1.12019年5月26日誤字訂正を行った。
0.22019年5月26日wav<楽器番号>要素を追加した。composer要素の誤字を訂正した。
0.2.12019年6月8日album要素の誤字を訂正した。
0.2.22019年6月8日かつて誤字のあった要素の救済措置を設定した。
0.3.02019年7月8日データ埋め込み構文、copyright要素、date要素を追加した。

使い方

使い倒したい人向けに、仕様書(外部サイト)が用意してありますが、最初は読まなくていいです。

音楽パックを作るには

音楽パックは次の4つの要素から構成されます。これらを必要なものだけ書き記して、拡張子.NMPのファイルとして保存します。

  1. @NMTRACKSから始まる、その音楽パックに収録されている曲IDのリスト
  2. @NMPACKから始まる、その音楽パック全体に関するデータ
  3. @D_<曲ID>から始まる、その曲IDの曲に関するデータ
  4. @M_<曲ID>から始まる、その曲IDの曲のMML

次のプログラムは一番シンプルなファイルの例です。

サンプルファイルはプチコン4専用MMLが収録されたサンプルになっているので参考にしてみてください。

なお、音楽パックファイルに動作可能なプログラムを入れると誤作動の原因になるのでご注意ください。

  1. @NMTRACKS
  2. DATA”MYBGM1”
  3. DATA”MYBGM2”
  4. DATA””
  5. @NMPACK
  6. DATA”album:はじめての きょくパック”
  7. DATA””
  8. @D_MYBGM1
  9. DATA”title:はじめての きょく”
  10. DATA”composer:○○○○”
  11. DATA””
  12. @M_MYBGM1
  13. DATA”(中略:MMLデータ)”
  14. DATA””,0
  15. @D_MYBGM2
  16. DATA”title:かっこいい きょく”
  17. DATA”composer:○○○○”
  18. DATA””
  19. @M_MYBGM2
  20. DATA”(中略:MMLデータ)”
  21. DATA””,0

NMPACKS対応ソフトを作るには

基本ライブラリとして「NM One」をご用意しました。ちょっとだけ楽ができます!!

NM Oneを使うときはEXECを利用してロードするか、NM Oneの中身を全てコピーしてプログラムファイルの前や後ろに貼り付けてください。

使い方の実例は収録したサンプル「SAMPLE.PRG」をご覧ください。次に追加される主な関数を紹介します。

+  主な関数一覧

曲再生の流れの概要をまとめると以下のようになります。

  1. 適当な空きスロットに.NMPファイルをロードする
  2. NMO_INIT$関数にロードしたスロットと"識別文字と分割先の動作モード"(関数一覧参照)を渡してIDの配列を取得する
  3. 再生したい曲のIDと曲を定義する定義番号をNMO_BGMSETに渡す(必要に応じてNMO_SETALLWAVも実行しておく)
  4. BGMPLAYで再生

最小のプログラム例を下に示しておきます。

  1. EXEC”PRG2:NMONE−LIB.PRG”
  2. EXEC”PRG1:曲ファイル”
  3. DIM ID$[0]
  4. ID$=NMO_INIT$(1,0)
  5. NMO_BGMSET ID$[0],128
  6. BGMPLAY 128

また、NMO_GET$(曲ID,”TITLE”)で曲名、NMO_GET$(曲ID,”COMPOSER”)で作曲者などを取得可能です。

もうちょっと作り込むには(中上級者向け)

独自拡張でどんどん作り込むのもアリですが、ここでは標準で用意した一部機能を紹介します。

設定可能な主な要素

各種要素は、適切な位置にDATA文を並べて"要素名:データ"の形式で書くことで設定できます。要素名の大文字小文字は問いません(当ページ内でも混在しています)。

次の表に示す、音楽パックファイル全体の要素は@NMPACKのDATA文に書きます。

要素名内容
albumアルバム名(音楽パックファイルの題)

次の表に示す、曲の要素は@D_<曲ID>のDATA文に書きます。

要素名内容
title曲のタイトル(このデータがない場合エラーとなる実装もある)
composer作曲者(このデータがない場合エラーとなる実装もある)
wav<楽器番号>WAVSET用のデータ。wav224のようにして指定する。アタック,ディケイ,サスティン,リリース,定義文字列[,基準音程]と、リファレンス通りに設定する。基準音程は省略してもよい。実装者はこのデータに対応するべき。
arranger編曲者(開発者の意図としては積極的に設定&対応してほしい。)
lyricist作詞者
description曲の詳細およびコメント等
copyrightコピーライト・権利表示
date制作日時(yyyy-mm-dd形式が望ましいが、区切り文字は/や漢字による助数詞も許容される)
lyric歌詞(ただし、この仕様書ではフォーマットを指定しないため、非推奨)

標準で用意してある他の要素を確認するには仕様書(外部サイト)をご覧ください。

特定バージョンのプチコンやSmileBASICで、別のMMLを読み込ませる

曲IDの前に、次のような「識別文字」を追加すると、データを読み込みラベルの「@M_」部分が変化します。

対応バージョン識別文字読み込みラベル
プチコン3号#@M3_
プチコンBIG$@MB_
PiStarter%@MP_
プチコン4&@M4_

また、必要に応じて、自分で識別文字を追加して、読み込みラベルを変更することも可能です。NM Oneではそれが簡単にできるようになっています。

埋め込み構文を使う

[=曲ID:要素名]という式単体もしくはembed構文を組み合わせて、他の要素に設定したデータを埋め込めるようになりました。

要素のデータがこの埋め込み式だけの場合はsame構文といい、曲ID:要素名の要素をそのままコピーします。

要素のデータ全体を{}で囲んだ場合はembed構文といい、埋め込み式がどこにあっても埋め込み式を評価しようと試みます。

なお、どちらの構文にも当てはまらない場合は埋め込み式が評価されません。

このほか、ライブラリに関して要望等ありましたらCHECKER FLAGにお寄せください。

サンプルの公開キー

トップメニューの「作品公開とダウンロード」から公開キーを入力すると、ダウンロードすることができます。

サンプルとして、「NM One」を使用したシンプルなプレイヤーと、投稿者が第3回SB2Weeksに投稿した「おてがみコウモリさん」の曲を数曲収録しました。

プチコン3号/BIG版 バージョン2019-07-08
R8PXEYD

また、プチコン4完全対応版も発表しました。プチコン4ユーザの方はそちらをご利用ください。

[参考]プチコン4版 バージョン2019-07-21
4ZSEX3ND

サンプルアップデート履歴

バージョン対象環境公開状況アップデート内容
(初版)3号/BIG終了1ファイルに曲関連データをまとめ上げることを目的として設計した。
(初期版)3号/BIG終了バックアップがないため、詳細は不明
2019-07-024終了プチコン4対応版初版。ただし対応し忘れた部分がある。仕様バージョン0.2.2に対応。
2019-07-083号/BIG公開中仕様バージョン0.3.0に対応。NMONE-LIB.PRGは埋め込み構文にも対応した。
2019-07-214公開中仕様バージョン0.3.0に対応。NMONE-LIB.PRGは埋め込み構文にも対応した。

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

この作品(= NMPACKSの仕様と、公開キーでアップしているサンプル)に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)

  • Na : バグ報告 NMOME-LIB.PRG 168行目のBGMSETDでスロット1を読み込むようになっているので他のスロットでロードできません (2019/06/08 (土) 20:43:14)
  • Na : "1:"+NMO_ …を STR$(_NMO_SLOT)+":"+NMO_ …とすると動きます (2019/06/08 (土) 20:45:24)
  • 投稿者 : 修正したものをアップしました。仕様書とこのページの修正反映も間も無く行います (2019/06/08 (土) 20:50:01)
  • 投稿者 : http://petitverse.hosiken.jp/community/petitcom/topic/?read=1321 にて、新バージョンの仕様検討を行っております。要望等があればプチバースのページかこのコメント欄へお願いします。 (2019/10/22 (火) 22:43:58)

メニュー 【3号】

ヘルプ

リンク

最近の更新

最近の人気ページ

オンライン情報

  • 現在同時に 5 人がこのサイトを見ています
  • このページはこれまでに 713 回、本日は 2 回、昨日は 6 回閲覧されました

ページの先頭に戻る

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.045 秒 | このページの最終更新 : 2019/10/22 (火) 22:43:58 (8h) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30