2011-07-22 11 views
1

私は最終年度の学生で、プロジェクトに取り組んでいます.iはニューロスキーの考え方を購入しています。ヘッドセットなど)アルファ波のドラム、ミディを使用して、私はC#でのコーディングを行うには、専門家ではないので、可能な場合any1私に教えていただけますか? と助けてくれるリンクneuroskyヘッドセットからmidiを使用してCで音楽を生成する#

+0

あなただけのノートを考えることにより、曲を生成する場合に、なぜあなたはそれをハミングしていませんか? – FastAl

答えて

3

はい、これは完全に可能です。私はすでにあなたが示唆していることを正確に行っています。 more details on my website for MindMaster MIDIが見つかります。

これにはいくつかの部分があります。最初は、ヘッドセットからサンプルを取り出してバッファに入れることです。そのためにはNeurosky SDKが必要です。

次に、これらのサンプルを処理する必要があります。脳波を扱う多くのアルゴリズムがあります。最も簡単な方法は、波形を時間領域から周波数領域に変換し、アルファ/ベータ周波数範囲のいくつかのバンドの相対的なレベルを確認することです。 (これは8Hzから24Hz程度です)

これをプログラムで行うには、いくつかの方法があります。 FFTは一般的な方法であり、多くのアルゴリズムが利用可能です。私はFFTが私の目的にとっては遅すぎると判断し、Goertzel algorithmを使ってしまった。私はいくつかのバンドだけを見ているので、これはより効率的でした。

これを取得したら、そのデータをMIDIに変換するアプリケーションを作成する必要があります。これをどうやってやるかは、あなたと実装したい機能に依存します。

次に、MIDIデータを送信する必要があります。私はあなたがMIDIにどのくらい親しみを持っているか分かりませんが、基本的なレベルでは、ノートオン/オフメッセージがあります。カットオフ周波数やレゾナンスなどのさまざまなパラメータを制御するコントロールチェンジメッセージにもっと興味があるでしょう。 C#でMIDIを送信するには、やはり多くの選択肢があります。 Leslie Sanford's example on Code Projectで十分です。

最後に、これに関する質問がある場合は、個別の質問を別々にお願いします。スタックオーバーフローは本当に "私はこの大きなプロジェクトをしたい、一度にすべてをやる方法を教えてください"のための場所ではありません。

+0

よく聞いているように、midiデータを波(つまりデータのinpt/output)に入れる方法についてはちょっと混乱していますが、midiでかなり新しいと言われています+波にはすでに周波数が割り当てられていますか?,,,,,やっぱりダメだよ:) – peshoge

+2

@peshoge、これらは基本的な質問で、実装方法を決めるのはあなた次第です。どのように波を解釈し、データを使って何をするかは、個々の決定です。私は本質的にあなたのプロジェクト全体をあなたに与えました...あなたは何をもっと望むことができますか? – Brad

0

Android APIは、あなたの人生をはるかに簡単にするデータ構造を公開しています(FFTライブラリや神と統合する必要はありません)。

特にMSG_EEG_POWER。

SDKから: "デルタ(0.5 - 2.75Hz)、シータ(3.5 - 6.75Hz)、低アルファ(7.5 - 9.25Hz)、高アルファ(10 - 11.75 Hz)、低ベータ(13 - 16.75Hz)、高ベータ(18 - 29.75Hz)、低ガンマ(31 - 39.75Hz)、中ガンマ(41 - 49.75Hz)

あなたは、Bradがやっていることのいくつかにそれらを与えることができます。あなたはNeuroskyの人たちと話をして、C#用のAPIをあなたに与えることができるかもしれません。

1

私はあなたの質問に答える資格があります。私は今、C#xnaのビデオゲームを開発中です。

public void _thinkGearWrapper_ThinkGearChanged(object sender, ThinkGearChangedEventArgs e) 
{ 
    // update the textbox and sleep for a tiny bit 
    BeginInvoke(new MethodInvoker(delegate 
     { 
      lblAttention.Text = "Attention: " + e.ThinkGearState.Attention; 
      lblMeditation.Text = "Meditation: " + e.ThinkGearState.Meditation; 
      attentionvar = e.ThinkGearState.Attention; 
      meditationvar = e.ThinkGearState.Meditation; 
      attentionstring = attentionvar.ToString(); 
      meditationstring = meditationvar.ToString(); 
      txtState.Text = e.ThinkGearState.ToString(); 
     })); 
    Thread.Sleep(10); 

    senddata(); 



} 


public void senddata() 
{ 
    FileStream fs = new FileStream("\\programming\\meditationvariables.txt", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); 
    fs.Close(); 
    StreamWriter sw = new StreamWriter("\\programming\\meditationvariables.txt", true, Encoding.ASCII); 
    string nextline = meditationstring; 
    sw.Write(nextline); 
    sw.Close(); 
} 

これは実現可能です。あなたはこのプロジェクトをダウンロードして、それがxna3であるにもかかわらず見る必要があります。5 http://channel9.msdn.com/coding4fun/articles/MindBlaster

と、新しい更新されたバージョンが来るたくさんより便利になりますけれども、それはあまりにもまだ更新されていないお手伝いします。このウェブサイトに私のプロジェクトのために developer.neurosky.com

チェックアウト私のDropboxを移動する必要があります私を読んで、すべて

https://www.dropbox.com/s/4tkemk6py7ffvch/JESUSISGOD-MINDBALLalpha.zip

関連する問題