

こんにちは、エラーが出て困ってます。ご教授ください。

[code]

    import ddf.minim.*;  //minimライブラリのインポート 
    Minim minim;  //Minim型変数であるminimの宣言
    AudioPlayer player ;  //サウンドデータ格納用の変数
    int i;
    import com.onformative.leap.LeapMotionP5;
    import com.leapmotion.leap.Finger;
    
    AudioPlayer loopSound;
    float x,y;
    LeapMotionP5 leap;
    
    void setup(){
    
        minim = new Minim(this);  //minimの初期化
        player = minim.loadFile("piano14.mp3");
        leap = new LeapMotionP5(this);
        /*
        ↑音声データのロード。必要な数だけ読み込むか、あるいはまとめて読み込む。
        ちょっとやり方はわからないけどまあ長くなったら長くなったで支障はないかな？
        グーグル先生にきいてください
    
        また、複数設定する場合はplayerに通し番号を付けること。
        例)
        player1 = minim.loadFile("○○○.mp3"); 
        player2 = minim.loadFile("□□□.mp3"); 
        player3 = minim.loadFile("△△△.mp3"); 
        */
    
        colorMode(RGB,256); //カラーモード：まあRGBでいいっしょ
        size(800,600); //キャンパスサイズ：お好み
        background(240,240,240); //背景色：画像のがいいかも？
    
    }
    
    void draw(){
    
        for (i = 0; i<10; i++)
            /*
            ↑iの初期値は0、且つ、iが10より低い時、iが描写一回ごとに+1されますよってこと
    
            ↓以下の数字は全部適当です。UIにあわせて変えてください
            */
        {
            fill(30,30,30); //↓の四角に色を塗る
            rect(10,10+100*i,100,40); //四角形描写
            rect(150,55+100*i,100,40);
            rect(290,10+100*i,100,40);
            rect(430,55+100*i,100,40);
            rect(570,10+100*i,100,40);
            rect(710,55+100*i,100,40);
            for (Finger finger : leap.getFingerList()) {
                PVector fingerPos = leap.getTip(finger);
                ellipse(fingerPos.x, fingerPos.y, 10, 10); 
                if(fingerPos.x > 10  && fingerPos.x < 110 && fingerPos.y > 10+100*i && fingerPos.y < 50+100*i)
                    /*
                    ↑
                    ・mouseX,mouseYをリープモーションでとれる座標に変換
                    ・ここはiのような"変数"を使って横着すると、各四角ごとに音を変えるのは
                    　難しいかもしれない。試行錯誤してみればなんとかなるかも(笑)
                    */
                {
                    fill(150,150,150);
                    rect(10,10+100*i,100,40);
                    /*
                    ↑
                    マウスカーソル(= リープで取得した指先の座標）が指定の位置に来たときのみ、
                    fillとrectを上書きする。
                    */
                    player.play();
                    /*
                    ここで音を鳴らす。通し番号を付けた場合はplayerを変えて区別する
                    */
                }
            }
        }
    }
    
    void stop()
    {
        player.close();  //サウンドデータを終了
        minim.stop();
        super.stop();
    }
    
[/code]

【エラー内容】NullPointerException  
JavaSound Minim Error  
error invoking createInput on the file loader object null


CC BY-SA 3.0
2015-11-18T09:08:22.317
18987
2015-11-19T01:02:13.627
2015-11-18T10:01:04.703
5778
13319
question
java processing leap-motion
nullpointerexceptionについて


> 【エラー内容】NullPointerException  
>  JavaSound Minim Error  
>  error invoking createInput on the file loader object null

このエラーメッセージから、createInputがnullを返している(うまくいっていない)事が判りますから、

[code]

     player = minim.loadFile("piano14.mp3");
    
[/code]

でエラーが起きているものと考えられます。  
原因となり得るのは、引数"piano14.mp3"しかありません。

[Minim](http://code.compartmental.net/minim/javadoc/ddf/minim/Minim.html) に、

> the createInput method will search in the data folder, the sketch folder,
> handle URLs, and absolute paths.

との記載があります。  
piano14.mp3というファイルはdataフォルダー等のcreateInputがファイルを探す場所に置かれていますか？
ファイルの場所が間違えているなら、適切な場所にファイルを移すことで問題は解決するはずです。  
dataフォルダー等の場所がどこか判らないのであれば、絶対パスでファイルを指定することで解決すると思います。


CC BY-SA 3.0
2015-11-19T01:02:13.627
19009
2015-11-19T01:02:13.627
217
18987
answer