Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1000 / Основная теория звука и синтеза - копия

.docx
Скачиваний:
28
Добавлен:
15.06.2014
Размер:
613.68 Кб
Скачать

Создание музыки в программе musagi.

Данное руководство предназначено для того, чтобы дать понимание использования программы musagi, и одновременно изучить элементарные навыки музыки, если их не хватает. Я не сертифицированный музыкант, так что не вините меня, если я даю плохой совет - просто насладитесь информацией о musagi и попытайтесь забыть о музыкальной части.

Я извиняюсь, если страница имеет тяжёлые по размеру картинки, я подумал, что это лучше всего иллюстрируют каждый шаг. Изображения не программы musagi, вероятно это авторские права людей, у которых я украл их.

Приступим.

Загрузите musagi здесь. Стандартный инструмент это xnes, который является грубой симуляцией звуковой платформы NES. Это хороший универсальный инструмент, в котором вы можете просто добиться множества различных звуков (если вы не боитесь немного ретро энергии).

Программное обеспечение само по себе не ограничивается ретро музыкой, однако это то, текущий набор инструментов, в основном направлены на ретро, это то что я люблю больше всего.

С несколькими сэмплами и небольшой корректировкой фильтрующих кнопок вы можете получить прелестный утончённый звук, если это ваша игра. Пока давайте придержемся xnes платформы для простоты.

Клавиатурный джаз.

Начните манипулировать битами с клавиатуры и найдите набор нот, который вы можете использовать.

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

Установить основную октаву до 4, используя на кнопку «октава вверх/вниз» в правом нижнем углу.

К примеру:

Нажмите E-Y-U-I (ищите Y-U-I случайно, затем ищите ноту ниже, к примеру E)

Нажмите E-Y-E-U-E-I (чередуя нижнюю ноту с ростом масштаба)

Нажмите E-Y-E-U-E-I-E-U-E-Y (те же, то вверх, то вниз шкале)

Нажмите I-I-U-I-Y (случайная мелодия)

Нажмите I-Y-I-U-E (поочередно и случайно в зависимости от масштаба, но с иногда как бы случайно ошибаясь)

Вы заметите, что это всё имеет тот же меланхоличный звук. Это чувство приходит главным образом из множества используемых нот, не в порядке или не методе, в котором они играли.

Нажмите I-U-T-W (долго зажимая каждую клавишу, это интро Zelda 2!

Zelda 1 интро это is J-V-V-J-H-G-H ... J-G-G-J-N-B-N (но с несколько иной настройкой инструмента)

Когда вы закончите играть загрузите снова xnes. Просто нажмите кнопку "new" в верхней центральной части окна, выберите пункт "xnes" из всплывающего окна и согласитесь с предупреждением. Кроме того, можно создать новый xnes в другом слоте инструмента, выбрав справа один из них, прежде чем нажать на кнопку.

Основные ноты.

Сейчас мы попытаемся определить набор из четырёх базовых нот/клавиш, желательно в гармонии с тем что вы только что играли.

Пример:

Нажмите I-Y-E-U (долго задерживайте, повторяя)

Нажмите запятая-N-C-M (похожие ноты, но одной октавой ниже, следуйте за колонной ниже по клавиатуре)

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

Вставка: ноты и раскладка клавиатуры.

Музыкальная теория, ускоренный курс(пропустите, если вы знаете:

Западная музыка состоит из так называемых нот, из которых 12 особых, которые мы можем как бы разделить на октавы. Одна октава имеет 12 нот, следующая также 12, где частота каждой из них вдвое больше, чем соответствующая нота предыдущей октавы. Человеческий слух и musagi, в состоянии работать с 10 октавами.

Основные ноты это: C, C#, D, D#, E, F, F#, G, G#, A, A#, B

Одни имеющие приставку "sharp", соответствуют чёрным клавишам пианино. Белые клавиши составляют мажорную гамму (начиная с С), и имеют очень большой размер. Масштаб ряда нот хорошо сочетается и может быть использован для построения "мелодии" (это название я предпочитаю использовать в определенной серии нот, сыгранных подряд, я не на 100% уверен в терминологии описанной здесь и откровенно говоря, я не очень волнуюсь).

Для справки, двигаясь на 1 "полутон" в нотах это когда вы переходите к следующей в очереди, независимо от того черная она или белая.

То, что мы делали там с EYUI выбирали из простой гаммы (на самом деле подмножеством мажорной гаммы). Там в почти бесконечное число различных возможных гамм, но в целом вы хотели бы следовать за несколькими указателями, чтобы убедиться, что ноты звучат хорошо вместе:

- Во первых, следуйте ко всем белым или ко всем чёрным. Белые и чёрные клавиши могут быть смешаны но это искусство обхода неблагозвучия.

- Двигайтесь пошагово одного или двух звуков лучше даже трёх.

- Используйте мажорную гамму. Эта гамма соответствует только белым клавишам, если вы начали с С. Начиная с других нот, вы также можете создавать разные части гаммы, двигаясь вверх по числу полутонов в той же схеме, как если бы вы нажимаете белые клавиши, которые означают:

0,2,2,1,2,2,2,1 в следующем полутоне пойти от первой ноты в первой октаве к первой ноте более высшей октавы. Если вы посмотрите выше вы увидите, что этот полутон пройден вы исполните, когда нажмёте белую клавишу от С и выше.

К примеру, вы имеете классическую 047 струну, которая начинается с какой-то ноты, это будет похоже на что вроде: 0, (0+2+2)=4, (0+2+2+1+2)=7

Начиная с E вы получите E-6-U, из F# (клавиатура 5) вы получите номера клавиш 5-7-9. Это удобно для того чтобы двинуться выше первую четвёрку и чем добавить тройку и получиться 7. Взгляните ниже для должного изучения клавиатурных обозначений нот.

Компьютерная клавиатура сопоставлена с обычной клавиатурой пианино;

Первая строка белых клавиш: Z, X, C, V, B, N, M, comma, period, dash

Вторая строка белых клавиш: Q, W, E, R, T, Y, U, I, O, P (похожа на первую но октавой выше)

Создание подлинной песни

Таким образом, чтобы создать звук нам нужно движение объекта. Достаточно удобно если объекты доступны и их можно перемещать туда сюда произвольным образом. Их называют динамиками. Динамик основан на электромагните с подвижным конусом, таким образом, что при различном электрическом сигнале, который на него подаётся, конус будет следовать за сигналом.

Традиционный способ создания звуков это дублирование естественных звуков. Это делается с помощью микрофона, который, по сути, является динамиком наоборот, он генерирует сигнал от воздействующих на него звуков. Этот сигнал либо храниться, либо передаётся непосредственно через усилитель на одну или несколько колонок. Когда колонки получают сигнал, они двигаются также, как передвинулась микрофонная мембрана (конус), когда он был подвержен оригинальный звук, так что конечный результат еще раз тот же звук, но с небольшой временной задержкой и изменённым звуком (как правило, более сильным).

Воспроизведение звуков природы это хорошо, но не то, что нам требуется. Если вы нуждаетесь в конкретном звуке вам придётся искать его с помощью генерации реальных физических процессов, что практически невозможно. Однако, звуковые техники старой школы в производстве фильмов, создали замечательные работы с практически физической генерацией звука. Примером является звук лазерной TIE Fighter в "Звездных войнах" (надлом металлической проволоки) и рычание T-Rex в "Парке Юрского периода (крупные транспортные машины). Очевидно, существует бесконечное множество других эффектов, взрывы, шумы монстров и, конечно, самые популярные драки на кулаках.

Сейчас существую удобные системы для создания звука. Звуковая карта компьютера обладает тем, что называется цифро-аналоговый преобразователь (ЦАП), который способен генерировать электрические сигналы из цифр, которые ему даны. Номер должен быть в пределах определенного диапазона, скажем -1,0 до 1,0 (с произвольной точностью между ними). Как правило, ноль дает нам покой/свободное положение динамика, при положительных числах оказывается давление на перед при отрицательных чисел на заднюю часть, то есть в другом направлении. Это на самом деле неважно куда идет вона, вы слышите звук будет более или менее одинаковы.

Поэтому наша задача будет в том, чтобы придумывать интересные последовательности чисел для звуковой карты. Если мы просто возьмём один номер и не изменим его, сначала диффузор будет двигаться к этой позиции, а потом оставаться там, в результате чего может быть щелчок и дальнейшее молчание. Интересные вещи происходят только тогда, когда мы неоднократно будем менять номер по определенному шаблону.

С практической точки зрения, вы не можете ожидать, что современный компьютер, достаточно устойчив, чтобы сохранить цикл и явно отправить каждый номер на звуковую карту. Все происходит по заранее установленной частоте, как правило, на 44100 выборок в секунду (CD-качество звука). Это частота дискретизации иногда называют "Hz".

Простой сигнал

Ладно, мы должны подойти к цифрам. Повторять модели чисел. Как мы это сделаем? Это абсолютно просто - любой повторяющийся набор чисел создаст звуковой сигнал (если вы их диапазон достаточно большой).

* Любая модель вы говорите? Ну, что ж 1,0,1,0,1,0,1,0 ,...?

Да, это сработает. Но, к сожалению, вы не услышите, ни один звук, даже если он использует большую часть диапазона. Помните, те образцы, которые мы кормили через D/A конвертер на 44100 в секунду, и эти цифры описывают колебания (возвратно-поступательный, помните?), Вроде этого:

…но картина повторяется каждые два образца, так что в результате динамика колебаний на 22050 Гц. Это чуть выше 20 кГц, которые вы, вероятно, помните, как верхний предел для человеческого слуха. Это действительно причина для использования 44,1 кГц, частота дискретизации - поэтому мы можем воспроизводить звуки по всему диапазону человеческого уха, но не больше.

* Хорошо, что, если я держу каждое из чисел на некоторое время?

Ты имеешь в виду что-то вроде 1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0 ,...?

* Да, вот так. Или даже больше того же до изменения.

Ура, вы только что создали прямоугольные волны, которые, пожалуй, являются самым классическим цифровой синтезированным сигналом. Сколько раз мы повторяем количество до перехода к другой? Если мы увеличим, это количество, сигнал будет более растянутым во времени, и колебания будет происходить медленнее, поскольку он занимает больше времени, чтобы завершить движение. Число повторов (также называемый "период", если измерять по времени) прямой способ управления частотой сигнала, которую мы генерируем. Более длительный срок означает более низкую частоту, и наоборот.

Маленькая заметка к работоспособности это то, что вы обычно хотите, чтобы сигнал колебался равномерно вокруг нулевой точки, в противном случае не будет звукового щелчка/клика в начале и в конце вызова. Это вызвано средним уровнем сигнала, который переносится внезапно. Это иллюстрируется довольно ясно по тому, как аудио системы построены. Они, как правило фильтруют все, что движется медленнее, чем группа Гц, чтобы всегда держать диффузор колеблющейся около физической точки покоя динамика. Так вы получите максимально доступный диапазон движения из нее, даже если ваш аудио сигнал постоянного тока.

Так что мы должны делать, а наши квадратные волны состоят из положительных и отрицательных чисел той же величины. Например -0,5 до +0,5 или -1,0 до +1,0

Синусоидальная волна

Хотя прямоугольная волна имеет свойство быть очень простой для расшифровки компьютером, на самом деле очень сложна с музыкальной точки зрения. Она содержит большое количество резонансных частот выше единицы, которые мы создаем с выбранной величиной периода, который может сделать звук "полным" и характерным. На самом деле некоторые из них можно описать скорее как "пустые" или "воздушные", но все-таки имеющие определённый характер.

С физической точки зрения, самая простая форма сигнала - синусоидальная. Она проста в описании идеального колебания и похожа на вид колебаний, который можно получить с помощью маятника или груза, подвешенного на пружине. Объекты, как правило, предпочитают такую форму движения, когда они совершают поступательно-вращательное движение взад и вперед по медиане.

Субъективно, синусоида довольно скучна, она может быть охарактеризована только как очень чистый сигнал, и не более того. Для выработки возможных чистых звуков у неё есть достоинства, и это также весьма ценный компонент в создании более сложных звуков. Больше всего важны теоретическая и математическая конструкция этой величины. Например -0,5 до +0,5 или -1,0 до +1,0.

Синусоида довольно сложна в создании компьютером, но в большинстве случаев функция sin() моделируется на разумной скорости. Полный период колебаний sin(t) достигается цикличным изменением t от 0 до 2*пи, и выводит значения в диапазоне от -1 до +1. Причины для использования таких, казалось бы, нечетные параметров диапазона математические и связанные с кругом, традиционные функции, такие как синус и косинус. Окружности радиуса 1 равна 2 пи.

Треугольная волна

Треугольная волна представляет собой попытку имитировать синусоидальную волну более точно, чем вы могли бы прямоугольной, но её использование требует весьма простых вычислений. Это просто рост и падение рамп ценностей. Результат звучит очень похоже на синусоиду. Но звучит скучно, хотя, естественно.

Пилообразная волна

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

Шум

Если вы хотите более хаотичных, звуков, напоминающих взрывы или ударов, вам не придется иметь дело с простыми повторяющимися моделями. Прямой путь получения хаотической модели это использование генератора случайных чисел. Большинство языков программирования имеют такие генераторы. В C вы могли бы сделать что-то вроде этого:

next_number = (float) (rand ()% 20000-10000) / 10000

... Чтобы получить случайное число между -1,0 и +1,0. Посмотрите rand () и srand () для деталей.

Несмотря на это модель не будет полностью случайной, вы можете по-прежнему контролируете очевидной "частоты" и легкость звучания. Это можно сделать несколькими способами, но наиболее простой это задержка между переключением на новые случайные значения на основе качества. Модель очень похоже на прямоугольные волны в этом отношении, кроме вас, придется держать на период намного короче длины шума.

Общие формы волн (для программистов)

Чтобы испробовать различные виды сигналов с использованием одной и той же базовой функции, вы должны сохранить переменную, которая будет изменяться от 0 до 1 и пройти полный период выбранной функции. В периоде длина будет определять желаемые частоты. Для получения фактических значений, можно использовать различные функции (в зависимости от того, какой сигнал вы хотите), чтобы найти подходящее значение, основанное на текущем положении периода.

Для прямоугольной волны, вы может просто проверить период, меньше или больше 0,5. Если он меньше, выводить -1, или 1 (наоборот). Чтобы получить пилообразную волну, вы напишите что-то вроде (-1,0 + period_pos*2,0), что приведет к уклону сигнала от -1 до +1 над {0,0 - 1,0} положения диапазона периода.

Одну вещь, я нашел полезными для шума это восстановление буфера случайных моделей каждый раз в период подсчёта витков, и постоянное считывание значений из этого буфера на основанного на текущем положении в пределах периода. Вы можете выбирать размер буфера будет подходящее значение, на основе которых значения частот вы хотите использовать. Он не должен быть длинным, но несколько сотен моделей, вероятно, хорошая идея, чтобы избежать пересчета все это время.

Для изменения частоты звука вам нужно просто установить новое значение для длины периода (хотя это влияет только на скорость, с которой положение периода увеличивается, он всегда будет в промежутке между 0 и 1). Для контроля звука нужно умножить выходной сэмпл с помощью значения звука (скажем, между 0.0 за молчание и 1.0 для максимальной громкости). Можно также смешать несколько независимых сигналов, соединив их сэмплы вместе, хотя будьте уверены, что он не превышает допустимого диапазона вашей звуковой карты (которые, вероятно, равны -1,0 до +1,0). Иными словами, вы должны будете использовать звук ниже для каждого сигнала (или "канала"), если вы собираетесь смешать (добавить) некоторые из них вместе ... или вы можете просто умножить итоговую сумма со значением громкости, если вам не нужна регулировка громкости на каждый канал.

Еще одно небольшое предостережение, которое стоит рассмотреть это то, что вы не должны использовать числа с плавающей точкой, как будто они были неотъемлемой типов данных. То есть: не увеличивать маленькие шаги в большом диапазоне. Они имеют ограниченную точность и будет неправильно, если вы это сделаете. Это может проявляться как небольшое, но заметное изменение в поле, ни хуже. Вы увеличить числа с запятой столько, сколько хотите держать их в разумных пределах, как между 0,0 и 1,0. Проблемы возникают, когда размер приращения намного меньше, чем текущее значение (например, 50000,0 + 0,1).

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

float frequency

float volume

float period_speed

float period_position

init()

{

frequency = 440.0 // this is in Hz

period_speed = frequency/44100.0 // assuming a sample rate of 44.1 kHz

period_position = 0.0

}

fill_stream_buffer() // called by the soundcard

{

for(all samples in buffer)

{

period_position += period_speed

if(period_position >= 1.0) // change the "if" to a "while" if you expect frequencies above 44.1 kHz

{

period_position -= 1.0

}

this_sample = WaveformLookup(period_position)*volume

}

}

Обратите внимание, что мы держим period_position значение между вызовами fill_stream_buffer, так что не будет никаких разрывов или скачков сигнала. Если последний буфера завершилась period_position от 0,725 то в следующем начнется 1 естественно оттуда и аудиовыход будет звучать непрерывно.

Динамические волны

Besides simply setting a new fixed value, the simplest parameter "modulation" (alteration) is a simple ramp, or increasing/decreasing value. It is of course achieved by gradually incrementing or decrementing the parameter you're interested in. If you do this for volume you get a fade in or out, depending on the direction. For frequency the result is a frequency or pitch slide, naturally.

Даже с учетом основных сигналов упоминавшихся ранее, вы можете увеличить сложность и интерес путем изменения различных параметров во времени. Только параметры они имеют, в общем, являются частота и звук, но даже те, 2 позволяют довольно интересные эффекты.

Кроме того, просто установив новый фиксированные значения, простейших параметров "модуляции" (изменения) представляет собой простой уклон или увеличение / уменьшение величины. Это, конечно, достигнуто постепенным увеличением или уменьшением интересующих вас параметров. Если вы делаете это для звук вы получаете исчезают или, в зависимости от направления.

Вам не нужно ограничивать себя одним только уклоном. Вы можете прикрепить некоторые, спина к спине. Например: сначала исчезают быстро, а затем сохранить 1 уровень громкости, а потом медленно исчезают. Это основная идея "развёртки" или сценария звуковой модуляции. Это простой и эффективный способ имитации звуков природы способ, как правило, отличаются по качеству с течением времени в более широком масштабе.

В качестве примера мы могли бы ударить в гонг или пустую бочку. Звук будет сначала сильным, а затем продолжиться на некоторое время, и будет становится все слабее, пока он не потеряет звука. Google "ADSR развёртка" для получения дополнительной информации.

Я бы воспользоваться этой возможностью, чтобы отметить, что прямоугольные волны на самом деле имеет дополнительный природные параметр, связанный с ним - рабочий цикл. Это значение, описывающее соотношение между длиной первый и второй половинах сигнала период, или центральной позиции (0,5 в предыдущем примере). При изменении этого, вы можете кардинально изменить характер звука. Подметальная постепенно приводит к большой эффект в себя и широко используется в C64 музыке и SFX.

Анализ типичных звуковых эффектов

Соседние файлы в папке 1000