2011-07-22 31 views
1

我是最後一年的學生,並已開始在我的項目上工作。我已經購買了神經網絡思維模式,並正在考慮通過爲每個波分配一個樂器(從耳機),例如鼓上的阿爾法波,使用MIDI,我想做的編碼在C#我不是一個專業,所以任何1可以告訴我,如果它是可行的? 和任何將幫助的鏈接從c神經網絡耳機使用midi生成音樂#

+0

如果你想僅僅通過思考音符產生一調,你爲什麼不只是哼了嗎? – FastAl

回答

3

是的,這是完全可能的。我已經完成了你的建議。你可以找到more details on my website for MindMaster MIDI

這個有幾個部分。首先是從耳機獲取樣品並放入緩衝區。爲此,您將需要Neurosky SDK

接下來,您將需要處理這些示例。處理腦波有許多算法。最簡單的方法(最富有成效的取決於你問的對象)是將波形從時域轉換到頻域,並檢查alpha/beta頻率範圍內幾個頻段的相對電平。 (這是從8Hz到24Hz左右的任何地方)。

有一些方法可以以編程方式執行此操作。 FFT是一個常用的方法,你會發現很多可用的算法。我決定FFT對我而言太慢了,最後使用Goertzel algorithm。這樣更有效率,因爲我只看幾個樂隊。

一旦你有了,你需要編寫你的應用程序將數據轉換成MIDI。你如何做到這一點取決於你,以及你希望實現的功能。

接下來,您需要發送MIDI數據。我不確定你對MIDI有多熟悉,但在基本層面上,有音符開/關信息。您可能會對控制更改消息更感興趣,控制更改消息控制各種參數,如截止頻率和共振。要用C#發送MIDI,您有很多選擇。 Leslie Sanford's example on Code Project足以讓你開始。

最後,如果您對這些問題有任何疑問,最好單獨提出個別問題。堆棧溢出真的不是「我想做這個大項目,告訴我如何一次完成」的地方。

+0

以及如何將MIDI數據放在波浪上(即輸入/輸出數據)有點困惑,就像你說的那樣,我用midi +新增了一些新的功能,這些波已經被分配了頻率?,,,,,和thanx一打:) – peshoge

+2

@peshoge,這些是你決定如何實現的基本問題。你如何解釋海浪,以及你對數據的處理是個人決定。我基本上給了你整個項目......你還想要什麼? – Brad

0

Android API公開了一個數據結構,可以讓你的生活變得更輕鬆(不必與FFT庫集成或上帝禁止自己寫)。

特別是MSG_EEG_POWER。 「

來自SDK文檔: 」八個腦電功率分別是:delta(0.5-2.75Hz),theta(3.5-6.75Hz),低alpha(7.5-9.25Hz),高alpha(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