реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Сложение цифрового звука, на хмеге
zombi
сообщение Sep 7 2011, 09:17
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Как правильно сложить несколько цифровых звуков в один?
К примеру имеем два 8-ми битных потока (00H-low 80H-middle FFH-high).
Достаточно ли просто сложить их как два 8-ми битных числа и выдать в 9-ти битный DAC?
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 7 2011, 10:51
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Да
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 7 2011, 13:59
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(XVR @ Sep 7 2011, 13:51) *
Да

О.К. я так и думал.

Но меня терзают смутные сомнения biggrin.gif
000H+000H= 000H ок
080H+080H=100H ок
0FFH+0FFH= 1FEH младшего бита не хватает wacko.gif
Go to the top of the page
 
+Quote Post
ae_
сообщение Sep 7 2011, 14:23
Сообщение #4


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(zombi @ Sep 7 2011, 22:59) *
...
0FFH+0FFH= 1FEH младшего бита не хватает :wacko:

При складывании двух 8 битных потоков не должен сам собой получиться результат 9 бит.
Попробуйте среднее арифметическое: (A+B)/2; (A+B+C)/3; (A1+A2+A3+...+AN)/N.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Sep 7 2011, 14:47
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(zombi @ Sep 7 2011, 16:59) *
0FFH+0FFH= 1FEH младшего бита не хватает wacko.gif

Ну и холера с ним! Если, к примеру, перемножать FF и FF, то не хватает уже целой кучи чисел до FFFF.
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 7 2011, 19:23
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(ae_ @ Sep 7 2011, 17:23) *
Попробуйте среднее арифметическое: (A+cool.gif/2; (A+B+C)/3; (A1+A2+A3+...+AN)/N.

Но при этом каждый из звуков станет тише в два раза wacko.gif
Go to the top of the page
 
+Quote Post
Make_Pic
сообщение Sep 8 2011, 00:00
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 9-10-04
Из: Россия, Пермь
Пользователь №: 828



Цитата(zombi @ Sep 7 2011, 22:23) *
Но при этом каждый из звуков станет тише в два раза wacko.gif

"Вам шашечки или ехать?" ©
После DACа наверно стоит усилитель? Добавьте усиление ровно в два раза!
Go to the top of the page
 
+Quote Post
ae_
сообщение Sep 8 2011, 01:07
Сообщение #8


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



2 zombi
Тогда рассматривайте сигнал со знаком, не как 0…255, а как -128…0…+127.
Уже без сложения видно, что относительно нуля +max и -max не совпадают.
Если их складывать, то эта разница будет только увеличиваться:
-128+(-128)=-256
0+0=0
127+127=254
wiki: Дополнительный_код
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 8 2011, 06:38
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Думал, думал но ничего лучше чем :
Цитата(ViKo @ Sep 7 2011, 17:47) *
Ну и холера с ним!

не придумал biggrin.gif laughing.gif


Цитата(ae_ @ Sep 8 2011, 04:07) *
Тогда рассматривайте сигнал со знаком, не как 0…255, а как -128…0…+127.

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


Цитата(Make_Pic @ Sep 8 2011, 03:00) *
"Вам шашечки или ехать?" ©
После DACа наверно стоит усилитель? Добавьте усиление ровно в два раза!

Да, но при складывании и сдвиге каждый звук станет меньше на один разряд. А если надо 16 звуков сложить cranky.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Sep 8 2011, 07:03
Сообщение #10


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



При делении и отбрасывании мы теряем младший разряд, что чуть-чуть скажется на качестве звука.
Можно (и нужно, на мой взгляд) использовать все разряды, получающиеся после сложения и деления. ЦАП, наверное, не 8-битовый?
А поделить на 2 - так это просто завести на ЦАП разряды, сдвинутые на один к младшему, все 9. А хотите громче сделать, заведите все 9 без сдвига. Хотя, конечно, можно и усилением после ЦАП сделать то же самое, или выбором опорного напряжения для ЦАП. В-общем, лучше завести разряды так, чтобы на старшем разряде ЦАП был старший разряд полученной суммы.
Складывая 16 звуков, получим 4 дополнительных старших разряда. Усильте результат в 4 раза, и всех делов.

Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 8 2011, 12:52
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(ViKo @ Sep 8 2011, 10:03) *
Можно (и нужно, на мой взгляд) использовать все разряды, получающиеся после сложения и деления. ЦАП,

biggrin.gif biggrin.gif biggrin.gif именно это и написано в моём 1 сообщении


Цитата(ViKo @ Sep 8 2011, 10:03) *
А хотите громче сделать, заведите все 9 без сдвига.

Если вывести в ЦАП все 9 бит (получившихся в результате сложения двух байт) то громкость каждого звука не изменится.
Go to the top of the page
 
+Quote Post
ae_
сообщение Sep 8 2011, 13:47
Сообщение #12


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(zombi @ Sep 8 2011, 21:52) *
Если вывести в ЦАП все 9 бит (получившихся в результате сложения двух байт) то громкость каждого звука не изменится.

Берём сигнал L, который изменяется 0…255 и сигнал R, который всегда равен 128 (=0, для наглядности).
Складываем их, получаем выходной сигнал 128…383, который подаём на 9-бит цап (0…511).
Получаем на выходе макс. 50% заполнение 9-бит ШИМ, при этом исходный сигнал L имел размах 100% 8-бит ШИМ.
Как ни складывай, но в суммарном сигнале, если его нормировать, т.е. привести к полной шкале, каждый из складываемых сигналов будет ослаблен.
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 8 2011, 14:40
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



"нормировать", "привести" Согласен, все в этом мире относительно biggrin.gif
Go to the top of the page
 
+Quote Post
ae_
сообщение Sep 8 2011, 15:34
Сообщение #14


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Нормировать и привести - без кавычек. Хор всегда громче, чем отдельные голоса в его составе.
Либо один сигнал=100%, тогда сумма двух сигналов=200%
Либо сумма=100%(нормирование), тогда один сигнал=50%
В обоих случаях сигнал лишь половина от суммы.
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 8 2011, 16:26
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(ae_ @ Sep 8 2011, 18:34) *
Хор всегда громче, чем отдельные голоса в его составе.


Согласен на все 100%.
При этом громкость каждого голоса не зависит от того в хоре он поёт или нет.

Вы в п#4 предлагаете среднее арифметическое на что я Вам отвечаю в п#6.
И затем я не пойму Вы в п#12 возражаете или согласны?
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 12:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01479 секунд с 7
ELECTRONIX ©2004-2016