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

Вниз

Насчёт звука   Найти похожие ветки 

 
fiction   (2003-12-05 21:35) [0]

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


 
Asteroid ©   (2003-12-05 22:25) [1]

Битность данных зависит от формата, который указывается при открытии устройства чтения.
" Даже у звукового файла с записанной тишиной" - откуда данные считываются, с микрофона или файла?
Код в студию, please.


 
fiction   (2003-12-06 13:52) [2]

Про битность данных я всё знаю. Тут такая проблема. Есть у меня wav-файл(в Samplitude сделал), в нём нет ничего, просто тишина.
Так вот когда я его представляю графически, амплитуда получается всё время максимальная. Причём выборки идут так примерно(16 бит)-
25 21 48 34 56 18 65518 516 655523.......
С самого начала маленькие значения, типа тишина, а потом сразу почти максимум. И получается, что макимальное значение на каком-то отрезке - всегда самое большое. Вот.


 
Digitman ©   (2003-12-06 14:19) [3]


> в Samplitude сделал


каким образом ? программным синтезом "тишины" или записью с а/карты, ко входу которой просто ничего не подключено ?

во втором случае ты записал далеко не тишину


 
fiction   (2003-12-07 17:01) [4]

В том файле вообще ничего не было, даже не записывалось ничего.
Он в прямом смысле пустой. Так вот как мне получить нормальную амплитуду звуа? Желательно чтобы её можно было как-то привязать к децибелам.


 
Asteroid ©   (2003-12-07 20:39) [5]

Просмотри файл вручую. Если там одни нули (не считая заголовка) - значит у тебя ошибка при чтении.
P.S. Для 8 бит значения задаются от 0 до 255 со средним ("нулем") 128. Для 16 бит - от -32768 до 32767 со средним 0. Так что значение "65518" - это -12


 
Digitman ©   (2003-12-08 08:13) [6]


> fiction


так ты, выходит, заголовок wav-файла пытался изобразить графически что ли ?!
))


 
fiction   (2003-12-08 15:57) [7]

Да нет, заголовок я пропустил, тут всё нормально. Чё-то я не понял, если максимальные значения - 32767, то как у меня получается >65000? И чё такое -12?


 
Sergo ©   (2003-12-08 16:00) [8]

А ты эти данные через фильтры и FFT прогонял?


 
fiction   (2003-12-08 16:35) [9]

нет


 
Digitman ©   (2003-12-08 17:06) [10]


> fiction


> заголовок я пропустил, тут всё нормально


так если заголовок ссылается на "пустые" данные (т.е. размер оцифрованного потока = 0), что же ты пытаешься графически представить ? представлять-то нечего !


 
fiction   (2003-12-09 19:17) [11]

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


 
konstantinov ©   (2003-12-10 02:49) [12]

Тишина ( для 8 бит ) = 127 -  в каждом байте wav - файла. ( кроме заголовка ).Максимальная амплитуда от 0 до 255.= byte;
Для 16 бит = 0 в каждом байте.Максимальная амплитуда от 32767 до -32767 = Smallint;


 
Digitman ©   (2003-12-10 08:42) [13]


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


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

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


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

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

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


 
Digitman ©   (2003-12-10 08:48) [14]

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

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


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

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


 
Digitman ©   (2003-12-11 08:42) [16]


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


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

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

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


 
Digitman ©   (2003-12-11 08:45) [17]

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


 
_VectoR_   (2003-12-11 11:25) [18]

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


 
Digitman ©   (2003-12-11 12:04) [19]

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

в дан.же случае ф-ция 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 12:37) [20]

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


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

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


 
Evgeny V ©   (2003-12-13 05:36) [22]

> fiction   (10.12.03 19:04) [15]

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


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

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


 
Digitman ©   (2003-12-15 08:37) [24]


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


стоп. если речь идет конкретно о 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-18 22:49) [25]

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


 
Asteroid ©   (2003-12-18 23:41) [26]

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


 
Digitman ©   (2003-12-19 08:21) [27]


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


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

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


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

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

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


 
Digitman ©   (2003-12-20 12:14) [29]


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


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


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


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


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

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

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


 
Digitman ©   (2003-12-24 16:12) [31]


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


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

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


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

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



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

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

Наверх




Память: 0.53 MB
Время: 0.026 c
1-1080677294
Mishenka
2004-03-31 00:08
2004.04.18
Как в методе получить указатель на перем-ю, которая вызвала метод


14-1080350278
default
2004-03-27 04:17
2004.04.18
лит-ра


4-1076316067
Samovar
2004-02-09 11:41
2004.04.18
Список API функций в системных dll


14-1079564171
Rouse_
2004-03-18 01:56
2004.04.18
С Днем Рождения 18 Марта


7-1076492192
Ермак
2004-02-11 12:36
2004.04.18
SECURITY ATTRIBUTES





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский