Один не, таким образом, известная функция PHP extract()
, функция, которая распаковывает ассоциативный массив в локальное пространство имен. Это, вероятно, существует для автоглобального abormination, но очень полезно для шаблонной обработки:
function render_template($template_name, $context, $as_string=false)
{
extract($context);
if ($as_string)
ob_start();
include TEMPLATE_DIR . '/' . $template_name;
if ($as_string)
return ob_get_clean();
}
Теперь можно использовать render_template('index.html', array('foo' => 'bar'))
, и [только 113] со значением "bar"
появляются в шаблоне.
Лучшим языком, скорее всего, будет тот, который вы знаете лучше всего, если это хороший многоцелевой язык, обеспечивающий легкий доступ к аудиоустройству (микрофон / динамик). Visual Basic, C #, C ++, Java - все это быстро и легко писать, и они предоставляют вам отличный доступ к оборудованию и т. Д.
Но в конечном итоге обработка звука очень проста, а API записи / воспроизведения очень распространены, поэтому лучший язык вероятно, вы чувствуете себя наиболее уверенно в использовании. Вы всегда можете начать с простого эксперимента (записать и воспроизвести аудио) - если вас устраивает то, как это происходит, то его обработка звука будет практически одинаковой на любом языке.
Я бы предложил Java.
У него есть собственный API для обработки звука, и его довольно легко изучить.
http://java.sun.com/products/java-media/sound/
«Tux Guitar» (открытый исходный код) написан на Java и демонстрирует, что возможно:
Я использую Delphi. Он сочетает в себе все вышеперечисленные функции, скомпилирован, имеет мощную библиотеку обработки звука (BASS) и обладает прекрасными возможностями пользовательского интерфейса. С его помощью я написал микшер, проигрыватель командной строки, анализатор спектра, поисковик звука и тишины и компаратор музыки.
Не похоже, что вам нужно кодировать сложные эффекты и функции цифровой обработки звука ... Так что вам не нужны языки низкого уровня, такие как C ++. Я думаю, вам следует сосредоточиться на пользовательском интерфейсе и удобстве использования. Я вижу, что предлагали Java. Даже если Java проста в использовании, программирование пользовательского интерфейса Java на самом деле не очень практично. Я бы предпочел использовать язык очень высокого уровня, такой как Python, C # или Java, и использовать более практичный инструментарий. Например, вы можете использовать WPF или Winforms с C #. Или Qt или Gtk для Python (есть даже привязки к Java ... но я не уверен в их состоянии). В любом случае используйте что-то, что позволяет вам легко кодировать, чтобы вы могли сосредоточиться на удобстве использования и прочем.
Я предполагаю, что вы пытаетесь сделать это в реальном времени или почти в реальном времени? В этом случае вы определенно смотрите на компилируемые языки, а не на интерпретируемые языки сценариев, поскольку математика, необходимая для такого рода анализа, скорее всего, потребует слишком большой вычислительной мощности на интерпретируемом языке.
Большая часть программного обеспечения, имеющего дело с такого рода сигналами. обработка, как правило, написана на довольно низкоуровневых языках, таких как C. Вы можете даже обнаружить, что есть библиотеки, доступные для такого рода обработки для вашей конкретной платформы. Это, безусловно, то место, где я бы начал искать в первую очередь, если вы не хотите реализовать эти алгоритмы из интеллектуального любопытства. В зависимости от того, какие библиотеки вы найдете, вы можете найти язык программирования, который сможет их использовать,
Используйте язык , специализированный для компьютерной музыки и dsp , иначе вам придется изобретать велосипед заново.