![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выковырять инфу из wav-ки [D6, WinXP]
AL2002_ © (2008-02-17 16:39:00)Просьба подсказать, как или чем можно извлечь инфу о частоте, длительности, громкости и тэпэ из звукового файла.
Задача: проиграть звуковой файл спукером.
Вот я отрыл код для турбопаскаля, но он работает или под досом или под 98-й. ХР посылаетъ.
Соответственно задача состоит в том, чтобы адаптировать этот код под дельфи и пропищать все это дело через какой-нить компонент, типа Ttone.
А вот код. Если бы я хоть немного шарил в асме, мож чо и понял. 8(
procedure TForm1.Button1Click(Sender: TObject);
Var
f : file;
b1: byte;
spd : word;
b : array [1..64500] of byte;
I, I1:Integer;
begin
RichEdit1.Lines.Clear;
assignFile(f,'Chimes8.wav');
{$I+}
reset(f,1);
blockread(f,b,64500,i);
closefile(f);
spd:=b[25]+(word(b[26]) shl 8);
spd:=$fffffff div longint(spd);
spd:=spd shr 7;
ToneGen1.Frequency:=300;
ToneGen1.Duration:=1;
ToneGen1.Play;
for i1:=44 to i do
Begin
asm
{ mov al,b1
shr al,6
and al,2
out 61h,al
in al,40h
xchg al,ah
in al,40h
xchg al,ah
mov dx,ax
@m1:
xor al,al
out 43h,al
in al,40h
xchg al,ah
in al,40h
xchg al,ah
push dx
sub dx,ax
cmp dx,spd
pop dx
jb @m1
}
End;
End;
end;
Под 98-й, по идее, работает. ХР все потуги на прямое управление железо через int обрубает на корню.
Просьба, адаптировать этот код под дельфи, чтобы можно было все это дело пропищать под ХР-виндой.
Сергей М. (2008-02-19 16:55:00) [61]
> кардиограмму звукового файла
??!!!
Какую такую "кардиограмму" ?)
Может все же спектрограмму ?
> он может выковыривать инфу про частоты и тепе
Эта "кардиограмма" никак не связана с ШИМ.
AL2002_ (2008-02-19 16:46:00) [62]>Пиков чего ?
Звука.
Тот же саундфордж выдает же кардиограмму звукового файла? Обрабатывает звук фильтрами? Значит, он может выковыривать инфу про частоты и тепе.
Сергей М. (2008-02-19 16:45:00) [63]
> Конверсия для меня то же самое, что и порты контроллера
> таймера
И ты с такими вот "познаниями" решил взяться за эту далеко не тривиальную задачу ?
Мда ..
Сергей М. (2008-02-19 16:41:00) [64]
> диаграммы пиков
Пиков чего?
AL2002_ (2008-02-19 16:39:00) [65]>конверсией PCM/ADPCM в ШИМ.
Конверсия для меня то же самое, что и порты контроллера таймера.
Блин, есть же компоненты, которые, конвертируя звуковые файлы, выдают диаграммы пиков (deAudio например). Неужто нету такого компонента, которые это по-человечески мог вместо диаграммы вывести в обычных цыфрах?
Сергей М. (2008-02-19 16:31:00) [66]Коль приспичило, займись лучше конверсией PCM/ADPCM в ШИМ.
До asm'а и портов контроллера таймера тебе еще как до Китая раком)
Сергей М. (2008-02-19 16:27:00) [67]
> Звук представляет собой очередность частот (от 22 до 44000
> герц кажется), которые, попискивая в динамике разными частотами,
> громкостями и длительностями, создают слышимость обычного
> звука.
Абракадабра жуткая.
> данные этих частот и попискиваний и нужны
Нет там таких "данных". И быть не может.
AL2002_ (2008-02-19 16:23:00) [68]>При том что если такая инфа и существовала бы, то она фигурировала бы
>не иначе как в заголовке.
Давайте разберемся. Звук представляет собой очередность частот (от 22 до 44000 герц кажется), которые, попискивая в динамике разными частотами, громкостями и длительностями, создают слышимость обычного звука.
Вот мне данные этих частот и попискиваний и нужны.
А залоговок - он и есть заголовок. В нем инфа о скорости, битрейте и теде.
Сергей М. (2008-02-19 16:09:00) [69]
> AL2002
И вообще ты занялся откровенной хнёй)
И под NT и под Маздай существуют готовые wdm- и ks-дрова (написанные энтуазистами-идиотами), реализующие то что тебе не дает покоя.
Дрова после инсталляции представляют в системе соотвествующий "виртуальный" аудиодивайс, и все что требуется - указать этот дивайс обычному дельфийскому TMediaPlayer'у, который без тебя разберется, где у waw-файла "инфа о частоте, длительности, громкости и тэпэ", и воспроизведет его без каких-либо ощутимых потуг с твоей стороны)
Сергей М. (2008-02-19 16:02:00) [70]
> при чом тут заголовок?
При том что если такая инфа и существовала бы, то она фигурировала бы не иначе как в заголовке.
Гы.
AL2002_ (2008-02-19 15:56:00) [71]>Глаза-то разуй - где ты тут видишь "инфу о .. длительности, громкости и тэпэ" ?)
Куды уж мне. 8)))))
Гы. А при чом тут заголовок? Заголовок - это 44 байта. Дальше - сабж.
В коде так и написано: for i1:=44 to i do
Так што.... получается, никто не шарит? В этом есть и свой позтив - значит, я в дельфи не так уж плохо разбираюсь. 8)))))
Сергей М. (2008-02-19 10:12:00) [72]
> AL2002_ (18.02.08 18:05) [2]
> совсем нету
Конечно нет)
Вот структура заголовка wav-файла:
TWaveHeader = record
Marker1: Array[0..3] of Char;
BytesFollowing: LongInt;
Marker2: Array[0..3] of Char;
Marker3: Array[0..3] of Char;
Fixed1: LongInt;
FormatTag: Word;
Channels: Word;
SampleRate: LongInt;
BytesPerSecond: LongInt;
BytesPerSample: Word;
BitsPerSample: Word;
Marker4: Array[0..3] of Char;
DataBytes: LongInt;
Глаза-то разуй - где ты тут видишь "инфу о .. длительности, громкости и тэпэ" ?)
antonn (2008-02-18 22:19:00) [73]длительность можно узнать узнав частоту, кол-во каналов и размер данных
AL2002_ (2008-02-18 21:34:00) [74]Чо, нихто не знает? 8)
AL2002_ (2008-02-18 18:05:00) [75]>Нет там такой инфы.
Угу, угу, совсем нету. Только в досе через спикер играет.
Сергей М. (2008-02-18 13:37:00) [76]
> как или чем можно извлечь инфу о .. длительности,
> громкости и тэпэ из звукового файла
Нет там такой инфы.