見出し画像

【マイクラコマンド】コマンドで作曲!scheduleコマンドでplaysoundコマンドを自在に操ろう!【playsound】【JE版】【マイクラ配布マップ】

#ふつーのひとのマイクラコマンド教室

この記事ではplaysoundコマンドで音を1音ずつ鳴らしてファンファーレを鳴らす方法について解説します。

マイクラで好きな曲を鳴らしたい…

配布マップを作っているとマイクラで好きな曲を鳴らしたくなることがあります。曲を作るには"①タイミングよく②音を鳴らす方法"が必要になります。今回はfunction機能を使って①をscheduleコマンド、②をplaysoundコマンドで実現していきます。

function機能の使い方はコチラ

(いちおうリソースパックでレコードのBGMを差し替えることができるのですが音源を配布するのはNGだったのでコマンドで対応しました~)

↓こちらのアイキャッチの曲を作ります~

↓作成した配布マップはコチラ

playsoundコマンドとは

playsoundコマンドはマイクラ内に収録されているサウンドエフェクト、いわゆるSEを再生するためのコマンドです。こちらのコマンドで音符ブロックのSEを鳴らすことで作曲することができます。
(ちなみに私も音楽はさっぱりなのでこの辺の解説は間違ってるかもしれません~)

playsoundコマンドの構成は下記のようになっています。

playsound "鳴らしたいSE" "SEを鳴らすカテゴリ(サウンド設定でいじれるやつ)" "SEを聞かせたい人" "SEを鳴らす場所" "SEの聞こえる距離" "SEのピッチ" "SEの最小音量"
#例
playsound minecraft:block.note_block.bell master @a ~ ~ ~ 1 0.94 1

まずはファンファーレを鳴らす楽器を選択しましょう。
音符ブロックのWikiによると下記16種類の楽器から鳴らす音を選択できるようです。私は楽器の名前だけ見てもよくわからなかったのでとりあえず鳴らしてみていい感じの音だったベルを選択しました。

■使用できる楽器
・バス・スネアドラム・スティック・バスドラム・ベル・フルート・チャイム・ギター・木琴・鉄筋・カウベル・ディジュリドゥ・電子音・バンジョー・電子ピアノ・ハープ

次に音階(ドレミファソラシド)の音を鳴らしてみましょう。
音符ブロックのWikiによるとピッチを変えることで音階を表現できるらしいです。(シャープとフラットについてはよくわからなかったので使いたい方はWikiを参照してください…)

#ド
playsound minecraft:block.note_block.bell master @a ~ ~ ~ 1 0.7 1
#レ
playsound minecraft:block.note_block.bell master @a ~ ~ ~ 1 0.79 1
#ミ
playsound minecraft:block.note_block.bell master @a ~ ~ ~ 1 0.89 1
#ファ
playsound minecraft:block.note_block.bell master @a ~ ~ ~ 1 0.94 1
#ソ
playsound minecraft:block.note_block.bell master @a ~ ~ ~ 1 1.05 1
#ラ
playsound minecraft:block.note_block.bell master @a ~ ~ ~ 1 1.18 1
#シ
playsound minecraft:block.note_block.bell master @a ~ ~ ~ 1 1.33 1
#ド
playsound minecraft:block.note_block.bell master @a ~ ~ ~ 1 1.41 1

ここまででとりあえずドレミファソラシドは表現できるようになりました❗

scheduleコマンドとは

では次にタイミングよくドレミファソラシドを鳴らす方法について説明します。
下準備としてドレミファソラシドのコマンドをそれぞれ別々のファンクションファイルとして用意します~

↓こんな感じです~

scheduleコマンドの構成は下記のようになっています。

schedule function "実行したいコマンド" "実行までの秒数"
#例
schedule function utility:sound/musicalscale/do 1s

こちらの"実行までの秒数"を調整することで曲を作成します~

↓下記のようなファンクションファイルを用意すると1秒ごとにドレミファソラシドと音が鳴ります~

これでドレミファソラシドをタイミングよくならせるようになったので後はがんばって曲の通りに並べていきます~(がんばる部分は割愛します…)

以上となります!
素敵なSEがあると配布マップが盛り上がるのでぜひ皆さんも活用してみてください❗

scheduleコマンドからplaysoundコマンドを呼び出す際の注意点

こちらについては上記のコマンドをもう少しカスタマイズしたい方向けの内容になります。少し難しい内容になりますので、カスタマイズをしない方は読み飛ばしていただいてかまいません~。

scheduleコマンドによって呼び出されたコマンドはサーバが主体となって実行されます。つまり、音源の場所が座標[0,0,0]の場所となります。また、playsoundコマンドには距離減衰の概念が実装されており、音源から離れた場所に行くほど、再生される音量が小さくなります。ようするに座標[0,0,0]から離れて地点でコマンドを試していると「あれ?音がならないぞ?」となります。この問題を解決する手段は2通りあります。

手法①"SEの最小音量"を1にする。
この記事で作成したコマンドでは"SEの最小音量"を1に設定することで距離減衰の影響をなくしています。ただし、この方法だとワールドのどの場所にいても、同じ音量で全員にファンファーレが聞こえるため、「特定の場所にいる人にだけファンファーレを聞かせたい!」といった要件は満たせなくなります。

手法②"SEを鳴らす場所"を指定する。
「特定の場所にいる人にだけファンファーレを聞かせたい!」場合には下記のように"SEを鳴らす場所"を指定し、"SEを聞かせたい人"を@a[distance=..10]のようにしてやると"SEを鳴らす場所"から半径10m以内にいる人にファンファーレを聞かせることができるようになります。ただし、こちらの方法は座標の指定が必要なので、鳴らしたい場所ごとにファンクションファイルを用意する必要があります。

playsound minecraft:block.note_block.bell master @a[distance=..10] -4 21 -12 1 0.94 1

おおよその要件は①、②の手法で満たせるかと思います。ちなみにアーマースタンドによる座標指定でもう少し柔軟なコマンドを作成することが可能ですが、大規模な配布マップ等を作らない限りは不要だと思いますのでここでは割愛します。(というか大規模な配布マップ作る人は私の記事がなくてもコマンド組めそうな気がしますね…)

↓RAGのTwitterとかYoutubeとか
Twitter:@redastergardens

↓ ふつーのひととか
Twitter:@HNohito

この記事が気に入ったらサポートをしてみませんか?