-
Просьба подсказать, как или чем можно извлечь инфу о частоте, длительности, громкости и тэпэ из звукового файла. Задача: проиграть звуковой файл спукером. Вот я отрыл код для турбопаскаля, но он работает или под досом или под 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');
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
End;
End;
end;
Под 98-й, по идее, работает. ХР все потуги на прямое управление железо через int обрубает на корню. Просьба, адаптировать этот код под дельфи, чтобы можно было все это дело пропищать под ХР-виндой.
-
> как или чем можно извлечь инфу о .. длительности, > громкости и тэпэ из звукового файла
Нет там такой инфы.
-
>Нет там такой инфы.
Угу, угу, совсем нету. Только в досе через спикер играет.
-
Чо, нихто не знает? 8)
-
длительность можно узнать узнав частоту, кол-во каналов и размер данных
-
> 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;
Глаза-то разуй - где ты тут видишь "инфу о .. длительности, громкости и тэпэ" ?)
-
>Глаза-то разуй - где ты тут видишь "инфу о .. длительности, громкости и тэпэ" ?)
Куды уж мне. 8)))))
Гы. А при чом тут заголовок? Заголовок - это 44 байта. Дальше - сабж.
В коде так и написано: for i1:=44 to i do
Так што.... получается, никто не шарит? В этом есть и свой позтив - значит, я в дельфи не так уж плохо разбираюсь. 8)))))
-
> при чом тут заголовок?
При том что если такая инфа и существовала бы, то она фигурировала бы не иначе как в заголовке.
Гы.
-
> AL2002
И вообще ты занялся откровенной хнёй)
И под NT и под Маздай существуют готовые wdm- и ks-дрова (написанные энтуазистами-идиотами), реализующие то что тебе не дает покоя.
Дрова после инсталляции представляют в системе соотвествующий "виртуальный" аудиодивайс, и все что требуется - указать этот дивайс обычному дельфийскому TMediaPlayer'у, который без тебя разберется, где у waw-файла "инфа о частоте, длительности, громкости и тэпэ", и воспроизведет его без каких-либо ощутимых потуг с твоей стороны)
-
>При том что если такая инфа и существовала бы, то она фигурировала бы >не иначе как в заголовке.
Давайте разберемся. Звук представляет собой очередность частот (от 22 до 44000 герц кажется), которые, попискивая в динамике разными частотами, громкостями и длительностями, создают слышимость обычного звука.
Вот мне данные этих частот и попискиваний и нужны. А залоговок - он и есть заголовок. В нем инфа о скорости, битрейте и теде.
-
> Звук представляет собой очередность частот (от 22 до 44000 > герц кажется), которые, попискивая в динамике разными частотами, > громкостями и длительностями, создают слышимость обычного > звука.
Абракадабра жуткая.
> данные этих частот и попискиваний и нужны
Нет там таких "данных". И быть не может.
-
Коль приспичило, займись лучше конверсией PCM/ADPCM в ШИМ. До asm'а и портов контроллера таймера тебе еще как до Китая раком)
-
>конверсией PCM/ADPCM в ШИМ.
Конверсия для меня то же самое, что и порты контроллера таймера.
Блин, есть же компоненты, которые, конвертируя звуковые файлы, выдают диаграммы пиков (deAudio например). Неужто нету такого компонента, которые это по-человечески мог вместо диаграммы вывести в обычных цыфрах?
-
> диаграммы пиков
Пиков чего ?
-
> Конверсия для меня то же самое, что и порты контроллера > таймера
И ты с такими вот "познаниями" решил взяться за эту далеко не тривиальную задачу ?
Мда ..
-
>Пиков чего ? Звука.
Тот же саундфордж выдает же кардиограмму звукового файла? Обрабатывает звук фильтрами? Значит, он может выковыривать инфу про частоты и тепе.
-
> кардиограмму звукового файла
??!!!
Какую такую "кардиограмму" ?)
Может все же спектрограмму ?
> он может выковыривать инфу про частоты и тепе
Эта "кардиограмма" никак не связана с ШИМ.
-
> он может выковыривать инфу про частоты и тепе
Он ее не "выковыривает", он ее расчитывает, на основании совсем другой инфы)
-
Уууууууууу...... блин как все сложно. 8(
Т.е. выдрать очередность частот с их громкостью, длительностью и чередностью не получится? А эквалайзеры что делают?
-
> выдрать очередность частот с их громкостью, длительностью > и чередностью не получится?
Как можно определить частоты, громкости и длительности хрюканья борова, оцифрованного и записанного в wav-файл ?)
> эквалайзеры что делают?
Они делают Фурье-преобразования.
А причем здесь таймер ?)
|