Просмотр полной версии : Простейший визуализатор
deepNoise
29.05.2018, 15:29
В AS3 совсем не разбираюсь.
Подскажите пример скрипта, чтобы менял значение чего либо в зависимости от громкости звука.
Например: Есть клип clip и в нём 5 кадров. Как сделать, чтобы эти кадры менялись в зависимости от громкости звука по возрастанию?
Ещё интересует возможно ли сделать визуализатор не для конкретного файла, а для всех звуков системы вообще? То есть если, например, я включу плеер, то он бы на него реагировал.
Пример визуализатора
https://code.tutsplus.com/articles/render-an-mp3-audio-spectrum-in-flash-with-computespectrum--active-10808
deepNoise
30.05.2018, 13:12
А как создавать классы? Я застрял на четвёртом пункте, где нужно создать пример класса SoundChannel. Вот только я не умею их создавать. Пробовал создать в той же директории SoundChannel.as, не работает, пробовал скопировать скрипт в Main.as, тоже не работает. Пробовал создать новый слой и вписать скрипт в пустой кадр, то же самое . Так как нужно?
undefined
30.05.2018, 18:32
класс SoundChannel создавать не надо, он идет из коробки.Вот этой строкой ты говоришь что надо его включить в проект:
import flash.media.SoundChannel;
В этом примере все делается внутри единственного класса Main, его и надо создавать самому.
deepNoise
30.05.2018, 22:16
Сложно разобраться, когда не понимаешь лингвистики и вообще принципа работы скрипта. Я раньше с AS2 немного работал, так тут всё совсем другое. Что то понимаю, что то нет.
В общем если проще, у меня есть скрипт:
var myMic:Microphone = Microphone.getMicrophone();
Security.showSettings(SecurityPanel.MICROPHONE);
myMic.setLoopBack(true);
myMic.setUseEchoSuppression(false);
stage.addEventListener(Event.ENTER_FRAME, stage_EnterFrame);
function stage_EnterFrame(e:Event)
{
var num:Number = myMic.activityLevel * 4;
trace(num);
if(num <= 10){
voice.gotoAndStop(1);
}else if(num <= 20){
voice.gotoAndStop(2);
}else if(num <= 30){
voice.gotoAndStop(3);
}else if(num <= 40){
voice.gotoAndStop(4);
}
} Здесь в зависимости от значения переменной n, которая определяет уровень звука в микрофоне, переходит на определённый кадр клипа.
А как сделать, чтобы эта переменная n определяла уровень звука в самой системе? Имею ввиду не из определённого звукового файла, а в самом Windows.
undefined
30.05.2018, 23:25
Тут все просто. Средствами ас3 никак
deepNoise
31.05.2018, 00:09
Ага, можно тогда просто микрофон к колонкам приставить у будет работать)
А как тогда сделать то же самое с внешним звуковым файлом? Как получить переменную для уровня звука?
Я так понял нужно класс Sound и SoundChannel импортировать, но вот что дальше. Наверно должно быть какое то свойство, которое можно перевести в переменную.
Вот пример загрузки внешнего звукового файла
http://blog.gskinner.com/archives/2009/07/source_code_spe.html
deepNoise
31.05.2018, 03:00
Я порылся в интернете и оказывается, что захват звука из системы возможен. Поищите в поисковике программку chaosvision. Создатель пишет, что он сделал её как раз средствами AS3. И я её попробовал, действительно работает, графика реагирует на звук моего плеера. Только нужно стерео микшер включить.
undefined
31.05.2018, 21:41
Товарищ,ответ на вопрос нужен прежде всего тебе.Никто ради тебя ничего искать не будет.Ссылка в сообщение вставляется через кнопку "вставить ссылку"
По делу: флэш имеет доступ только к звукам,играющим в пределах данной флэшки,иначе можно было бы легко тырить лицензионное аудио.Твоя програмка скорее всего использует какой-то внешний модуль,который подключается к флэшке и передает ей системные звуки.У чистого флэша таких прав нет.
deepNoise
01.06.2018, 01:52
http://chaosvision.ru
undefined
01.06.2018, 02:54
каналы с 3 по 14 - это основной контейнер объектов, к которому применима дополнительная анимация, он приспособлен для взаимодействия с ChaosVision API на языке AS3
Т.е. флэш там чисто для визуализации того,что ему передают извне. Со звуком он никак не работает.
deepNoise
01.06.2018, 12:06
Т.е. флэш там чисто для визуализации того,что ему передают извне. Со звуком он никак не работает. Ничего не понял) "Передают извне", это имеется ввиду, что нужно указать звуковой файл, чтобы работало? Или что?
Со звуком программа как раз работает. Нужно просто всё сделать по инструкции на сайте. Если стерео микшера нет, то нужно предварительно установить драйвер Realtek Audio. И нужно, чтобы колонки или наушники были аналоговые, а не usb. Включаю программу, потом включаю свой WinAmp, и анимация прыгает в такт музыки.
Ещё бы понять как это делается. Возможно при включенном стерео микшере в AS3 просто нужно использовать Microphone. Правда я так попробовал и меня выдало оглушающий звук)
undefined
01.06.2018, 14:13
это значит что ответ на вопрос
А как сделать, чтобы эта переменная n определяла уровень звука в самой системе?
Написать внешний модуль(не AS3),который будет брать системные звуки и транслировать их флэшке.Как автор собственно и поступил.
Скорее всего undefined имеет ввиду ANE. Adobe Air умеет использовать расширения, которые написаны на других языках и могут иметь доступ более серьёзный доступ к операционной системе, чем представлен из коробки.
https://habr.com/post/176767/
deepNoise
01.06.2018, 21:08
Кажется это слишком сложно для меня. В статье указано куча сторонних приложений, которые я не знаю, и много непонятных слов, типа "нативного кода") Я ж только начал использовать AS3. Видно не судьба)
Проще просто какому нибудь программеру заказать.
Возможно. На самом деле ANE пишется довольно просто. Например, нам необходимы функции, которые имеют доступ к WindowAPI и считывают выходящий звуковой поток. Я не утверждаю, что это именно так, но примерно. Находим библиотечку java в которой это всё прописано. Пишем один класс-интерфейс для того, чтобы работать с Air. Упаковываем как ANE и можем использовать это в любом Air-проекте.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.