Minecraft【Java版/統合版】タイマー楽譜で演奏。音符ブロック!

2020-04-13

音符タイマー作成。

スコアボードを使って、音符(Onpu)タイマーを作ります。

アーマースタンド使って、数字を足していきます。

「Note」と名前を付けて、アーマスタンドを召喚します。
Java版

/summon armor_stand ~ ~ ~ {CustomName:"\"Note\"",CustomNameVisible:1b}

統合版 ※座標を入れなければ、自分の立っている場所に召喚されます。

/summon armor_stand Note

 

①動力がある時、「Onpu」を1増やします。
コマンドブロックは「リピート(反復)」「動力が必要(レッドストーンが必要)」。
※Onpu2の場合 scoreboard players add @e[name=Note] Onpu2 1

scoreboard players add @e[name=Note] Onpu 1

②アーマスタンドNoteの「Onpu」が193になったら、「Onpu」を0に戻します。
このコマンドを使って小節を区切ります。
※Onpuの数字は楽譜を作ってから、曲の長さに合わせて変更します。
※Onpu2の場合 scoreboard players reset @e[scores={Onpu2=193}] Onpu2

scoreboard players reset @e[scores={Onpu=193}] Onpu

③「Onpu」がリセットされた時、アーマスタンドNoteの「Roop」を1増やします。
コマンドブロックは「チェーン」、「条件付き」「常時実行(常にアクティブ)」にします。

scoreboard players add @e[name=Note] Roop 1

 

条件でアクション

④「Roop」のスコア数を使って装置を止めたり、別の回路へ信号を送ったりします。
下記のコマンドでは、楽譜を3回ループしています。

このコマンドが無ければ、停止装置でレッドストーンブロックを消すまで、曲が繰り返されます。
Java版

execute if entity @e[scores={Roop=3..3}] run setblock ~ ~ ~ air

統合版 ※setblock手前の「~ ~ ~」はそのまま。

execute @e[scores={Roop=3..3}] ~ ~ ~ setblock ~ ~ ~ air

 

楽譜回路。

楽譜を作る前に、曲の流れを確認しておきます。画像はミッキーマウスマーチの楽譜回路です。

紫色のコマンドブロックは、「リピート(反復)」「動力が必要(レッドストーンが必要)」にします。「チェーン」でつなぐと信号が一度しか通らないのでうまく音がなりません。

「常時実行(常にアクティブ)」だとワールドが重くなりそうなので、レッドストーンブロックを置いた時だけ信号が伝わるようにレッドストーン(ダスト)で回路を繫げています。
リピーター(反復装置)は信号を伸ばしているだけです。
※小節の区切りに置いておくと、わかりやすいです。

楽譜回路の方は、信号さえ伝わって入ればコマンドは動くので、置き方は自由です。
画像では、伴奏とメロディを分けています。
さらにOnpuタイマーを3つ作成して、メロディごとに回路を切り替えています。
和音の時は横に並べて配置しています。

 

信号の流れ

①曲を再生する装置から「あ」にレッドストーンブロックを置きます。
Onpuのメロディを2回繰り返します。

②Roopのスコアが2の時、「い」にレッドストーンブロックを置き、「あ」のレッドストーンブロックを消します。

③Onpu2のメロディを2回繰り返します。
2周目の時、一部のメロディとコマンドブロックを変えています。
Roopのスコアが3の時に「clone」を使って差し替えています。

④Roopのスコアが4の時、「う」にレッドストーンブロックを置き、「い」のレッドストーンブロックを消します。さらに差し替えたブロックを「clone」や「fill」で元に戻します。

⑤Onpu3のメロディを1回再生します・ Roopのスコアが5の時、「い」にレッドストーンブロックを置き、「う」のレッドストーンブロックを消します。

⑥Onpu2のメロディをもう1回再生します。 Roopのスコアが5の時、「い」にレッドストーンブロックを置き、装置を止めます。

途中で曲を止めたい場合は、「あ、い、う」のレッドストーンブロックを「fill」コマンドで消します。
また手動で止めた場合など、音符タイマーが途中で止まっていると曲がうまく再生出来ません。
曲を停止する装置を押して、スコアボードを一度削除しリセットします。

 

 

楽譜作成。

楽譜の基本的なルールを表にまとめました。細かいルールは他にもたくさんあります。
簡単な楽譜なら今回紹介するもので、タイマー楽譜を作れるようになると思います。

 

楽譜の読み方

 

音符と音の長さ

 

Onpuの入力例

「Onpu」は音の長さの時間です。
表の「Onpu」の数を参考に1個前の音符の長さを足し算していきます。
曲が終わるか、ループさせるまで足し算をしていきます。

曲の開始が「Onpu」0だと音が出せないので、開始は0以上の数字にします。
休符やタイも音は鳴らさないですが足していきます。
割り切れない数字もありますが、小節の長さを優先に合わせます。
※16音符や連符などうまく音が鳴らない場合があります。音符を減らしたりして誤魔化します。

曲の速度を変更する場合は、4分音符を基準に、数字を増やしたり減らしたりします。
数字を変更した場合、全てのOnpuの数字は変わります。
※完成サンプル動画のミッキーマウスマーチは、4分音符をOnpu8にしています。

 

□メロディをループさせる時

楽譜の長さは、Onpu204までありますが、曲の開始がOnpu12なので、Onpu=193でリセットしループさせます。
※曲をループする時は、Onpu1個分遅れます。

音符タイマー作成②のコマンド参照。

 

□メロディを切り替える時

最後の音符の長さに合わせて、開始のOnpu2の長さを決めます。
4分音符が12の長さなので、Onpu=198でリセットすると曲の切り替えがスムーズに出来ます。

音符タイマー作成②のコマンド参照。

 

音符コマンド

楽譜に合わせてOnpuの数字や音階をメモ帳に入力していきます。
「~ ~ ~」には鍵盤装置の作成でメモした音階の座標を入力します。

Java版

execute if entity @e[scores={Onpu=12..12}] run setblock ~ ~ ~ redstone_block

統合版 ※setblock手前の「~ ~ ~」はそのまま。

execute @e[scores={Onpu=12..12}] ~ ~ ~ setblock ~ ~ ~ redstone_block

 

楽譜メモ 統合版 入力例)

曲のタイトル

Onpu
execute @e[scores={Onpu=12..12}] ~ ~ ~ setblock ~ ~ ~ redstone_block
execute @e[scores={Onpu=24..24}] ~ ~ ~ setblock ~ ~ ~ redstone_block
execute @e[scores={Onpu=36..36}] ~ ~ ~ setblock ~ ~ ~ redstone_block
execute @e[scores={Onpu=48..48}] ~ ~ ~ setblock ~ ~ ~ redstone_block
execute @e[scores={Onpu=66..66}] ~ ~ ~ setblock ~ ~ ~ redstone_block
execute @e[scores={Onpu=66..66}] ~ ~ ~ setblock ~ ~ ~ redstone_block
.
.
.
Roop scoreboard players reset @e[scores={Onpu=193}] Onpu
-----------------------------------------------------------------------------------------------------
Onpu2
execute @e[scores={Onpu2=12..12}] ~ ~ ~ setblock ~ ~ ~ redstone_block
execute @e[scores={Onpu2=24..24}] ~ ~ ~ setblock ~ ~ ~ redstone_block
.
.
.

先に音階を入力してから、Onpuに数字を入れていくと良いです。
楽譜メモが完成したら、楽譜回路のようにコマンドブロックを設置してコマンドをコピー&ペーストしていきます。

直接コピペ出来ない機種は、定型文からコマンドを貼り付けて、Onpuに数字を手入力していきます。

曲の開始位置、楽譜回路「あ」を合わせれば、cloneやfillコマンドで曲を差し替え出来ます。
以上でタイマー楽譜で演奏は終了です。

 

サンプル曲

ファミマの入店音の楽譜です。

□ファミマ大盛況

Onpu=6..6/G13(ソ)
Onpu=12..12/D#9(レ#)
Onpu=18..18/G#2(ソ#)
Onpu=18..18/A#4(ラ#)
Onpu=24..24/D#9(レ#)

Onpu=30..30/D8(レ)
Onpu=30..30/F11(ファ)

Onpu=36..36/A#16(ラ#)

Onpu=48..48/F#0(ファ#)

Onpu=54..54/A#4(ラ#)
Onpu=54..54/F11(ファ)

Onpu=60..60/G13(ソ)

Onpu=66..66/A#4(ラ#)
Onpu=66..66/F11(ファ)

Onpu=72..72/A#4(ラ#)
Onpu=78..78/G#2(ソ#)
Onpu=78..78/D#9(レ#)

Roop/Onpu=139

 

 

おすすめ記事もどうぞ!