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

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

Насчёт звука


Страницы:   1 2

fiction ©   (2003-12-05 21:35:00) 

Я слышал, что если читать звуковые данные, поступающие в звуковой буфер, то это будет амплитудой этих самых данных  в 8 или 16- битном размере. Но вот когда я это делаю, получается что-то не очень похожее на амплитуду. Даже у звукового файла с записанной тишиной, эти значения получаются огромными. Подскажите, пожалуйста, в чём ошибка?


Анонимщик   (2003-12-24 17:33:00) [1]

Digitman
Ну да, но почти только для данного


Digitman   (2003-12-24 16:12:00) [2]


> Анонимщик ©   (24.12.03 13:14) [30]


http://www.exponenta.ru/educat/class/courses/ma/theme10/theory.asp

для данного случая  "нахождение дифференциала" и "нахождение производной" - синонимы, никак не противоречащие


Анонимщик   (2003-12-24 13:14:00) [3]

Digitman ©  
Ну, дифференциал это непроизводная, да ладно.

fiction
Ты посмотрел бы все-таки описание структуры wav-файла, за час больше поймешь, чем за те две недели, что вопросы задаешь.


Digitman   (2003-12-20 12:14:00) [4]


> При чём здесь


ну как же ни при чем-то ?!)
ты же спросил, что за огромные значения такие у тебя в файле ?
вот в [12] как раз тебе и сказано было, что каждая 16-битная выборка должна рассматриваться тобой не как целое беззнаковое число, а именно как целое знаковое ! иными словами ты рассматривал выборки как Word, в то время как их следует рассматривать в виде Smallint


> А тогда в чём смысл положительных и отрицательных значений?
> Чем они отличаются?


при знаковом представлении значений выборок матеметические операции над выборками значительно упрощаются


fiction   (2003-12-19 22:54:00) [5]

При чём здесь ответ konstantinov [12]? Как раз в нём по-моему нет ничего, про что я спрашивал. Про это я знал и раньше.

А тогда в чём смысл положительных и отрицательных значений? Чем они отличаются?


Digitman   (2003-12-19 08:21:00) [6]


> fiction   (18.12.03 22:49) [25]
> Ну вот я про это и спрашивал


так тебе давно уже и ответили)
см.

> konstantinov ©   (10.12.03 02:49) [12]


Asteroid   (2003-12-18 23:41:00) [7]

Нет. Каналы чередуются: сначала один сэмпл для левого, потом один для правого и т.д. Для каждого канала возможны как положительные, так и отрицательные значения.


fiction   (2003-12-18 22:49:00) [8]

Ну вот я про это и спрашивал, про 65000, тогда всё ясно. Вот последний наверное вопросик. Если получаются положительные значения, то надо их в верхней части рисовать, а отрицательные в нижней. Так? И это будет левый и правый канал или как?


Digitman   (2003-12-15 08:37:00) [9]


> если я просто беру звуковой файл какой-то, где много разных
> дорожек


стоп. если речь идет конкретно о wav-формате со звук.данными в pcm-кодировке, то в заголовке указано число каналов

при стереозаписи (2 канала) в звук.данных файла каждая выборка представлена парой чисел : знач-е для лев.канала и следом же - знач-е для прав.канала  


> Вот кстати пример выборок из файла:
> 31 29 47 66 50 0 65471 65370 65368 65412 65489 58 137 196
> 235


и что здесь непонятного ?

65471 = -65
65370 = -166
65368 = -168
65412 = -124
65489 = -47

получаем

31 29 47 66 50 0 -65 -166 -168 -124 -47 58 137 196

разве это не похоже на реальные звук.данные ?
imho, вполне похожи !


fiction   (2003-12-14 21:40:00) [10]

Evgeny V а вот ты говоришь, зависит от того, какой вход используешь. А если я просто беру звуковой файл какой-то, где много разных дорожек, или вообще с диска, тогда как быть? И кстати так нельзя будет привязать полученные значения к децибелам?
Вот кстати пример выборок из файла:
31 29 47 66 50 0 65471 65370 65368 65412 65489 58 137 196 235
А вот насчёт заголовка я чё-то не понял, чё там можно приводить? там же блоки всякие, формат данных и т.д.


Evgeny V   (2003-12-13 05:36:00) [11]

> fiction   (10.12.03 19:04) [15]

Про  около 65000 всегда. Если у тебя 16 бит, формат PCM, то возможно, просто у тебя есть постоянка в минусах на входе записи, проблемы могут быть с самой картой, такое бывает и кстати важно какой вход записи используешь, Line IN - это одно, а вот микрофонный вход очень чувствителен, надо правильно подобрать усиление, но если все же нет большого разброса в значениях, то постоянка. Избавится можно программно, см Digitman
x[i-1] - x[i] где  х[n] - это выборка, другой вариант, найти среднеарифметическое всех выборок и вычесть его из каждой выборки.


fiction   (2003-12-12 14:55:00) [12]

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


_VectoR_   (2003-12-11 12:37:00) [13]

ОК. Спасибо. А то я чего-то затупил и сам не собразил.


Digitman   (2003-12-11 12:04:00) [14]

ну что такое дифференциал некоей ф-ции ? это отношение приращения значения ф-ции к приращению ее аргумента ... так ?

в дан.же случае ф-ция Y = F(t) задана не аналитически, а таблично, где t - это мгнов.время выборки, а Y - мгнов.значение выборки

если, к примеру, имеется две последовательные выборки (8-я и 9-я по счету)

Y8(t8 = 8) = 65000
Y9(t8 = 9) = 65100

то дифференциалом будет величина, равная

(Y9 - Y8)/(t9 - t8) = (65100 - 65000)/ (9 - 8) = 100

т.е. относительное изменение сигнала за период времени между t9 и t8 составило 100


_VectoR_   (2003-12-11 11:25:00) [15]

> Digitman
Я тут просто залез "на огонек" и услышал программное продифференцирование. Подскажи, пжлста, как это делается. Какой-нибудь алгоритм или ссылку. В общем смысле, а не конкретном. Как программно продифферинцировать последовательность чисел?


Digitman   (2003-12-11 08:45:00) [16]

для программного исключения DC Offset нужно просто программно продифференцировать "сигнал"


Digitman   (2003-12-11 08:42:00) [17]


> Как это возможно вообще


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

это просто некое значение DC Offset, не более того

ты лучше приведи реальный фрагмент дампа такого файла - заголовок и следующие за ним пару десятков выборок


fiction   (2003-12-10 19:04:00) [18]

Ну ладно, вобщем мне надо представить графически не только этот файл с тишиной, но и вообще любой звуковой файл. Но у меня всё время получаются значения около 65000. Как это возможно вообще?


Digitman   (2003-12-10 08:48:00) [19]

настоящая "тишина" при вышеуказанном формате - это данные, следующие за заголовком, каждое дв.слово которых = 0

все остальные значения дв.слов, представляющих в дан.случае значения выборок - никак не "тишина", а знаковые представления амплитуд выборок


Digitman   (2003-12-10 08:42:00) [20]


> Я прочитал заголовок, и посмотрел размер файла, он вполне
> нормальный, представить графически там есть что. Причём
> даже если в файле тишина он же всё равно включает в себя
> звуковые данные.


ты противоречишь сам себе

цитирую тебя :


> fiction   (07.12.03 17:01) [4]
> В том файле вообще ничего не было, даже не записывалось ничего


Вот реальный пример "пустого" файла , т.е. в который "не записывалось ничего" :

формат : PCM, 8кГц, 16 бит, моно

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000000   52 49 46 46 24 00 00 00 57 41 56 45 66 6D 74 20  RIFF$...WAVEfmt
00000010   10 00 00 00 01 00 01 00  40 1F 00 00 80 3E 00 00   ........@...€>..
00000020   02 00 10 00 64 61 74 61  00 00 00 00               ....data....

жирным выделена полная длина файла, начиная со смещения + 8
в дан.случае она равна 36 байт
как видишь, начиная со смещения +8 в файле насчитывается действительно 36 байт, из которых собственно звук.данных - 0 байт (дв.слово по смещению +40 = 0)

это и есть настоящий "пустой" файл !

у тебя же, видимо, далеко непустой, и "тишиной" звук.данные назвать при всем желании никак нельзя


Страницы:   1 2

Наверх

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