オーストラリア移住を目指すSE日記

オーストラリアを目指して走れ!!

【Java学習10時間目】タブ譜を音譜に変換してくれるツール

 

Java学習10時間目

 

Javaの勉強をするなかで、こんなプログラムあればいいなって思うものがありました。

 

もしかしたらもう存在するかもしれないのだけれど、

 

あえていまは調べません^^;

 

わたしはギター、ベースを弾いています。

 

むかしはバンドスコアを買えば、

 

音譜とタブ譜が両方書いてくれていました。

 

でもバンドでオリジナルの曲をするとなると、

 

だいたい歌詞のうえにコードが書いてあるだけです。

 

だからベースは基本感覚で弾いています。

 

たまにベースパートにも音譜をつけてくれるものもありますが、

 

わたしは頭の中で音譜をすぐにタブに変換できません。

 

なので、「タブ譜を音譜に自動で変換してくれるツール

 

があればいいなと思いました。

 

 

以下思いついた内容です。

[仕様]

・まずは「タブ譜1文字を入力するとそれに対応する音符を返す」プログラムを作りたい

・4弦ベースと5弦ベースを対象とする

・各弦のフレット範囲は「開放弦から10フレットまで」とする
(それよりも高いフレットは基本的に使用しない)

・言語設定は日英とする。日本語の場合は音符を和名で返し、

   英語の場合はローマ字で返す。

 

[課題]

・変数に入る値が「X弦Yフレット」となっているが、

   どう表現すればいいか?

案1
1桁目を弦番、2桁目をフレット番とする案

ex)42 => 4弦2フレット => ファ

案2
GUIを用意し、弦番をGUI側で識別させる案

Ⅰ               ,1
Ⅱ            ,2,
Ⅲ      ,2,4,
Ⅳ 4,2,

 

・型をintにして、入力を1文字としているが、

 

実際は1文字ではなく、複数文字を入力として受付けたい

複数文字を一括で音符に変換するにはどうすればいい? 

 

⇒案1ならば、複数の変数をまとめて扱うことができる配列が向いていそう!
 for(i=0;i<tab;i++){
   System.out.println();
   }

 

[草案]

public class Main{
  public static void main(String[] args){
    System.out.println("ここにタブ譜を入力してください");
    String tab= new java.util.Scanner(System.in).nextline();
    // (複数の整数文字列)
    System.out.println(tabHenkan(tab));
  }

    public tabHenkan(){
    if(i=0:i<hight.tab:i++){
    //↓case文を書く
    //変数tabの値に応じて、出力する音符を定義する
    switch(tab){
    case 4弦0フレット:
    System.out.println("ミ");
    case 4弦1フレット:
    System.out.println("ミ#");
    case 4弦2フレット:
    System.out.println("ファ");
    case 4弦3フレット:
    System.out.println("ソ");
    case 4弦4フレット:
    System.out.println("ソ#");
    case 4弦5フレット:
    System.out.println("ラ");
    case 4弦6フレット:
    System.out.println("ラ#");
    case 4弦7フレット:
    System.out.println("シ");
    case 4弦8フレット:
    System.out.println("シ#");
    case 4弦9フレット:
    System.out.println("ド");
   

 

以上