Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Здесь есть возможность читать онлайн «Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Советы по Delphi. Версия 1.4.3 от 1.1.2001: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Советы по Delphi. Версия 1.4.3 от 1.1.2001»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

…начиная с 1001. Смотрите другие файлы…

Советы по Delphi. Версия 1.4.3 от 1.1.2001 — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Советы по Delphi. Версия 1.4.3 от 1.1.2001», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

MIXERLINE mxl;

mxl.cbStruct = sizeof(MIXERLINE);

mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;

if (::mixerGetLineInfo((HMIXEROBJ)ghmx, &mxl, MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE) != MMSYSERR_NOERROR) return 34;

// get dwControlID

MIXERCONTROL mxc;

MIXERLINECONTROLS mxlc;

mxlc.cbStruct = sizeof(MIXERLINECONTROLS);

mxlc.dwLineID = mxl.dwLineID;

mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;

mxlc.cControls = 1;

mxlc.cbmxctrl = sizeof(MIXERCONTROL);

mxlc.pamxctrl = &mxc;

if (::mixerGetLineControls((HMIXEROBJ)ghmx, &mxlc, MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE) != MMSYSERR_NOERROR) return 34;

return mxc.dwControlID;

}

BOOL SetMasterVolume(DWORD dwVolume) {

MIXERCONTROLDETAILS mxcd;

MIXERCONTROLDETAILS_UNSIGNED mxcd_u;

mxcd.cbStruct = sizeof(mxcd);

mxcd.dwControlID = MasterVolumeControlID;

mxcd.cChannels = 1;

mxcd.cMultipleItems = 0;

mxcd.cbDetails = 4;

mxcd.paDetails = &mxcd_u;

mmr = mixerGetControlDetails((HMIXEROBJ)ghmx, &mxcd, 0L);

if (MMSYSERR_NOERROR != mmr) return FALSE;

mxcd_u.dwValue = dwVolume;

mmr = mixerSetControlDetails((HMIXEROBJ)ghmx, &mxcd, 0L);

if (MMSYSERR_NOERROR != mmr) return FALSE;

return TRUE;

}

Переписывать на Delphi, думаю, ни к чему. Надо лишь не забыть добавить uses MMSystem; Громкость отдельных каналов очень просто устанавливается через auxSetVolume и аналогичные.

Как использовать в своей программе API DirectSound и DirectSound3D?

Nomadicсоветует:

Пример 1

Представляю вашему вниманию рабочий пример использования DirectSound на Delphi + несколько полезных процедур. В этом примере создается один первичный SoundBuffer и 2 статических, вторичных; в них загружаются 2 WAV файла. Первичный буфер создается процедурой AppCreateWritePrimaryBuffer, а любой вторичный - AppCreateWritePrimaryBuffer. Так как вторичный буфер связан с WAV файлом, то при создании буфера нужно определить его параметры в соответствии со звуковым файлом, эти характеристики (Samples, Bits, IsStereo) задаются в виде параметров процедуры. Time — время WAV'файла в секундах (округление в сторону увеличения). При нажатии на кнопку происходит микширование из вторичных буферов в первичный. AppWriteDataToBuffer позволяет записать в буфер PCM сигнал. Процедура CopyWAVToBuffer открывает WAV файл, отделяет заголовок, читает чанк 'data' и копирует его в буфер (при этом сначала считывается размер данных, так как в некоторых WAV файлах существует текстовый довесок, и если его не убрать, в динамиках возможен треск).

PS. Если есть какие-нибудь вопросы, постараюсь на них ответить.

unitUnit1;

interface

usesWindows, Messages, SysUtils, Classes, Graphics, Controls,Forms, Dialogs, DSound, MMSystem, StdCtrls, ExtCtrls;

typeTForm1 = class(TForm)

Button1: TButton;

Timer1: TTimer;

procedureFormCreate(Sender: TObject);

procedureFormDestroy(Sender: TObject);

procedureButton1Click(Sender: TObject);

private

DirectSound: IDirectSound;

DirectSoundBuffer: IDirectSoundBuffer;

SecondarySoundBuffer: array[0..1] ofIDirectSoundBuffer;

procedureAppCreateWritePrimaryBuffer;

procedureAppCreateWriteSecondaryBuffer( varBuffer: IDirectSoundBuffer; SamplesPerSec: Integer; Bits: Word; isStereo: Boolean; Time: Integer);

procedureAppWriteDataToBuffer(Buffer: IDirectSoundBuffer; OffSet: DWord; varSoundData; SoundBytes: DWord);

procedureCopyWAVToBuffer(Name: PChar;

varBuffer: IDirectSoundBuffer);

{ Private declarations }

public

{ Public declarations }

end;

varForm1: TForm1;

implementation

{$R *.DFM}

procedureTForm1.FormCreate(Sender: TObject);

begin

ifDirectSoundCreate( nil, DirectSound, nil) <> DS_OK then RaiseException.Create('Failed to create IDirectSound object');

AppCreateWritePrimaryBuffer;

AppCreateWriteSecondaryBuffer(SecondarySoundBuffer[0], 22050, 8,False, 10);

AppCreateWriteSecondaryBuffer(SecondarySoundBuffer[1], 22050, 16, True, 1);

end;

procedureTForm1.FormDestroy(Sender: TObject);

vari: ShortInt;

begin

ifAssigned(DirectSoundBuffer) thenDirectSoundBuffer.Release;

fori:=0 to1 do ifAssigned(SecondarySoundBuffer[i]) thenSecondarySoundBuffer[i].Release;

ifAssigned(DirectSound) thenDirectSound.Release;

end;

procedureTForm1.AppWriteDataToBuffer;

var

AudioPtr1, AudioPtr2: Pointer;

AudioBytes1, AudioBytes2: DWord;

h: HResult;

Temp: Pointer;

begin

H:=Buffer.Lock(OffSet, SoundBytes, AudioPtr1, AudioBytes1, AudioPtr2, AudioBytes2, 0);

ifH = DSERR_BUFFERLOST then begin

Buffer.Restore;

ifBuffer.Lock(OffSet, SoundBytes, AudioPtr1, AudioBytes1, AudioPtr2, AudioBytes2, 0) <> DS_OK then RaiseException.Create('Unable to Lock Sound Buffer');

end

else ifH <> DS_OK then RaiseException.Create('Unable to Lock Sound Buffer');

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Советы по Delphi. Версия 1.4.3 от 1.1.2001»

Представляем Вашему вниманию похожие книги на «Советы по Delphi. Версия 1.4.3 от 1.1.2001» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Советы по Delphi. Версия 1.4.3 от 1.1.2001»

Обсуждение, отзывы о книге «Советы по Delphi. Версия 1.4.3 от 1.1.2001» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x