Реклама в Интернет       Все Кулички
Искусство создания игр
head

Сделать стартовой

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

    sound_play(index) Проигрывает указанный звук. Если звук является фоновой музыкой, то текущая фоновая музыка останавливается.
    sound_loop(index) Проигрывает звук с указанным именем непрерывно. Если звук является фоновой музыкой, то текущая фоновая музыка останавливается.
    sound_stop(index) Останавливает звук с указанным именем. Если имеются множественные звуки с этим индексом проигрывающимися одновременно, то все будут остановлены.
    sound_stop_all() Останавливает все звуки.
    sound_isplaying(index) Возвращает, если (копия) указанный звук проигрывается. Обратите внимание, что это функции возвращают истину, когда звук фактически проигрывается через динамики. После того, как Вы вызываете функцию проигрывания звука, то она не сразу задействуется динамиками, поскольку она может быть всё ещё возвращать ложь некоторое время. Подобно, когда звук остановлен, Вы всё ещё слышите его некоторое время (например, эхо) и функция будет всё ещё возвращать истину.

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

    sound_volume(index,value) Изменяет громкость для указанного звука (0 = низкий уровень, 1 = высокий).
    sound_global_volume(value) Изменяет основную громкость для всех звуков (0 = низкий уровень, 1 = высокий).
    sound_fade(index,value,time) Изменяет громкость для указанного звука на новое значение (0 = низкий уровень, 1 = высокий) в течение указанного времени (миллисекунд). Это может быть использовано, чтобы ослабевать или усиливать музыку.
    sound_pan(index,value) Изменяет панораму для указанного звука (-1 = влево, 0 = центр, 1 = вправо).
    sound_background_tempo(factor) Изменяет темп фоновой музыки (если это midi файл). factor - указывает показатель, с которым будет ускоряться темп. Значение 1 относиться к нормальному темпу. Большие значения - более быстрый темп, меньшие значения - медленный темп. Значения должны быть от 0.01 до 100.

Кроме midi, wave и mp3 файлов в действительности поддерживается ещё четвёртый тип, который может быть проигран - это direct файлы. Они имеют расширение .sgt. Такие файлы всё же часто ссылаются на другие файлы, описывающие, например, название группы или информацию о стиле музыки. Чтобы находить такие файлы, звуковая система должна знать, где они расположены. С этой целью, Вы можете использовать следующую функцию, чтобы установить поиск директорий с этими файлами. Имейте в виду, что Вы должны добавить их самостоятельно. Game Maker автоматически не включает такие дополнительные файлы.

    sound_set_search_directory(dir) Устанавливает директорию, в которой direct файлы должно быть обнаружены. Cтрока указываемой директории dir не должна содержать косой обратной черты '\'.

Звуковые эффекты могут быть использованы для изменения звуков и фоновой музыки. Поймите, что звуковые эффекты в основном применяются только к wave и midi файлам - не к mp3 файлам. Эта глава описывает существующие функции для использования и изменения звуковых эффектов. Чтобы использовать эти функции, Вам нужно хорошо разбираться в звуках и работе синтезаторов. Пояснение этому здесь не описывается. Поищите дополнительную информацию в Интернете или специальной литературе.

Чтобы применить звуковой эффект к конкретному звуку, Вы можете указать его, определяя звуковой ресурс, или можете использовать следующие функции

sound_effect_set(snd,effect) Устанавливает звуковой эффект (или комбинацию) для указанного звука. effect - может быть любым из следующего величин:

    se_none
    se_chorus
    se_echo
    se_flanger
    se_gargle
    se_reverb
    se_compressor
    se_equalizer

    Вы можете установить комбинацию эффектов, добавляя их через величины. Например, Вы можете использовать

    sound_effect_set(snd,se_echo+se_reverb);

    чтобы получить комбинацию эффектов Эха и Ревербации.

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

    sound_effect_chorus(snd,wetdry,depth,feedback,frequency,wave,delay,phase) Устанавливает параметры для эффекта chorus для указанного звука. Следующие параметры могут быть установлены:

    wetdry Коэффициент "мокрого" (обработанного) сигнала для "сухого" (необработанного) сигнала. (диапазон: от 0 до 100, по умолчанию значение 50)
    depth Процент, с которым время задержки модулируется низкочастотным генератором, в сотых долях процента. (диапазон: от 0 до 100, по умолчанию значение 25)
    feedback Процент выводного сигнала, для подпитки "эффектового" входа. (диапазон: от -99 до 99, по умолчанию значение 0)
    frequency Частота LFO. (диапазон: от 0 до 10, по умолчанию значение 0)
    wave Wave форма LFO. (0 = triangle, 1 = wave, по умолчанию значение 1)
    delay Количество задержанных миллисекунд перед обратным проигрыванием. (диапазон: от 0 до 20, по умолчанию значение 0)
    phase Фаза между левым и правым LFO. (диапазон: от 0 до 4, по умолчанию значение 2)

    sound_effect_echo(snd,wetdry,feedback,leftdelay,rightdelay,pandelay) параметры для эффекта echo для указанного звука. Следующие параметры могут быть установлены:

    wetdry Коэффициент "мокрого" (обработанного) сигнала для "сухого" (необработанного) сигнала. (диапазон:от 0 до 100, по умолчанию значение 50)
    feedback Процент выводного сигнала, для подпитки "эффектового" входа. (диапазон: от 0 до 100, по умолчанию значение 0)
    leftdelay Задержка для левого канала, в миллисекундах. (диапазон: от 1 до 2000, по умолчанию значение 333)
    rightdelay Задержка для правого канала, в миллисекундах. (диапазон: от 1 до 2000, по умолчанию значение 333)
    pandelay Меняет левые и правые задержки с каждым последующим Зхом. (0 = не меняет, 1 = меняет, по умолчанию значение 0)

    sound_effect_flanger(snd,wetdry,depth,feedback,frequency,wave,delay,phase) Устанавливает параметры для эффекта flanger для указанного звука. Следующие параметры могут быть установлены:

    wetdry Коэффициент "мокрого" (обработанного) сигнала для "сухого" (необработанного) сигнала. (диапазон:от 0 до 100, по умолчанию значение 50)
    depth Процент, с которым время задержки промодулировано низкочастотным генератором, в сотых долях процента. (диапазон: от 0 до 100, по умолчанию значение 25)
    feedback Процент выводного сигнала, для подпитки "эффектового" входа. (диапазон: от -99 до 99, по умолчанию значение 0)
    frequency Частота LFO. (диапазон: от 0 до 10, по умолчанию значение 0)
    wave Wave форма LFO. (0 = triangle, 1 = wave, по умолчанию значение 1)
    delay Количество задержанных миллисекунд перед обратным проигрыванием. (диапазон: от 0 до 20, по умолчанию значение 0)
    phase Фаза между левым и правым LFO. (диапазон: от 0 до 4, по умолчанию значение 2)

    sound_effect_gargle(snd,rate,wave) Устанавливает параметры для эффекта gargle для указанного звука. Следующие параметры могут быть установлены:

    rate Показатель модуляции, в Герцах. (диапазон: от 1 до 1000, по умолчанию значение 1)
    wave Форма wave-модуляции. (0 = triangle, 1 = square, по умолчанию значение 0)

    sound_effect_reverb(snd,gain,mix,time,ratio) Устанавливает параметры для эффекта reverb для указанного звука. Следующие параметры могут быть установлены:

    gain Увеличение сигнала Входа, в децибелах (dB). (диапазон: от -96 до 0, по умолчанию значение 0)
    mix Смешивание Ревербации в dB. (диапазон: от -96 до 0, по умолчанию значение 0)
    time Время Ревербации, в миллисекундах. (диапазон: от 0.001 до 3000, по умолчанию значение 1000)
    ratio Частотный коэффициент (диапазон: от 0.001 до 0.999, по умолчанию значение 0.001)

    sound_effect_compressor(snd,gain,attack,release,threshold,ratio,delay) Устанавливает параметры для эффекта compressor для указанного звука. Следующие параметры могут быть установлены:

    gain Увеличение Выводного сигнала после сжатия. (диапазон: от -60 до 60, по умолчанию значение 0)
    attack Время, которое перед сжатием достигнет своей полной величины. (диапазон: от 0.01 до 500, по умолчанию значение 0.01)
    release Скорость, в которой сжатие останавливается после входящих сигналов нижеуказанного Порога. (диапазон: от 50 до 3000, по умолчанию значение 50)
    threshold Точка, в которой начинается сжатие, в децибелах. (диапазон: от -60 до 0, по умолчанию значение -10)
    ratio Коэффициент Сжатия. (диапазон: от 1 до 100, по умолчанию значение 10)
    delay Время после того, как Порог будет достигнут прежде, чем будет начата фаза атаки, в миллисекундах. (диапазон: от 0 до 4, по умолчанию значение 0)

    sound_effect_equalizer(snd,center,bandwidth,gain) Устанавливает параметры для эффекта equalizer для указанного звука. Следующие параметры могут быть установлены:

    center Частота Центра, в герцах. (диапазон: от 80 до 16000)
    bandwidth Ширина полосы частот, в тональностях. (диапазон: от 1 до 36)
    gain Прирост. (диапазон: от -15 до 15)

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

Кроме позиции, звук может также иметь скорость. Она основана на известных эффектах Доплера, которые правильно смоделированы. Наконец, звук может иметь ориентацию и, опять же, звук соответственно приспосабливается.

Game Maker поддерживает опции 3D звука через приведённые ниже функции. Они работают только для звуковых ресурсов, которые будут указаны как 3D. (Недостаток в том, что 3D звуки - моно, не стерео.)

    sound_3d_set_sound_position(snd,x,y,z) Устанавливает позицию указанного звука с отношением к слушателю в указанную позицию пространства. Значения в оси x увеличиваются слева направо, в оси y снизу вверх и в оси z от близкого расстояния до дальнего расстояния. Эти значения измеряются в метрах. Громкость, с которой звук будет услышан, будет зависеть от этого измерения так же, как и в реальном мире.
    sound_3d_set_sound_velocity(snd,x,y,z) Устанавливает скорость указанного звука на указанный вектор в пространстве. Пожалуйста, отметьте, что установка скорости не означает, что позиция изменится. Скорость используется для расчёта эффектов Доплера. Так что если Вы хотите переместить звук, то Вы должны сами изменить его позицию.
    sound_3d_set_sound_distance(snd,mindist,maxdist) Устанавливает минимальное расстояние, в котором звук достигает большего увеличения в громкости; и максимальное расстояние, в котором звук не может быть больше услышан. Итак, если расстояние пролегает между 0 и минимальное расстоянием, то звук будет находиться в максимальной амплитуде. Когда между минимальным и максимальным расстоянием амплитуда медленно уменьшается до значения максимально достигнутого расстояния, то звук, во всяком случае, не длинный. По умолчанию, минимальное расстояние является 1 метром, а максимальное расстояние - 1 миллиард метров.
    sound_3d_set_sound_cone(snd,x,y,z,anglein,angleout,voloutside) Обычно звук имеет одну и ту же амплитуду в указанном расстоянии во всех направлениях. Вы можете установить звуковой конус, чтобы изменить это и сделать звучание направленным. x,y,z - определяют направление звукового конуса. anglein - определяет внутренний угол. Если слушатель в зоне воздействия внутреннего угла, то он услышит звук в своей обычной громкости. angleout - определяет внешний угол. Когда слушатель за пределами зоны воздействия внешнего угла, то громкость указывается с помощью значения voloutside. Чтобы быть точным, voloutside - отрицательное число, которое указывает количество сотен децибел, которое должно быть вычтено из внутренней громкости. Между внутренним и внешним углом постепенно звук будет уменьшаться.

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

    cd_init() Должна быть вызвана перед использованием других функций. Также должна вызываться при замене CD (или просто время от времени).
    cd_present() Возвращает, если CD присутствует в заданном по умолчанию приводе.
    cd_number() Возвращает число треков на CD.
    cd_playing() Возвращает, если CD проигрывается.
    cd_paused() Возвращает, если CD приостановлен или остановлен.
    cd_track() Возвращает номер текущего трека (1=первый).
    cd_length() Возвращает полную продолжительность CD, в миллисекундах.
    cd_track_length(n) Возвращает продолжительность трека n находящегося на CD, в миллисекундах.
    cd_position() Возвращает текущую позицию на CD, в миллисекундах.
    cd_track_position() Возвращает текущую позицию в треке, который проигрывается, в миллисекундах.
    cd_play(first,last) Сообщает CD приводу проигрывать треки с первого до последнего. Если Вы хотите проиграть весь CD - укажите в качестве параметра 1 и 1000.
    cd_stop() Прекращает проигрывание.
    cd_pause() Приостанавливает проигрывание.
    cd_resume() Возобновляет проигрывание.
    cd_set_position(pos) Устанавливает позицию на CD, в миллисекундах.
    cd_set_track_position(pos) Устанавливает позицию в текущем треке, в миллисекундах.
    cd_open_door() Открывает лоток CD проигрывателя.
    cd_close_door() Закрывает лоток CD проигрывателя.

Также имеется очень важная функция для доступа к мультимедийным возможностям Windows.

    MCI_command(str) Посылает командную строку в мультимедийную систему Windows, используя управляющий интерфейс (Media Control Interface). Это возвращает обратную строку. Вы можете использовать эту функцию для управления всеми мультимедийными устройствами своего рода. Смотрите документацию Windows для получения подробной информации об этой команде. Например: MCI_command('play cdaudio from 1') - проигрывает СD после правильной инициализации этой функции, используя другие команды. Эта функция доступна только в расширенном режиме!

Rambler's Top100

Requier inc. 2007