Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > noName

Оценить эту запись

ToneGenerator

Запись от silin размещена 31.03.2011 в 17:38
Обновил(-а) silin 04.04.2011 в 00:17

Ну генератор и генератор, штука-то не хитрая: в SAMPLE_DATA Sound'а пишем синусоиду нужной частоты - играет тон..
Речь не совсем об этом: хотелось утилиту, чтоб не только включить/выключить тон, но и составить какие-то комбинации звуков, иными словами, чтоб не только пискнуть, но и хрюкнуть, если надо.

В результате нарисовался утилитный класс с методами бипа, паузы, громкости. Каждый из методов возвращает экземпляр Sound'а, в котором-то эти методы и реализованы. Фишка в том, что саунд этот не бросается их сразу выполнять, а складывает задания в очередь и сделает только когда наступит черед. В итоге, чтобы получить комбинацию звуков, просто "нанизываем" цепочку вызовов на экземпляр. Например, new Beeper().beep().pause(0.3).beep(0.2, 2000).play(); проиграет дефолтный бип и через 0,3 сек. бип с заданной частотой/длительностью.

Надо-не надо, но до кучи прикрутил проигрывание последовательности из строки (в стиле "C:0.2,D:0.2,E:0.2") и из массива частот, благо в такой схеме это не вопрос ни разу. Строки с цифрами ("300:0.5,400:0.2") и строки без указания длительности ("C,D,600,F") тоже проходят.

Практическая ценность этой шняги, понятное дело, не велика, но схема с созданием цепочек мне показалась достаточно интересной, чтобы написать сюда. Сама схема навеяна твинером от Philippe, там твины также нанизываются друг на друга - очень удобно. К слову, FD для такого расклада и автокомплит поддерживает.

демка, дока
UPD: небольшой рефакторинг (класс-обертка со статическими методами создания саундов явно лишний)
Всего комментариев 11

Комментарии

Старый 31.03.2011 18:20 iNils вне форума
iNils
 
Аватар для iNils
Красота. Хотелось бы еще влиять на тональность звука.
Старый 31.03.2011 18:22 dimarik вне форума
dimarik
 
Аватар для dimarik
Круть! А сделаешь такую? Я от этой штуки без ума.
Старый 31.03.2011 18:37 iNils вне форума
iNils
 
Аватар для iNils
Оффтоп. Просматривая исходник, меня очень смутило такое оформление комментарев:
Код AS3:
}else//если в очереди пусто, то сворачиваем лавочку
{
При автоформатировании, когда {} пишутся на одной строке, такой код станет невалидным.
Старый 31.03.2011 19:21 silin вне форума
silin
 
Аватар для silin
>>А сделаешь такую?
замечательная штука, вот тока стоит ли убиваться мастерить такое во флеше
или дешевле нагенерить (да хоть и ей же) чего надо

>>При автоформатировании, когда {} пишутся на одной строке, такой код станет невалидным.
ок, учту
Старый 31.03.2011 20:43 dimarik вне форума
dimarik
 
Аватар для dimarik
Дешевле, конечно! Путем увеличения трафика пользователя. Было бы прекрасно, если бы сам класс мог такое программно вытворять.

У меня даже навернулась ностальгическая слеза. В MSX BASIC примерно так же можно было составлять несложные мелодии.
Старый 31.03.2011 21:00 iNils вне форума
iNils
 
Аватар для iNils
dimarik, напиши )
Старый 31.03.2011 22:12 Котяра вне форума
Котяра
 
Аватар для Котяра
Клёво - практическое использование fluent interface )
Старый 31.03.2011 23:05 dimarik вне форума
dimarik
 
Аватар для dimarik
iNils, если только в TODO список добавить. Но там уже и так много еще не реализованных идей.
Старый 01.04.2011 09:28 alexcon314 вне форума
alexcon314
Старый 01.04.2011 14:35 silin вне форума
silin
 
Аватар для silin
>>А сделаешь такую?

видимо сделаю, когда нибудь :)
есть такое: http://silin.su/#AS3/audio/synth/bin
Обновил(-а) silin 06.04.2011 в 00:18
Старый 02.04.2011 12:41 Котяра вне форума
Котяра
 
Аватар для Котяра
AudioTool - круть вообще. Практически Propellerhead Reason. Звук конечно не айс, но для набросков - хорошая вещь.
 
Последние записи от silin

 


Часовой пояс GMT +4, время: 11:07.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.