Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2016, 10:48   #21
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

goto "Для бывших из delphi.int.ru" раздел "Свободное общение". Я себя неуютно чувствую, флудя в тематическом разделе, так что если возникнет желание почирикать "за жизнь" - лучше туда. Личные сообщения, насколько помню, ты терпеть не можешь, кроме как от ближнеего круга.

http://programmersforum.ru/showthrea...37#post1583037


Моя интуевина меня не подвела Модератору - респект за толерантность.

Последний раз редактировалось digitalis; 02.03.2016 в 14:01.
digitalis вне форума Ответить с цитированием
Старый 02.03.2016, 11:20   #22
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

digitalis, создание отдельной темы в "Свободном общении" - это правильное решение!
Я тут со вчерашнего вечера еле сдержался, чтобы тут всё не почистить.
А так - перенёс все сообщения в эту тему, все довольны и счастливы!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.03.2016, 14:17   #23
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от Iron Monk Посмотреть сообщение
Сложно в ресурсы зашить файл?
Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Да пробовал я и это. Угадай с трёх раз, чем дело кончилось? Правильно - обломом. Ну, может чего-то не доглядел, но потратив неделю, выбросил из головы как "рабочую идею".
Я тоже удивлена...
Код:
//В файл MyWave.rc пишем:

MyWave RCDATA LOADONCALL MyWave.wav
//brcc32.exe MyWave.rc, получаем MyWave.res.

//В своей программе пишем:

{$R MyWave.res}

//Все!

//Предупреждая следующий вопрос "А как прочитать wave-файл из исполняемого файла?"

procedure RetrieveMyWave;
var
  hResource: THandle;
  pData: Pointer;
begin
  hResource:=LoadResource( hInstance, FindResource(hInstance, 'MyWave', RT_RCDA TA));
  try
    pData := LockResource(hResource);
    if pData = nil then
      raise Exception.Create('Cannot read MyWave');
    // Здесь pData указывает на MyWave
    // Теперь можно, например, проиграть его (Win32):
    PlaySound(pData, 0, SND_MEMORY);
  finally
    FreeResource(hResource);
  end;
end;

Последний раз редактировалось kropotkina-alice; 02.03.2016 в 14:20.
kropotkina-alice вне форума Ответить с цитированием
Старый 02.03.2016, 14:45   #24
Filka
Форумчанин
 
Регистрация: 29.10.2015
Сообщений: 273
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
А если звук формировать прямо в программе, в байтовом массиве ? Is it possible ?
Код взял из комментария отсюда...
Код:
uses
  MMSystem;

procedure TForm1.Button1Click(Sender: TObject);
const
  BufLen = 8000 * 60;
var
  WaveOut: HWAVEOUT;
  wfx: tWAVEFORMATEX;
  buffer: array[0..BufLen - 1] of Byte;
  t: Integer;
  header: WAVEHDR;
begin
  WaveOut := 0;
  with wfx do
  begin
    wFormatTag := WAVE_FORMAT_PCM;
    nChannels := 1;
    nSamplesPerSec := 8000;
    nAvgBytesPerSec := 8000;
    nBlockAlign := 1;
    wBitsPerSample := 8;
    cbSize := 0;
  end;

  for t := Low(buffer) to High(buffer) do
    buffer[t] := t * (((t shr 12) or (t shr 8)) and (63 and (t shr 4)));

  with header do
  begin
    lpData := @buffer[0];
    dwBufferLength := SizeOf(buffer);
    dwBytesRecorded := 0;
    dwUser := 0;
    dwFlags := 0;
    dwLoops := 0;
    lpNext := nil;
    reserved := 0;
  end;

  waveOutOpen(@WaveOut, WAVE_MAPPER, @wfx, 0, 0, CALLBACK_NULL);
  waveOutPrepareHeader(WaveOut, @header, SizeOf(WAVEHDR));
  waveOutWrite(WaveOut, @header, SizeOf(WAVEHDR));
  waveOutUnprepareHeader(WaveOut, @header, SizeOf(WAVEHDR));
  waveOutClose(WaveOut);
end;

Последний раз редактировалось Filka; 02.03.2016 в 14:55.
Filka вне форума Ответить с цитированием
Старый 02.03.2016, 14:59   #25
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от kropotkina-alice Посмотреть сообщение
Я тоже удивлена...
Код:
//В файл MyWave.rc пишем:
я тоже удивлён. Вы тему читали?

Человек хочет формировать данные "runtime".
Что записывать в файл, если на момент компиляции программы того, что нужно воспроизводить, ещё не существует.
Цитата:
Сообщение от digitalis
Зашить в ресурсы файл, содержимое которого не определено до начала работы программы ? Тут и сам Дейкстра бы призадумался.
Кроме того, ему уже показали пример использования SND_MEMORY и он уже за это поблагодарил

Впрочем, подозреваю, что Вы отвечали не TC, а Смитту, на его облом с использованием файла из ресурсов. Угадал?


Filka, круто!!

Последний раз редактировалось Serge_Bliznykov; 02.03.2016 в 15:02.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.03.2016, 16:00   #26
Filka
Форумчанин
 
Регистрация: 29.10.2015
Сообщений: 273
По умолчанию

Цитата:
Filka, круто!!
Спасибо. Но придумал это всё не я...
Здесь (точнее здесь) можно почитать про waveOutOpen, waveOutPrepareHeader и т.д.
Filka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Звук Звууууук Звук ... не рабоает звук.. Zvuuuuk Компьютерное железо 2 22.01.2011 17:53
Тюнер для гитары в делфи. (Считывать с микрофона звук и выводить какой частоты этот звук). Серего Мультимедиа в Delphi 8 12.01.2011 14:39
Звук xakkkkker Мультимедиа в Delphi 4 05.05.2008 08:13
звук и делфи, левый правый звук snusmumric Win Api 2 29.10.2007 11:10