Принцип действия долго объяснять не буду - сам пока некоторые моменты не продумал. Но выглядеть это будет примерно так:

Звук с микрофона попадает в первый клеточный автомат (CA), который делает первичную обработку звукового сигнала (подавляет шум) . Дальше попадает в первую нейронную сеть с рандомными коэффициентами связей. И на выходе часть этой какофонии отправляет в следующую нейронную сеть, без коэффициентов (в общем-то первая NN нам нужна только для того, чтобы связать два клеточных автомата. Основа и обучение нашей программы будут заключаться в следующих NN) и часть попадает на выходной клеточный автомат, который тоже подавляет шум и отправляет звук на колонки.
Но суть не в этом. Все мое написание программы застопорилось на микрофоне. Звук с микрофона надо расшифровать и записать в матрицу клеточного автомата. Принцип действия следующий:

Звук с микрофона разбивается на определенные интервалы (скажем, 1 секунда) . И дальше на каждом интервале нам надо получить весь диапазон частот и записать в массив m(t,f), где t - интервал, f - частота (это число округлять придется, чтобы не было дробных индексов массива) а в m(t,f) хранится интенсивность (громкость) определенной частоты.
Такой тип записи звукового сигнала существует и используется некоторыми группами в своих композициях (например Apex Twin). Называется "Спектрография звука".
Aaron Funk - Songs About My Cats

Ну вобщем суть понятна, я надеюсь. Мне надо сделать простейший звуковой спектрограф.
Да, и к вопросу, почему я использую микрофон а не wav-файл. На самом деле написание программы для создания музыки - это не конечная моя цель. В дальнейшем хочу перепрограммировать свою нейронную сеть не для работы с музыкой, а для работы с немножко другим типом данных. Поэтому расшифровка сигнала с микрофона а не с файла - для меня актуальная задача.
Что касается файла и микрофона, то у меня вообще нет никакого понимания сути процесса. Раньше я звук никогда не программировал.
БПФ - это Фурье?