Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2011.01.30;
Скачать: [xml.tar.bz2];

Вниз

Выковырять инфу из wav-ки   Найти похожие ветки 

 
AL2002_   (2008-02-17 16:39) [0]

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

Задача: проиграть звуковой файл спукером.

Вот я отрыл код для турбопаскаля, но он работает или под досом или под 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-18 13:37) [1]


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


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


 
AL2002_   (2008-02-18 18:05) [2]

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

Угу, угу, совсем нету. Только в досе через спикер играет.


 
AL2002_   (2008-02-18 21:34) [3]

Чо, нихто не знает? 8)


 
antonn ©   (2008-02-18 22:19) [4]

длительность можно узнать узнав частоту, кол-во каналов и размер данных


 
Сергей М. ©   (2008-02-19 10:12) [5]


> 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;

Глаза-то разуй - где ты тут видишь "инфу о .. длительности, громкости и тэпэ" ?)


 
AL2002_   (2008-02-19 15:56) [6]

>Глаза-то разуй - где ты тут видишь "инфу о .. длительности, громкости и тэпэ" ?)

Куды уж мне. 8)))))

Гы. А при чом тут заголовок? Заголовок - это 44 байта. Дальше - сабж.

В коде так и написано: for i1:=44 to i do

Так што.... получается, никто не шарит? В этом есть и свой позтив - значит, я в дельфи не так уж плохо разбираюсь. 8)))))


 
Сергей М. ©   (2008-02-19 16:02) [7]


> при чом тут заголовок?


При том что если такая инфа и существовала бы, то она фигурировала бы не иначе как в заголовке.

Гы.


 
Сергей М. ©   (2008-02-19 16:09) [8]


> AL2002


И вообще ты занялся откровенной хнёй)

И под NT и под Маздай существуют готовые wdm- и ks-дрова (написанные энтуазистами-идиотами), реализующие то что тебе не дает покоя.

Дрова после инсталляции представляют в системе соотвествующий "виртуальный" аудиодивайс, и все что требуется - указать этот дивайс обычному дельфийскому TMediaPlayer"у, который без тебя разберется, где у waw-файла "инфа о частоте, длительности, громкости и тэпэ", и воспроизведет его без каких-либо ощутимых потуг с твоей стороны)


 
AL2002_   (2008-02-19 16:23) [9]

>При том что если такая инфа и существовала бы, то она фигурировала бы
>не иначе как в заголовке.

Давайте разберемся. Звук представляет собой очередность частот (от 22 до 44000 герц кажется), которые, попискивая в динамике разными частотами, громкостями и длительностями, создают слышимость обычного звука.

Вот мне данные этих частот и попискиваний и нужны.
А залоговок - он и есть заголовок. В нем инфа о скорости, битрейте и теде.


 
Сергей М. ©   (2008-02-19 16:27) [10]


> Звук представляет собой очередность частот (от 22 до 44000
> герц кажется), которые, попискивая в динамике разными частотами,
>  громкостями и длительностями, создают слышимость обычного
> звука.


Абракадабра жуткая.


> данные этих частот и попискиваний и нужны


Нет там таких "данных". И быть не может.


 
Сергей М. ©   (2008-02-19 16:31) [11]

Коль приспичило, займись лучше конверсией PCM/ADPCM в ШИМ.
До asm"а и портов контроллера таймера тебе еще как до Китая раком)


 
AL2002_   (2008-02-19 16:39) [12]

>конверсией PCM/ADPCM в ШИМ.

Конверсия для меня то же самое, что и порты контроллера таймера.

Блин, есть же компоненты, которые, конвертируя звуковые файлы, выдают диаграммы пиков (deAudio например). Неужто нету такого компонента, которые это по-человечески мог вместо диаграммы вывести в обычных цыфрах?


 
Сергей М. ©   (2008-02-19 16:41) [13]


> диаграммы пиков


Пиков чего ?


 
Сергей М. ©   (2008-02-19 16:45) [14]


> Конверсия для меня то же самое, что и порты контроллера
> таймера


И ты с такими вот "познаниями" решил взяться за эту далеко не тривиальную задачу ?

Мда ..


 
AL2002_   (2008-02-19 16:46) [15]

>Пиков чего ?
Звука.

Тот же саундфордж выдает же кардиограмму звукового файла? Обрабатывает звук фильтрами? Значит, он может выковыривать инфу про частоты и тепе.


 
Сергей М. ©   (2008-02-19 16:55) [16]


> кардиограмму звукового файла


??!!!

Какую такую "кардиограмму" ?)

Может все же спектрограмму ?


> он может выковыривать инфу про частоты и тепе


Эта "кардиограмма" никак не связана с ШИМ.


 
Сергей М. ©   (2008-02-19 16:57) [17]


> он может выковыривать инфу про частоты и тепе


Он ее не "выковыривает", он ее расчитывает, на основании совсем другой инфы)


 
AL2002_   (2008-02-19 17:00) [18]

Уууууууууу...... блин как все сложно. 8(

Т.е.  выдрать очередность частот с их громкостью, длительностью и чередностью не получится? А эквалайзеры что делают?


 
Сергей М. ©   (2008-02-19 17:07) [19]


> выдрать очередность частот с их громкостью, длительностью
> и чередностью не получится?


Как можно определить частоты, громкости и длительности хрюканья борова, оцифрованного и записанного в wav-файл ?)


> эквалайзеры что делают?


Они делают Фурье-преобразования.

А причем здесь таймер ?)


 
AL2002_   (2008-02-19 17:40) [20]

>Как можно определить частоты, громкости и длительности хрюканья
>борова, оцифрованного и записанного в wav-файл ?)

Хрюканье и прочее в звуке и есть совокупность частот распределенных в соответствии звучания, которое разбирает наше ухо. 8))

>Они делают Фурье-преобразования.
Угу. На основе частот.

>А причем здесь таймер ?)
Не таймер, а спикер.


 
Jeer ©   (2008-02-19 17:53) [21]


> AL2002_   (19.02.08 17:00) [18]


Случай с тобой тяжелый, однако.
С такой кашей в голове шашлык нэ вийдет:)


 
AL2002_   (2008-02-19 18:11) [22]

>Случай с тобой тяжелый, однако.
>С такой кашей в голове шашлык нэ вийдет:)

Если ответить нечего, то обычно переходят на личности.


 
AL2002_   (2008-02-19 18:20) [23]

А вопрос-то очень прост.

Код відергивает инфу из wav-файла, обрабатывает ее и отсылает на спикер в виде череды частот и длительностей. Мне они и нужны.
Если бы я в асме шарил, я бы здесь темы не создавал.

Неужели никто не может сделать перевод из асма в паскаль?


 
AL2002_   (2008-02-19 19:10) [24]

А белый шум изобрел я:
for i:=0 to 10000 do windows.Beep(random(10000)+500,1);
(с) easy из чата


 
@!!ex ©   (2008-02-19 19:48) [25]

> [23] AL2002_   (19.02.08 18:20)

Я чего то не понимаю, или в асмовском коде как раз и делается преобразование Фурье...


 
AL2002_   (2008-02-19 20:11) [26]

@!!ex ©   (19.02.08 19:48) [25]
>Я чего то не понимаю, или в асмовском коде как раз и делается
>преобразование Фурье...


Ну, если     shr al,6 и and al,2 это фурье, то я, конечно, рад.
Но мне надо это на нормальный дельфийский код, без asmа, перевести.


 
@!!ex ©   (2008-02-19 20:21) [27]

> [26] AL2002_   (19.02.08 20:11)

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


 
Сергей М. ©   (2008-02-19 20:34) [28]


> AL2002_   (19.02.08 18:11) [22]


Но случай, поверь уж, действительно тяжелый.


> Не таймер, а спикер.


А спикер, по-твоему, куда воткнут - в задницу ?)

Классически он управляется каналом таймер-чипа 8253, к этой "классике" как раз и относится тот код, который ты тут привел, ничерта не понимая происходящего в нем)


 
Сергей М. ©   (2008-02-19 20:37) [29]

Удалено модератором


 
Compiler ©   (2008-02-19 23:47) [30]

А по-моему где-то были компоненты для чтения тегов. Сам не использовал, но имеются.


 
AL2002_   (2008-02-19 23:58) [31]

Сергей М. ©   (19.02.08 20:34) [28]
>А спикер, по-твоему, куда воткнут - в задницу ?)

Вам виднее.

>Классически он управляется каналом таймер-чипа 8253, к этой "классике"
>как раз и относится тот код, который ты тут привел, ничерта не понимая
>происходящего в нем)


Ну я и этому рад, конечно.
Но это не дает решения вопроса.

Значит, вы, нафлудив здесь кучу сообщений, отняв у себя и у меня немерено времени, не можете перевести код управления таймер-чипа, который в свою очередь управляет системным динамикомъ, з асма на дельфи, рассказывая мне при этом, что в wav-файле нету сведений о частоте, громкости и прочей инфе о звуке?

Так, получается?


 
@!!ex ©   (2008-02-20 00:22) [32]

> [31] AL2002_   (19.02.08 23:58)

Пока поулчается, что вы сами не можете решить простейшую задачу(перевод асм кода в дельфи), которая школьник с 1 месяцем информатики решает без проблем, тупо смотря в справочник по асму.


 
Сергей М. ©   (2008-02-20 09:56) [33]


> рассказывая мне при этом, что в wav-файле нету сведений
> о частоте, громкости и прочей инфе о звуке?


SampleRate - это частота дискретизации.

BytesPerSecond - кол-во байт, которыми представлен оцифрованный звук длительностью в секунду.


> Хрюканье и прочее в звуке и есть совокупность частот


Угу. А куст есть совокупность веток, произрастающих из одного корня)

Вот тебе ликбез:

http://www.google.ru/search?q=%D0%BF%D0%BE%D1%80%D1%82%D1%8B+%D1%82%D0%B0%D0%B9%D0%BC%D0%B5%D1%80%D0%B0+8253&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a
http://forum.sources.ru/index.php?showtopic=94967&hl=
http://www.progiblog.ru/cgi-bin/content.pl?id=665
http://pascal.sources.ru/sound/index.htm

Вот как только разберешься в необходимости реализации конвертера ИКМ/АДИКМ -> ШИМ (хоть на Паскале, хоть на чем угодно), так и милости просим)

А asm здесь ни причем : вывод в порты управления спикером готовой инф-ции (т.е. результата работы этого самого конвертера) - последнее и самое простое дело.


 
wicked ©   (2008-02-21 03:05) [34]

в порядке оффтопа
----
> Сергей М. ©   (19.02.08 10:12) [5]

> 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;

это плохая структура заголовка wav, не приводи её никогда, чтобы не позориться и не вводить никого в заблуждение

причина - wav файлы являются составными (как и avi) и там много разных заголовков, которые могут сочетаться в разных комбинациях
одно из сочетаний (самое простое, кстати) представлено данной структурой
поэтому опасность как раз в том, что (меньшую) часть файлов можно будет прочитать с данной структурой, а остальные будут выглядеть битыми

> Compiler ©   (19.02.08 23:47) [30]

> А по-моему где-то были компоненты для чтения тегов. Сам
> не использовал, но имеются.

20 минут работы и никаких компонентов


 
Сергей М. ©   (2008-02-21 08:23) [35]


> wav файлы являются составными


Мне это хорошо известно.
Простой файл или составной - по барабану.
Ни в одном заголовке ни одной из частей нет той инф-ции, которую автор страстно желает иметь)


 
Jeer ©   (2008-02-21 15:58) [36]


> wicked ©   (21.02.08 03:05) [34]


Я, что-то, тоже не понял - при чем тут плохая или хорошая структура заголовка ?

Сергей привел ее только лишь для уточнения факта, что в header не содержится желаемой автору сабжа информации.

Все, что нужно автору содержится в "теле" wave-файла, а, поскольку, желаемым источником звука является системный speaker, то нет другого способа ( без hardware-переделок) "пропищать" wave-файл через speaker, кроме как преобразования амплитудно-модулированного сигнала из wave-файла (PCM) в ШИМ-сигнал для подачи на speaker через системный таймер.

Именно эти и предлагалось неоднократно заняться автору сабжа, но - каша в голове.
А вот когда научится готовить бастурму, тогда и шашлык может выйти.
А может и не выйти из-за несварения:)


 
Сергей М. ©   (2008-02-21 16:39) [37]


> Jeer ©   (21.02.08 15:58) [36]


))

Так точно, сэр !
Ваша поддержка, как и всегда, как нельзя кстати)

Кашу ту, изрядно пересоленную "эквалайзерами", СайндФоржами и прочей не имеющей отношения к делу лабудой, будет действительно трудновато превратить в шашлык)


 
Jeer ©   (2008-02-21 17:43) [38]


> Сергей М. ©   (21.02.08 16:39) [37]


"Если не мы, то кто ? " (С)
"В любое время, в любом месте - любая задача" (С)


 
AL2002_   (2008-02-21 19:29) [39]

Вопщем, никто ничо не смог. На том и закончим.


 
Сергей М. ©   (2008-02-21 20:39) [40]


> никто ничо не смог


ну а как тут чо смочь, если ты фригидный ?)



Страницы: 1 2 вся ветка

Форум: "Media";
Текущий архив: 2011.01.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.004 c
2-1289307984
Faiwer
2010-11-09 16:06
2011.01.30
Destroy


15-1287403277
Дмитрий Тимохов
2010-10-18 16:01
2011.01.30
Посоветуйте стредство шифрования файлов.


2-1289474407
Сергей
2010-11-11 14:20
2011.01.30
Блокировка записи в базе данных на сервере


2-1289455404
lehich
2010-11-11 09:03
2011.01.30
заголовок окна


2-1289205361
kate158
2010-11-08 11:36
2011.01.30
как найти дату по шаблону?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский