はどれよ

【Unity3D-C#メモ】設定したBPMの音符の長さを返す関数

2014/09/22 03:48 投稿

  • タグ:
  • Unity
  • C#
  • プログラム
  • Unity3d
  • プログラミング
  • ゲーム制作
VJソフトか何かに使えるんじゃなかろうかと思って、作ってみた。
このソースはGameObjectにコンポーネント登録しなくても、
Assetフォルダにあるだけで動作します。
だから、呼び出すときは関数をそのまま呼び出せばOK。

using UnityEngine;
using System.Collections;

public class GetBPMTime{
public static float MathNote(float BPM,NoteMode Note){
float d;
switch(Note){
case NoteMode.x4 :d=4f; break;
case NoteMode.x2 :d=2f; break;
case NoteMode.x1 :d=1f; break;
case NoteMode.x1p2 :d=1f/2; break;
case NoteMode.x1p4 :d=1f/4; break;
case NoteMode.x1p8 :d=1f/8; break;
case NoteMode.x1p16 :d=1f/16; break;
case NoteMode.x1p32 :d=1f/32; break;
case NoteMode.x1p64 :d=1f/64; break;
case NoteMode.x1p128 :d=1f/128; break;
case NoteMode.x1p256 :d=1f/256; break;
default :return -1f;
}
return 60f/BPM*d;
}
}
public enum NoteMode{
x4,
x2,
x1,
x1p2,
x1p4,
x1p8,
x1p16,
x1p32,
x1p64,
x1p128,
x1p256
}

■使い方
使いたいスクリプトを開いて、
[格納したい変数] = GetBPMTime.MathNote( [BPM値] , NoteMode.[長さ] );
とやればOK。
長さは以下の通り。
x4:全音符
x2:2分音符
x1:4分音符
x1p2:8分音符
x1p4:16分音符
x1p8:32音符
x1p16:64音符
x1p32:128音符
x1p64:256音符
x1p128:512音符
x1p256:1024音符


え?分かりにくい? しょうがないにゃあ...

using UnityEngine;
using System.Collections;

public class GetBPMTime{
public static float MathNote(float BPM,NoteMode Note){
float d;
switch(Note){
case NoteMode.d1 :d=4f; break;
case NoteMode.d2 :d=2f; break;
case NoteMode.d4 :d=1f; break;
case NoteMode.d8 :d=1f/2; break;
case NoteMode.d16 :d=1f/4; break;
case NoteMode.d32 :d=1f/8; break;
case NoteMode.d64 :d=1f/16; break;
case NoteMode.d128 :d=1f/32; break;
case NoteMode.d256 :d=1f/64; break;
case NoteMode.d512 :d=1f/128; break;
case NoteMode.d1024 :d=1f/256; break;
default :return -1f;
}
return 60f/BPM*d;
}
}
public enum NoteMode{
d1,
d2,
d4,
d8,
d16,
d32,
d64,
d128,
d256,
d512,
d1024
}

長さは以下の通り。
d1:全音符
d2:2分音符
d4:4分音符
d8:8分音符
d16:16分音符
d32:32分音符
d64:64分音符
d128:128分音符
d256:256分音符
d512:512分音符
d1024:1024分音符


まあ、使いやすいほうを使えばいいんじゃないかな。

え?enumにする意味がわからない?
それは元々コンポーネントに繋ぐ形式にしてた名残です。
enumがインスペクター表示ではコンボボックスになるのが嬉しかった系のやつ。

コメント

コメントはまだありません
コメントを書き込むにはログインしてください。

いまブロマガで人気の記事