Динамическое создание звука Actionscript 3
-
11-09-2019 - |
Вопрос
Я собираюсь создать лабораторное приложение по теории музыки, где вы сможете увидеть графическую связь между концепциями теории музыки.Я хотел бы, чтобы это было доступно в Интернете, поэтому на ум приходят Flash и Silverlight.
Но я хотел бы динамически генерировать тона, аккорды и т. д. на основе пользовательского ввода.Я знаю, что это очень слаборазвитая область Flash Player.Итак, мой вопрос: каково текущее состояние функций динамической генерации звука в проигрывателях Flash и Silverlight?
Решение 4
Таким образом, кажется, что из Silverlight и Flash Flash превосходит Silverlight по функциям динамической генерации звука (что меня удивило, учитывая, насколько базовая поддержка звука реализована во Flash).Кажется, Silverlight вообще не может генерировать динамический звук, а Flash официально может это делать только начиная с версии 10 плеера.
Я могу найти очень мало информации о будущем динамического звука на обеих платформах, но на данный момент самые активные дискуссии ведутся по Flash.
Другие советы
Начиная с Flash Player 10 и далее, вам не нужно делать никаких хакерских действий.Существует API для динамической генерации звука.
Этот сообщение в блоге имеет краткое введение.Его код читает семплы из mp3-файла, но вы можете записывать семплы так, как захотите.
Как всегда документы также есть много информации, а также этот пример кода, который поможет вам довольно быстро приступить к делу.
var mySound:Sound = new Sound();
function sineWaveGenerator(event:SampleDataEvent):void {
for ( var c:int=0; c<8192; c++ ) {
event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25);
event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25);
}
}
mySound.addEventListener(SampleDataEvent.SAMPLE_DATA,sineWaveGenerator);
mySound.play();
Вы можете попробовать Набор инструментов Synthesis ToolKit в AS3 который портирован мной с C++ :)
Это отличается от стоячая волна и Попфордж, STK в AS3 предоставляет вам возможность использовать реальные инструменты, такие как флейта и кларнет, чего нет в первых двух.
Есть способы сделать это, требующие изрядного взлома.Я не помню точную механику, но вы можете посмотреть (или использовать) существующие библиотеки потоковой передачи, такие как StandingWave:http://code.google.com/p/стоящая волна/или вещи в Попфорже:http://code.google.com/p/popforge/
Надеюсь, он может дать больше информации, чем я могу прямо здесь.:)