генерация музыки из нейро-гарнитуры с помощью midi в c # - PullRequest
1 голос
/ 22 июля 2011

Я учусь на последнем курсе и приступил к работе над моим проектом. Я приобрел неврологическое мышление и собирался генерировать музыку, назначая по одному инструменту для каждой волны (которые посылаются из гарнитуры), например барабан на альфа-волнах, используя MIDI, я хочу сделать кодирование в C # Im не профессионал, так что может кто-нибудь сказать мне, если это возможно? и любые ссылки, которые будут помогать

Ответы [ 3 ]

3 голосов
/ 23 июля 2011

Да, это вполне возможно. Я уже сделал именно то, что вы предлагаете. Вы можете найти более подробную информацию на моем сайте для MindMaster MIDI .

Есть несколько частей к этому. Первый - это получить образцы из гарнитуры и поместить их в буфер. Для этого вам понадобится Neurosky SDK .

Далее вам нужно будет обработать эти образцы. Есть много алгоритмов для работы с мозговыми волнами. Самый простой метод (и самый плодотворный, в зависимости от того, кого вы спрашиваете) - это преобразовать ваш сигнал из временной области в частотную область и проверить относительные уровни нескольких полос в альфа / бета диапазоне частот. (Это где-то от 8 Гц до 24 Гц или около того.)

Есть несколько способов сделать это программно. FFT является обычным способом, и вы найдете множество доступных алгоритмов. Я решил, что FFT слишком медленный для моих целей, и в итоге использовал алгоритм Goertzel . Это было более эффективно, так как я смотрю только на несколько групп.

Как только вы это сделаете, вам нужно написать свое приложение, чтобы превратить эти данные в MIDI. Как вы это сделаете, зависит от вас и от того, какие функции вы хотите реализовать.

Далее необходимо отправить данные MIDI. Я не уверен, насколько вы знакомы с MIDI, но на базовом уровне есть сообщения включения / выключения заметок. Скорее всего, вас больше будут интересовать сообщения об изменении управления, которые управляют различными параметрами, такими как частота среза и резонанс. Чтобы отправить MIDI с C #, снова у вас есть много вариантов. Пример Лесли Санфорда о Code Project достаточен, чтобы вы начали.

Наконец, если у вас есть вопросы по этому вопросу, вам лучше задавать отдельные вопросы отдельно. Переполнение стека действительно не место для «Я хочу сделать этот большой проект, скажите мне, как сделать все это сразу».

1 голос
/ 15 октября 2013

Хорошо, я готов ответить на ваш вопрос.Я сейчас разрабатываю видеоигру на 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

и вам нужно зайти на этот сайтэто тоже поможет, но пока не обновлено, хотя новая обновленная версия будет более полезной, поставляется с надписью «Прочитайте меня», и все

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

0 голосов
/ 28 мая 2013

Android API предоставляет структуру данных, которая сделает вашу жизнь намного проще (без необходимости интеграции с библиотекой FFT или не дай бог написать свою собственную).

В частности, MSG_EEG_POWER.

Из документа SDK: «Восемь мощностей ЭЭГ: дельта (0,5-2,75 Гц), тета (3,5-6,75 Гц), низкая альфа (7,5-9,25 Гц), высокая альфа (10 - 11,75 Гц), низкая бета (13 - 16,75) Гц), высокая бета (18 - 29,75 Гц), низкая гамма (31 - 39,75 Гц) и средняя гамма (41 - 49,75 Гц). "

Затем вы можете кормить их тем, что делает Брэд. Возможно, вы сможете поговорить с парнями из Neurosky, чтобы узнать, могут ли они дать вам API для C #.

...