|
|
||
|
Музыка по жанрам Еще по теме Материалы о музыке
|
Теги страницы: Загрузка звука (LoadSound). До сих пор самый важный метод из С Audi о Manager - это тот, который загружает wave файлы и создает из них звуковые объекты. Вот как это выглядит. Это гораздо проще, чем было бы сделано в DirectSound. Это потому, что загрузчик работает с wave файлами, делая этот код процессом. Во-первых, он преобразовывает данное имя файла в строку в формате (потому что DirectMusic обращается только с строками). Затем он говорит загрузчику, чтобы он загрузил wave файл, используя LoadObject-FromFile. Он отдает загрузчику ID класса (CLSID_DirectMusicSegnienf) и интерфейса, которых он ожидает, и загрузчик делает то, что от него требуется. Unicode - данный формат использует 16-битное представление символов. Как только он получает интерфейс сегмента, он сохраняет его в переменной CSound's mSegment. (CAudioManager-это дружественный класс для CSound, поэтому он имеет доступ к «защищенным» переменным CSound.) Совет. Представляйте себе WAV файлы как сегмент музыки из одной ноты, играемый на одном инструмент*. У вас все еще есть интерфейс сегмента, но это на самом деле именно wave файл. Интеллектуальные указатели. В списке самых необходимых характеристик движка, которые необходимо обеспечить, прямо после надежности и обработки ошибок стоит управление ресурсами. Хороший движок должен быть сделан так. чтобы его клиентам было просто создавать объекты, использовать их и избавляться от них, когда они уже больше не нужны. Один из хороших способов сделать это - использовать интеллектуальные указатели. Интеллектуальный указатель (smart pointer) - это класс, который ведет себя как обычный указатель, но с одним отличием: он умный! Он настолько умен, что понимает когда удалять объекты, которые уже больше не используются. Многие программисты используют интеллектуальные указатели, чтобы облегчить тяжесть управления памятью, особенно когда используются также исключительные ситуации . Если вам необходим освежающий ваши знания курс о том, что такое интеллектуальный указатель, воспользуйтесь ссылками на вашем компакт-диске. Все интеллектуальные указатели для звуковых движков происходят из обычного базового класса, который также оказывается шаблоном. Этот шаблонный базовый класс называется и приводится в исполнение в который основан непосредственно на коде, написанном Дэвидом Гарвеем. Я включил в CD ссылку на статью, которая сначала сопровождала этот код; откройте ее, вы хотите узнать, как это работает. Soundlitr является исходным шаблоном для создания указателей CSound. Я предоставил конструктор и метод Release, который выводит сообщения на отладочную консоль, так что вы можете (в реальном времени!) увидеть, как создаются и разрушаются звуки. CSound. В звуковом движке объект CSound представляет звуковой объект. Как вы знаете, основной частью этого объекта является сегментный интерфейс DirectMusic, который содержит сам файл. CSound охватывает этот интерфейс. Я решил, что я не хочу точно следовать DirectMusic; вместо этого, я хочу использовать метод CSound, чтобы я мог говорить: «звуковой эффект, Альтернатива в том, чтобы включить метод Play внутрь CAudioManager и передать CSound в качестве параметра. Причина, по которой я решил сделать не так, чаклчается в моем личном предпочтении; мне просто кажется, что так будет проще. |
|