在c#中使用midi从neurosky耳机生成音乐

时间:2011-07-22 16:08:36

标签: c# midi

我是最后一年的学生并且已经开始研究我的项目了。我已经购买了神经支持的心态,并且正在考虑通过为每个波浪(从耳机发送)分配一个仪​​器来进行创世纪,例如在阿尔法波浪上鼓,使用midi,我想在c#中进行编码而不是专业,所以可以告诉我它是否可行? 以及任何可以提供帮助的链接

3 个答案:

答案 0 :(得分: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足以让您入门。

最后,如果您对此有任何疑问,最好分开询问个别问题。 Stack Overflow真的不是“我想做这个大项目的地方,告诉我如何一次完成这一切”。

答案 1 :(得分: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

答案 2 :(得分:0)

Android API公开了一种数据结构,可以让您的生活更轻松(无需与FFT库集成或上帝禁止自己编写)。

特别是MSG_EEG_POWER。

从SDK doc: “八个EEG功率是:delta(0.5 - 2.75Hz),theta(3.5 - 6.75Hz),低 - α(7.5 - 9.25Hz),高 - α(10 - 11.75Hz),低 - β(13 - 16.75) Hz),高β(18 - 29.75Hz),低伽玛(31 - 39.75Hz)和中伽马(41 - 49.75Hz)。“

然后,您可以将这些内容提供给Brad正在做的一些事情。您可以与Neurosky人员交谈,看看他们是否可以为您提供C#的API。