Форум: "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