В NumPy нет такой функции поиска, но в NumPy
это возможно сделать. Пока массивы не будут слишком массивными *, вы можете использовать подход к качению:
from skimage.util import view_as_windows
windows = view_as_windows(field_array, match_array.shape)
Функция view_as_windows
записывается чисто в NumPy, поэтому, если вы не имеете skimage, вы всегда можете скопировать код из здесь .
Затем, чтобы увидеть, появляется ли подматрица в более крупном массиве, вы можете написать:
>>> (windows == match_array).all(axis=(2,3)).any()
True
Найти индексы, в которых верхний левый угол подматрицы совпадений, вы можете написать:
>>> (windows == match_array).all(axis=(2,3)).nonzero()
(array([6]), array([3]))
Этот подход также должен работать для массивов более высоких измерений.
*, хотя массив windows
не занимает дополнительной памяти ( только изменения шага и формы изменяются для создания нового представления данных), запись windows == match_array
создает логический массив размера (7, 6, 3, 4), который составляет 504 байта памяти. Если вы работаете с очень большими массивами, этот подход может оказаться невозможным.
Если Вы рады использовать Java, проверьте JFugue.
См. Высокоуровневые языки для Компьютерной Музыки и Языки программирования, используемые для музыки для справки.
Я не уверен, покрывает ли это то, что Вы после для, но взглянули на API Звука Java. Для FAQ о том, что это может сделать, см. здесь . Преимущества, это уже связывается в SDK и JRE, и это является кросс-платформенным. Кроме того, Вы могли создать GUI с помощью любого инструментария Java.
Если бы не интерактивные биты, я бы посоветовал взглянуть на Хаскора или Найквиста , которые фактически являются DSL для генерации музыки.
Определенно взгляните на демо Алекса Маклина . Он более гибок и интерактивен, чем вы можете себе представить, используя SuperCollider - OpenSoundControl .
Для музыкального взаимодействия лучше всего подходят PureData, Max / MSP и OpenMusic (эти два последних из IRCAM). PureData является бесплатной. Гугл их!
Я действительно не получаю то, что Вы хотите сделать, но вот список некоторого музыкального программного обеспечения CL, и для состава и для познания: http://www.cliki.net/Music
Вы ищете Язык программирования аудио . Другой вариант, который вы должны рассмотреть, - Обработка - используется многими художниками и музыкантами для этого типа работы.
-Adam
Взгляните на Strasheela:
Это - система состава на основе языка программирования Oz. Учащийся Oz не легок, как он он комбинирует функциональное и парадигму логического программирования. Однако, если Вам понравилась книга SICP, затем Вам, вероятно, понравится она также.
Strasheela рассматривает музыкальный состав как Ограничение проблему Statisfaction (CSP) и ищет "решения" для него. Это означает, что музыкальный стиль определяется как математические ограничения на целые числа (конечная область), которая должна быть statisfied, и встроенная ограничительная система решения вычисляет решения "автоматически".
P.S.: Я не могу программировать в Oz, но я на пути изучения его.
Ответ для .NET:
Я нашел кое-что, проверьте NAudio от Mark Heath, отличная музыкальная библиотека .NET Я бы сказал, что она должна содержаться в BCL.
midi-dot-net - еще один замечательный C#-проект Тома Локовича.