Пособие по генерации звуков с помощью sfxr
Авторское предисловие
В отличие от проблем с терминологией, слабое владение компьютером может стать серьёзной проблемой на пути овладения sfxr. Если пользователь не в курсе, куда и как сохранять файлы, пользователь может их потом не найти. Однако, эта проблема уже не касается sfxr как такового (пропуская мимо внимания тот факт, что не владеющий компьютером разработчик видеоигр это редкость), и поэтому освещена в пособии не будет.
4 мая 2013, Xitilon.HD408
Собственно о программе
1. Немного истории
Исходя из ридми-файла при программе, sfxr - генератор звуковых эффектов, созданный разработчиком под ником DrPetter в декабре 2007 года. Создан этот генератор был специально для LD48#10 — довольно широко известного в наше время собрания независимых разработчиков видеоигр. Основное его назначение — позволить разработчику игры быстро получать звуки, необходимые для игры, в то время как традиционный Ludum Dare длится всего лишь 48 часов (отчего и называется LD48), и подразумевает работу в одиночку над всеми аспектами видеоигры — графика, музыка, озвучка, сюжет, движок, и что бы то ни было.
http://www.superflashbros.net/as3sfxr/ — а вот ещё портированная на Adobe Flash версия.
2. Базовое использование
Запускаем программу, нажимаем одну из кнопок по левому краю окна программы, чтобы получить звук, соответствующий указанному пресету (встроенному набору параметров). Пресеты означают следующее:
PICKUP/COIN - поднятие предмета / монета
LASER/SHOOT - лазер / выстрел
EXPLOSION - взрыв
POWERUP - усиление (бонус)
HIT/HURT - удар / повреждение (тела)
JUMP - прыжок
BLIP/SELECT - пик / выбор (звуковые эффекты интерфейса)
Если звук устраивает, сохраняем его в файл кнопкой "EXPORT .WAV". Кнопками ниже неё можно изменить качество звука*, а громкость можно отрегулировать через "VOLUME" выше.
"PLAY SOUND" проигрывает звук. Также для этого служит пробел на клавиатуре — довольно удобно.
"SAVE SOUND" и "LOAD SOUND" позволяют сохранить текущие параметры генерации звука в файл, и загрузить их из файла соответственно. Это нужно для того, чтобы можно было возвращаться к найденному звучанию и поправлять уже подошедшие, но ещё "какие-то немного не такие" звуки, либо делать их вариации для нового использования.
* Грубо говоря, чем больше цифры — тем лучше, но это не значит что звук становится хорошим только от того что там установлены максимальные доступные настройки — 44100 Гц и 16 бит, да и на самом деле слуховая разница между худшими и лучшими доступными настройками в sfxr не очень велика. Так как экономии дискового пространства от низких настроек довольно мало, смысла менять максимальные настройки на что-то другое практически нет, разве что на выходе нужна заранее известная битность или частота дискретизации. Эта настройка была бы чрезвычайно уместна в 90-е годы, но едва ли — на сегодняшний день.
3. Продвинутое использование
Если не устраивает ни один звук из сгенерированных по пресетам в левой верхней части окна, есть смысл попробовать нижние кнопки по левому краю окна - сначала "RANDOMIZE", а потом "MUTATE" до тех пор, пока не выходит что-нибудь более интересное, либо снова "RANDOMIZE".
Мутация меняет настройки генерации несильно, хоть и все одновременно. Чаще всего одной мутации не хватает, и есть смысл попробовать разные осцилляторы, переключать которые можно наверху, кнопками "SQUAREWAVE", "SAWTOOTH", "SINEWAVE" и "NOISE".
Точные формы осцилляторов автор не указал, но из результатов их использования всё понятно на слух — "SQUAREWAVE" это "квадратная" (на самом деле — прямоугольная) волна, "SAWTOOTH" — более резкая пилообразная волна, "SINEWAVE" это самая мягкая — синусоидальная, и "NOISE" — это шум, который на высокой частоте является белым, но при понижении её превращается в красный (коричневый).
Что заслуживает отдельного упоминания — волна "SQUAREWAVE" может иметь различную скважность и её изменение во времени, регулируемые через параметры "SQUARE DUTY" и "DUTY SWEEP" соответственно.
4. Экспертное использование
Для того, чтобы использовать возможности sfxr на полную, необходимо понять смысл каждого параметра, доступного для настройки в генераторе.
Левой кнопкой мыши можно тянуть слайдеры параметров налево и направо, а правой - устанавливать значение по умолчанию. Для двусторонних слайдеров это посередине, для односторонних - слева.
"SQUARE DUTY" и "DUTY SWEEP" уже были упомянуты выше, остальные параметры соответствуют следующему:
ATTACK TIME - время, за которое звук из тишины переходит в полную громкость.
SUSTAIN TIME - время, которое звук держится на полной громкости.
SUSTAIN PUNCH - величина рывка громкости вверх при переходе из ATTACK SUSTAIN, то есть при начале звучания в полной громкости будет слышен рывок громкости ещё немного выше. Если SUSTAIN TIME нулевой, то SUSTAIN PUNCH не слышен вовсе.
DECAY TIME - время, за которое звук из полной громкости уходит в тишину. В алгоритмах звукового синтеза (я имею в виду ADSR-огибающую) этот параметр соответствует "Release".
START FREQUENCY - начальная частота осциллятора.
MIN FREQUENCY - минимальная частота осциллятора. Если частота становится ниже этого порога, звучание прекращается.
SLIDE - скорость изменения частоты осциллятора (вниз или вверх) во времени.
DELTA SLIDE - скорость изменения SLIDE. Позволяет создавать более разнообразные изменения частот, например при положительном SLIDE и отрицательном DELTA SLIDE частота сначала пойдёт наверх под действием SLIDE, но потом DELTA SLIDE пересилит его, и частота упадёт обратно. Аналогично можно сначала частоту снизить, а потом поднять.
VIBRATO DEPTH - глубина вибрато, то есть синусоидального колебания частоты вверх-вниз от текущей, оно же — модуляция синусоидой.
VIBRATO SPEED - скорость вибрато. Непонятно, как именно автор масштабировал этот параметр — по моим замерам вышло, что максимум шкалы приблизительно соответствует 600 Гц, 1/2 — 80 Гц, 1/4 — 4.5 Гц, 1/8 - 1 Гц. При нулевом параметре, естественно, модуляции не происходит вовсе.
CHANGE AMOUNT - резкое и быстрое изменение частоты спустя некоторое время после начала звука.
CHANGE SPEED* - скорость наступления этого изменения частоты.
REPEAT SPEED - скорость повтора инициализации генератора. В sfxr это один из важнейших параметров, кардинально влияющий на звучание. Чем он выше, тем с большей скоростью повторяется возвращение параметров частоты и скважности квадратной волны (SQUARE DUTY) на исходные, в процессе генерации одного и того же звука. CHANGE AMOUNT, судя по всему, тоже возвращается и применяется заново, хотя в инструкции автора этого не указано. Чем выше REPEAT SPEED, тем ближе частота итогового звука к START FREQUENCY, в какую бы сторону её ни пытались менять SLIDE и прочие параметры. Однако, параметр LP FILTER CUTOFF остаётся при повторе неизменным, и может отрезать важную часть звука раньше, чем REPEAT SPEED вступит в действие в полной мере. 1/8 шкалы соответствует 3 Гц (3 повторам в секунду), 1/4 — 2Гц, 1/2 — 8Гц, полная шкала соответствует примерно 120Гц.
PHASER OFFSET - смещение во времени копии генерируемого звука, которая микшируется поверх первично сгенерированного звука. По сути — примитивный фланжер без цикла (то есть, смещение фазы прошло до конца, и обратно не возвращается), хотя автор почему-то пишет про реверберацию.
PHASER SWEEP - влияет на изменение смещения фазера, как SLIDE для START FREQUENCY.
LP FILTER CUTOFF - частота среза фильтра низких частот. Фильтр отсекает все частоты выше заданной, то есть чтобы его проигнорировать, его нужно установить в максимум вправо.
LP FILTER CUTOFF SWEEP - изменение частоты среза для фильтра низких частот. Имеет такое же значение как SLIDE для START FREQUENCY.
LP FILTER RESONANCE - величина резонанса фильтра низких частот. Оставляет от отсечённых частот послезвучие, затухающее через некоторое время. Чем выше резонанс, тем дольше послезвучие.
HP FILTER CUTOFF - частота среза фильтра высоких частот. Аналогично LP FILTER CUTOFF, но отсекает частоты ниже заданной. Чтобы не использовать, установить влево.
HP FILTER CUTOFF SWEEP - также аналогично LP FILTER CUTOFF SWEEP, но для HP FILTER CUTOFF.
* В последней на данный момент версии программы (хотя я не в курсе, было ли их несколько) есть баг — при максимальной CHANGE SPEED звук должен сразу быть с изменённой (уже переключенной) частотой, а вместо этого не меняет частоту вовсе. Впрочем, если чуть-чуть отодвинуть параметр влево от края, результат неотличим на слух от того, что должно было быть.
5. Типичная проблема: звука нет, или он звучит очень слабо.
Сгенерированный звук может "не звучать" по одной из нескольких причин:
а) VOLUME на нуле — очевидно, почему. Звук, умноженный на ноль, каким бы он ни был, звучать не будет.
б) ATTACK TIME, SUSTAIN TIME и DECAY TIME очень малые — звук просто не успевает зазвучать до того как его время заканчивается.
в) START FREQUENCY очень мал, а SLIDE и DELTA SLIDE не поднимают частоту (отрицательны, задвинуты влево от центра) — звук есть, но частота слишком низка для человеческого слуха.
г) MIN FREQUENCY больше чем START FREQUENCY — по принципу работы sfxr, генерация всегда прерывается после того как текущая частота становится меньше минимальной, то есть в этой ситуации — сразу же после начала звука. Эти два параметра желательно ставить подальше друг от друга, если SLIDE, DELTA SLIDE или CHANGE AMOUNT отрицательны.
д) SLIDE или DELTA SLIDE отодвинут в самое левое положение — частота падает слишком быстро, чтобы звук успел прозвучать.
е) LP FILTER CUTOFF на нуле — фильтр нижних частот сразу же блокирует все частоты, и звук исчезает.
ё) LP FILTER CUTOFF SWEEP полностью отрицателен — этот параметр уменьшает LP FILTER CUTOFF, и происходит то же самое что и в пункте е).
Если звук не отсутствует вовсе, а хоть какой-то да слышен, то, прежде чем проверять каждую из этих причин, могу посоветовать увеличить REPEAT SPEED — иногда таким образом интересный звук всё же можно получить. Исключение составляют случаи, когда фильтр нижних частот сразу отрезает звук - тогда LP FILTER CUTOFF и LP FILTER CUTOFF SWEEP нужно увеличить.
6. Дополнительные возможности
Вполне реально использовать sfxr для генерации семплов для дальнейшего использования в трекерах, секвенсорах, и прочих программах для создания цифровой музыки. Для мелодических инструментов хорошо работают первые три осциллятора, тогда как шумовой может создавать вполне сносную олдскульную перкуссию.
Помимо записи звука в WAV-файл, можно писать звук вживую из приложения во время проигрывания звука в нём. Таким образом можно записать последовательность звуков, и для этого потребуется дополнительная программа записи и соответствующее перенаправление аудиоканалов.
- 04 мая 2013, 22:42
- 015
Jazz, мне кажется, эту статью стоит разместить в http://gamin.me/books/geimdev
Готово.
Очень полезная статья, спасибо!
Для характерного NES звучания использую famitracker.
FamiTracker — не генератор звуковых эффектов, хотя я его тоже использую иногда в таких целях. Однако, мне кажется, что настраивать его каждый раз на каждый эффект более проблематично, чем покрутить колонки в sfxr. Плюс, добавлять трек для каждого звука, а потом отрезать лишнюю тишину из семплов, либо нарезать один трек, либо выставлять минимальную длину паттерна у каждого трека под каждый звук, чтоб много не съедало. Хотя, можно и без этого идеализма. Но я считаю, что FamiTracker скорее на случай, когда нужна "аутентичность" конкретного звука.
В фами можно менять скважность во время звучания, можно применять всякие штучки типа арпеджио, совмещать square канал с noise и накладывать эхо. Взять, например, звуки из Darkwind Duck, такое просто невозможно накрутить на генераторе звуков.
sfxr хорош для быстрого изготовления временных звуков, ну и для конкурсов с не большими временными рамками, а для более широкого и богатого звучания нужно что-то другое.
Для проектов в Lo-Fi, или просто ретро-стиле, sfxr — выше крыши.
Это верно, но можно делать то же самое в любом другом трекере, отрендерив семплы из sfxr и выстроив их как тебе угодно во сколько угодно каналов. Ну, разве что нельзя будет поменять параметры инструмента прямо на ходу, так как это будут уже фиксированные семплы. В пункте 6 об этом было.
Вот бы ещё урок по музыкальной грамоте сделали, объяснили: Гармоники, Скважность и прочее. Вот урок бы ценный был )
Скважность касается звукового синтеза, или скорее даже теории цифровых сигналов. А вот в гармониках я, признаться, ничерта не понимаю, и как-то ничего. Когда звучит — то оно звучит, как я во втором абзаце и писал в этом пособии.
Так что запроса я не понял. Если интересно, как писать музыку, то это, пожалуй, не ко мне. Про звуковой синтез могу написать что-нибудь. Но это едва ли будет много кому интересно здесь.
Музыку можно и без нот писать, главное наличие вкуса и фантазии.
Хочется быть подкованным в теории)
Повторим вопрос по-новому — в теории чего? Как синтезировать отдельные инструменты или звуки (скважность относится сюда), или как музыкальную композицию строить (гармоники (по большей части))? Или речь о навыках типа "добавлять трек для каждого звука, а потом отрезать лишнюю тишину из семплов, либо нарезать один трек, либо выставлять минимальную длину паттерна у каждого трека под каждый звук"?
Скорее Второе: как строить музыкальную композицию. Но также и минимальный понятийный аппарат полезно здесь разобрать, чтобы самим понимать ожидания от звука\инструмента\мелодии. Как избегать элементарных ошибок при работе с цифровым звуком при создании игр
Явно не ко мне. Мику мог бы написать на эту тему, если бы не был столь ленив.
Ещё так-сяк.
"при создании игр" выглядит забавно. Работа со звуком довольно общая для игр, анимационных фильмов, всяких там видеороликов и прочего.
Хорошо, что-нибудь напишу через некоторое время. Скорее всего этим летом.
Тут настолько всё индивидуально, что явные указания дать оче сложно. К примеру я для себя эмпирическим методом выявил в этом плане несколько явных табу, однако не сомневаюсь, что многие пишут неплохую музыку их не соблюдая и даже не подозревая о таковых.
Предполагаю, что если я возьмусь писать статью о том, что в композиторстве можно делать, а чего нельзя, то непременно появятся весомые контр-аргументы, которые от моих построений камня на камне не оставят. И мне будет стыдно.
Думаю, тут по хорошему нужна не полноценная статья, а этакая копилка фактов и мнений.
Возможно, попозже попробую оформить что-нибудь из усвоенного во что-нибудь читаемое
Точно, думаю копилка знаний будет в самый раз в формате сайта) А музыкальную грамоту пойду искать на ресурсах целиком ей посвящённых.
Не в том смысле.
Шум этот был бы печален везде. Хотя убирается он выбором в меню пункта (или кнопки) "Noise reduction", как ни удивительно.
Честно, я не могу совсем точно перечислить чего мне не хватает в знаниях музыки, иначе я бы уже знал это.
Пожелание скорее такое: У меня нет музыкального образования, но что мне нужно знать чтобы продвинуть свой уровень в написании музыки до следующей ступени, чтобы не оказалось теоретических пробелов и можно было развиваться дальше?
Покажи свою текущую ступень написания музыки. А то я ж не знаю, что там за ступень.
(забавно, что мы это обсуждаем в комментариях к пособию по генерации звуковых эффектов)
В колледже прошёл курс мультимедийных технологий. Работа с цифровыми форматами и прочее. Как убрать шум, то я знаю, это был пример того что былобы полезно всем)
Личный опыт:
Пользуюсь FL Studio.
Делал каверы на любимые треки из NES и GENS. Натыкивал свои композиции. Они конечно не так хороши, вот тут чувствуется недостаток понимания
Ну, все же как-то начинают. По-моему, мне нечего тебе посоветовать, кроме как не забрасывать это дело.
Если с самого начала, то выучи построение базовых гамм (минор, мажор), интервалы и консонансы/диссонансы наверное.
Нахрен не нужно.Нет, лучше этот разговор вовсе не начинать.Хаха, ладно)
Почему же? Нелишним будет знать, например, что если хочешь нарулить откровенно китайских мелодий для всяких желтых колотушек типа Budokan или Yie Ar Kung Fu, но не знаешь как, то можно играть строго по чёрным клавишам; и что нажатие двух соседних клавиш одновременно даст стране говна в любом раскладе ;)
Если делать треки с хоррором — то нет. Но да, какие-то совсем базовые вещи надо бы знать. Только я знаю их не из какой-то теории диссонанса-консонанса, а просто из личного восприятия звучания.
безусловно, выдать говна может быть и музыкальной целью. я имею в виду говно не в плане качества результата а в плане ощущений.
не только хорроры. для босс-файтов или каких-то внезапных задач на скорость неприятнозвучащая музыка тоже может быть уместна чтобы хотелось побыстрее это прекратить.
а слова консонанс и диссонанс для объяснения ощущений личного восприятия звучания ничем не хуже любых других. всё лучше чем "вот тут неприятно как-то, хз как объяснить, ну ты понял", сопровождаемое жестикуляцией.
впрочем, если тебе оперирование этими терминами кажется излишним умничанием - можно консонансы называть няшечками, а диссонансы - печальками.
Посмеялся.
Мне кажется, что "консонанс" употребляют намного меньше, чем "диссонанс". Впрочем, я совершенно далёк от музыкальных кругов.
Тут не всё так просто. Голос (в отличие от синтов/инструментов) оче чувствителен к вырезаниям чего-либо из сигнала, будь то хоть срез шума по маске, хоть подавление фильтром частот, которые, казалось бы кроме мусора ничего и не содержат. Как правило, после шумочистки голос приобретает заметную неестественность, и чем заметней был шум до чистке, тем вырвиглазней будет звучать ваш голос после, поэтому в некоторых случаях я предпочёл бы оставить шум, нежели калечить сигнал...
Вообще лучше максимально отсечь шум ещё в звукозаписывающем тракте - достать вместо вебкамеры относительно нефонючий микрофон с экранированным кабелем, саундблястер отличный от этого вашего интегрированного AC'97/ Realtek HD Audio, и более-менее изолироваться от внешних звуков (записывайтесь в шкафу или под толстым одеялом).
Но поскольку мы тут все до одного независимые нищеброды а творить хочется - в основном приходится оставлять шум и делать вид что это концептуальный лоу-фай такой...
А ещё в каждом, наверное, городе есть своя репетиционная база для всяких музыкальных групп или даже несколько.
Приходишь, платишь денежку, в комфорте и с приличной аппаратурой пишешь голос.
В моём городе за час рублей 300 где-то берут.
Вконтакте найти можно.
На базе не всегда для непосредственно записи подходящеее оборудование есть. Т.е микрофон с пультом тебе дадут и звукоизоляцию обеспечат, но может оказаца что свой ноут тащить придёца и в тот же микрофонный вход на нём и писаца. Лучше заранее в каждом конкретном случае уточнять, чего у них можно, чего нельзя...
Как правило для записи используются студии. Студия может быть и функционально объединена с репбазой, но вощемта это раздельные понятия.
Репбаза плохое место для записи, почти всегда в соседней комнате кто-то что-то играет. Уровень шума дома может оказаться гораздо меньше, чем на репбазе. Хотя, если репбаза с одной единственной комнатой, то это студия, это уже годно. :)
Однокомнатных репетиционных баз по статистике больше, так что зря ты пугаешь. Но дело даже не в этом. Если тебе сказали, что место оборудовано для записи, значит так оно и есть. В шумных местах конечно никто не пишется.
А где картинки? Без картинок скучно читать, дальше пары абзацев не осилил, прости. :)
Программку как-то тыкал, ничего кроме пиу-пиу в разных вариациях не добился. Насколько я понял это быстрогенерилка хоть каких-нибудь ретро звуков для традиционных штук типа выстрелов и бонусов.
Я долго думал над тем, как бы проиллюстрировать статью, но иллюстрировать её нечем, кроме как кусками одного и того же скриншота — в программе нет ничего, кроме одного экрана с кнопками, буквами и колонками. Можно было бы показать формы звуковых колебаний, но это как-то и так само собой разумеется. У меня ж не вводная статья в работу со звуком.
Всё правильно понял, только кроме "пиу-пиу" там можно ещё "дыщь", "тыдыщь", и даже "дыдыдыщщщь".
Я делал звук для ИД чисто в sfxr. Шумовые спецэффекты часто бывают интересней чем мелодичные.
Тыдыщ это хорошо. :)
Не хочешь всё же добавить в статью этот самый единственный скриншот? Как-то грустно без него.
Уговорил.
К сожалению, текущий дизайн Гамина его срезает справа, а при попытке выставить меньшую ширину мне пишет что-то типа "Не удалось сохранить, содержимое было изменено другим пользователем.", хотя только я и редактировал.
Kot211, спасибо за правку, теперь красиво. Хотя буквы на скриншоте порядочно мелкие, а теперь ещё и более размытые стали. Ну, как есть. Желающие могут нажать на картинку чтобы увеличить.
Предпочитаю использовать bfxr. Лёгкая доступность в онлайне весьма кстати.
Да-да, лёгкая доступность — наше всё. Почему-то он доступен по http://www.bfxr.net/, но не доступен по http://bfxr.net/
Ссылка без предварительного www почему-то не работает у меня.
В целом, bfxr это почти то же самое, только несколько разнообразней и красивей.
И летать на нём можно.
http://farm8.staticflickr.com/7126/7410198260_99a4646ed1_z.jpg
в нем звуки прям сразу можно миксовать - при генерации они пишутся в лист, из листа их можно вызывать
Я знаю, но bfxr сложнее в обращении и требует какой-то технологии для работы в оффлайне, кажется Adobe AIR. Хотя... надо проверить.
компилированный exe, но может быть.
http://ded.bfxr.net/~locus/bfxr_update/Bfxr_WIN.zip
А, нет, я проверил — действительно работает. Наверное, в прошлый раз какую-то другую версию скачал, но ведь не мог же я под Мак скачать.
Хм... Может стоит переработать пособие для использования bfxr?
А у чувака много всяких приблуд для 8bit звука: вот здесь, в самом верху страницы есть еще musagi и fftuner, для написания музыки к играм самое оно.
Нашел более продвинутую версию этой проги:
http://www.bfxr.net/
Выше эту версию уже упомянули. К ней тоже относится всё, что есть в этом пособии.