Very Hot Topic (More than 50 Replies) Цифровая эмуляция лампового преампа (Прочитано 221 раз)
KMG
Гуру
*****
Вне Форума



Сообщений: 3776
Местоположение: Санкт-Петербург
Зарегистрирован: 06.06.2008
Re: Цифровая эмуляция лампового преампа
Ответ #40 - 17.05.2010 :: 05:39:57
Post Tools
Описание ассемблера, если все же будешь разбираться
http://milas.spb.ru/~kmg/files/datasheets/wavefront/WavefrontIM3201-01.pdf
  

(Вложенный файл удалён)
Наверх
IP записан
 
Брат Пилот
Младший паяльщик
**
Вне Форума


GTLab - forever!

Сообщений: 159
Зарегистрирован: 22.07.2009
Re: Цифровая эмуляция лампового преампа
Ответ #41 - 17.05.2010 :: 09:57:17
Post Tools
Хм!  так гораздо понятней! Спасибо!
а то я малость опешил от обилия ранее не виданных команд...

прикольно, они написали абсолютно свой проц с очень специфическими командами...  Ужас
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
KMG
Гуру
*****
Вне Форума



Сообщений: 3776
Местоположение: Санкт-Петербург
Зарегистрирован: 06.06.2008
Re: Цифровая эмуляция лампового преампа
Ответ #42 - 17.05.2010 :: 10:17:20
Post Tools
Там еще хитрость, адреса дсп суммируются со счетчиком, который плюсуется на каждом периоде сэмпла (он же цикл выполнения всех команд). Так что буфер озу крутится "под ногами" проца, обеспечивая автоматический сдвиг сэмплов без дополнительных софтовых накладок. Еще прочитай в даташите насчет LFO, там программируется частота, амплитуда и форма.
  

(Вложенный файл удалён)
Наверх
IP записан
 
Брат Пилот
Младший паяльщик
**
Вне Форума


GTLab - forever!

Сообщений: 159
Зарегистрирован: 22.07.2009
Re: Цифровая эмуляция лампового преампа
Ответ #43 - 17.05.2010 :: 17:54:27
Post Tools
люди помогите!!!
написал функцию управления громкостью вот такую

static int volume(int dat_in,int PR1)
{
     if (dat_in<0x8000)
     {
        dat_in=(dat_in*PR1/50);
     }
     if  (dat_in>0x7FFF)
     {
        dat_in=(0xFFFF-(0xFFFF-dat_in)*PR1/50);
     }
     return dat_in;

}

PR1 в пределах от 1 до 100

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

вот семплы
этот "чистый" чередуется с х2
http://www.onlinedisk.ru/file/434665/

этот "чистый" чередуется с /2
http://www.onlinedisk.ru/file/434672

вайвформы могу выложить если  надо.

ЗЫ: поиск по сети мне ничего не дает, все использование каких либо специфических библиотек мне не доступно. фактически приходится писать все с нуля.
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
KMG
Гуру
*****
Вне Форума



Сообщений: 3776
Местоположение: Санкт-Петербург
Зарегистрирован: 06.06.2008
Re: Цифровая эмуляция лампового преампа
Ответ #44 - 17.05.2010 :: 18:55:28
Post Tools
Во первых - разрядность типа int зависит от среды прграммирования, она может быть любой от 8-ми бит и далее до бескончности Подмигивание
Если ты хочешь работать с 16-ти битными числами (я так понял ты знак определяешь по старшему биту), то указывай конкретную разрядность short - 16-битное целое.
Во вторых помножив на PR1 ты вылетишь за разрядную сетку. Да и в любом случае максимальный коэффициент у тебя 2, что обеспечивает вылет из разрядной сетки даже при промежуточном расширении разрядности.
Приведение знака у тебя неправильное. Во первых такое приведение корректно только если сначала знаковое привести к беззнаковому, во вторых нужно вычитать из 0, а не из 0xFFFF.

#define VOL_MAX 100

static int volume(short dat_in, short PR1)
{
     if (PR1 > VOL_MAX)
         PR1 = VOL_MAX;
     dat_in = ((long)dat_in * PR1) / VOL_MAX;
     return dat_in;
}
  

(Вложенный файл удалён)
Наверх
IP записан
 
Брат Пилот
Младший паяльщик
**
Вне Форума


GTLab - forever!

Сообщений: 159
Зарегистрирован: 22.07.2009
Re: Цифровая эмуляция лампового преампа
Ответ #45 - 17.05.2010 :: 23:27:36
Post Tools
подумав заменил везде формат данных на short спасибо за идею.

но замена на вами приведенную функцию результата не дала.. 8(
все тот же шум.
попробовал вместо .....*PR1)/VOL_MAX просто разделить на 2
dat_in = ((long)dat_in ) /2;
т.е. в любом случае я никуда вылететь не могу .
итоговое значение в любом случае меньше  исходного, но....

шума стало гораздо меньше, но совсем он не пропал.
опять же, анализ сигнала визуально ничего подозрительного не дал.
есть еще идеи?

ЗЫ: софтовый процессор Ниос 2 32 битный
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
KMG
Гуру
*****
Вне Форума



Сообщений: 3776
Местоположение: Санкт-Петербург
Зарегистрирован: 06.06.2008
Re: Цифровая эмуляция лампового преампа
Ответ #46 - 18.05.2010 :: 06:33:28
Post Tools
> ЗЫ: софтовый процессор Ниос 2 32 битный
Тогда int у тебя скорее всего 32 бита
А если не вызывать функцию шум есть?
Может это просто неудачность платформы с точки зрения оцифровки аудио сигнала.
  

(Вложенный файл удалён)
Наверх
IP записан
 
Oleny
Участник


Re: Цифровая эмуляция лампового преампа
Ответ #47 - 18.05.2010 :: 06:35:59
Post Tools
а что из себя представляет dat_in? отсчет?
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Брат Пилот
Младший паяльщик
**
Вне Форума


GTLab - forever!

Сообщений: 159
Зарегистрирован: 22.07.2009
Re: Цифровая эмуляция лампового преампа
Ответ #48 - 18.05.2010 :: 08:02:03
Post Tools
ну в общем вот вся система

[img=http://www.ufu.co.il/files/exhu3k65z6mgyz0w58wl_thumb.jpg]
SOUND это интерфейс кодека WM8731 написанный на VHDL
у этого интерфейса есть 16-битный вход и выход

далее это идет на сконфигурированный процессор SOUND_CPU (NIOS II)
все остальное выполняется  самим процем.

для программы порт in_port_to_the_DATA_IN  обозначен как dat_in
по завершении выполнения алгоритмов dat_in направляется на out_port_from_the_DATA_OUT
от куда все это идет обратно на SOUND

KMG если не вызывать, то шума нет, думаю пока что сделать модули не использующие громкость, например задержку. и послушать как это звучать будет.
« Последняя редакция: 18.05.2010 :: 08:11:06 от Брат Пилот »  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Oleny
Участник


Re: Цифровая эмуляция лампового преампа
Ответ #49 - 18.05.2010 :: 08:16:44
Post Tools
Даже не знаю... Со сжатыми губами Если этот алгоритм на ПК гоняется(в симуляторе), то, возможно, проблема в отработке на ПК...
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Брат Пилот
Младший паяльщик
**
Вне Форума


GTLab - forever!

Сообщений: 159
Зарегистрирован: 22.07.2009
Re: Цифровая эмуляция лампового преампа
Ответ #50 - 18.05.2010 :: 08:38:35
Post Tools
что-то я не представляю как этот алгоритм прогнать на ПК???
моделировать всю периферию... Ужас
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Oleny
Участник


Re: Цифровая эмуляция лампового преампа
Ответ #51 - 18.05.2010 :: 09:02:24
Post Tools
Ну тогда не знаю... Не должно быть шума ))

Может:?

#define VOL_MAX 100

static long int volume(short dat_in, short PR1)
{
     if (PR1 > VOL_MAX)
         PR1 = VOL_MAX;

     return ((long)dat_in * PR1) / VOL_MAX;
}
« Последняя редакция: 18.05.2010 :: 09:05:25 от »  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Брат Пилот
Младший паяльщик
**
Вне Форума


GTLab - forever!

Сообщений: 159
Зарегистрирован: 22.07.2009
Re: Цифровая эмуляция лампового преампа
Ответ #52 - 18.05.2010 :: 09:45:43
Post Tools
ну во первых я уже заменил данные с int на short, данные у меня 16битные  если я использую только уменьшение громкости то вылететь за пределы значения я никак не могу. так что лонг тут не причем

ну а во вторых... хы вернусь с репы попробую... предложенный вариант .
а вообще  надо проанализировать почему деление на 2 дает гораздо меньше шума чем умножение на *50)/100)

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

  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Jimmy Page
Участник


Re: Цифровая эмуляция лампового преампа
Ответ #53 - 06.06.2010 :: 13:48:23
Post Tools
Эта Тема была перемещена из Гитарные усилители и примочки [move by] Jimmy Page.
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
 
  « Главная ‹ Раздел Наверх этой страницы