Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выковырять инфу из wav-ки [D6, WinXP]


Страницы:   1 2 3 4

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]


> как или чем можно извлечь инфу о .. длительности,
> громкости и тэпэ из звукового файла


Нет там такой инфы.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо