Смешайте несколько звуков во вспышке - PullRequest
2 голосов
/ 10 августа 2009

У меня есть несколько звуковых объектов во флэш-памяти, я хотел бы смешать разные точки в этих звуковых файлах, чтобы создать один шедевр и сохранить его в формате mp3. Я видел различные «микшерные» приложения онлайн и хотел бы знать, на какую область (и) смотреть, чтобы иметь возможность сделать это самому.

Ответы [ 3 ]

1 голос
/ 13 августа 2009

Чтобы создать музыку или что-то, что вы пытаетесь создать, вам нужно будет импортировать ваши файлы wav и mp3 в вашу библиотеку и перетащить их в область фильма, чтобы добавить их на вашу временную шкалу. Используйте несколько слоев, чтобы помочь организовать их. Чтобы проверить свою песню, вы можете нажать Enter, чтобы перейти от любого кадра вперед до конца.

Не забывайте, что у вас есть несколько эффектов, которые вы можете применить, если у вас есть звук, выбранный на вашей временной шкале. Кроме того, на панели «Свойства» (внизу по умолчанию) есть кнопка «Изменить», которую можно использовать для обрезки аудиоклипов до требуемых значений.

Как только вы закончите, вам нужно будет опубликовать ваш флэш-фильм на SWF. Тогда вам нужно будет использовать конвертер SWF в Mp3, как этот:

http://3d2f.com/programs/25-187-swf-to-mp3-converter-download.shtml

(я не ручаюсь за это программное обеспечение, это всего лишь пример)

Если вы попытаетесь сделать все это из кода, с помощью ActionScript 2.0 у вас будет трудный путь вперед.

По сути, вам нужно создать массив из урезанных звуковых байтов, которые вы загрузили в свой фильм. Затем в onEnterFrame вам придется вызывать их в подходящее время:

(я вообще не тестировал этот код, просто чтобы дать вам основную идею, смеется)

var sounds = new Array();
var s0 = new Sound(this);
s0.attachSound("someLinkedSound0");
sounds.push({sound : s0, frame : 100});
var s1 = new Sound(this);
s1.attachSound("someLinkedSound1");
sounds.push({sound : s1, frame : 200});
var s2 = new Sound(this);
s2.attachSound("someLinkedSound2");
sounds.push({sound : s2, frame : 300});
var currentSound = 0;

this.onEnterFrame = function(e) {
    if(currentSound < sounds.length && sounds[currentSound].frame == _root.currentFrame) {
        sounds[currentSound].start(0,1);
        currentSound++;
    }
    frame++;
}

В моем примере используются звуки, которые импортированы в вашу библиотеку и «связаны», но вы можете загрузить звуки через URL с небольшими изменениями.

Вы также можете выполнить нечто подобное с методом, вызываемым из setInterval, если из-за структуры вашего приложения onEnterFrame не вызывается. Надеюсь, это поможет.

1 голос
/ 14 августа 2009

Для микширования звуков в ActionScript 2 посмотрите по этой ссылке . Это сложное объяснение того, как добиться микширования звука с AS2. Далее вам нужно проверить эту ссылку , чтобы получить больше информации по теме.

Сохранение смешанной версии вашего звука в формате MP3 не будет возможно напрямую из AS2. Вам придется прибегнуть к некоторому сложному серверному сценарию, который знает, когда смешанные звуки запускаются и останавливаются, и с этой информацией может генерировать MP3 на сервере. Хитро, но не невозможно.

Или вы можете просто переключиться на AS3, где вы можете создать звук во время выполнения (прокрутите весь путь вниз для примера) и сохранить результат как поток байтов.

0 голосов
/ 13 августа 2009

Прочитайте немного о flash SoundChannel , Sound и SoundTransform class. Все, что вам нужно сделать, это загрузить свои разные звуки (у вас есть примеры того, как это сделать во флэш-документах, которые я связал) и воспроизводить звуки в соответствии с вашей временной шкалой. Каждый звук может быть воспроизведен на другом канале, и тем самым вы можете «микшировать» их. Поддерживайте множество каналов и делайте с ними все, что хотите, в любое время.

Спасти их - еще немного работы, но не невозможно. Здесь вы можете найти другой пример, который сохраняет mp3 в файл SWF. Другие методы, которые я не могу сказать, я знаю, но из того, что я видел, вы можете использовать Alchemy и скомпилировать LAME MP3 Encoder в качестве флэш-библиотеки. Вам также понадобится немного бэкэнда, потому что вы не можете загружать файлы, используя flash. Вы должны отправить их на сервер, после чего сервер должен инициализировать загрузку.

...