Автор Тема: Самодельный гитарный процессор  (Прочитано 8150 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ytrikoz

  • Живу на форуме
  • *******
  • Сообщений: 13062
  • Tone isn't just in the gear, its in your head
Re: Самодельный гитарный процессор
« Ответ #15 : Сентября 07, 2011, 14:19:40 »
Было бы интересен проц с аналоговыми эффектами и усилением/перегрузом с микропроцессорным управлением и коммутацией... причем само управление и коммутация доступно и несложно реализуется на популярных платформах типа ардино и т.п.
И кстати, обе задачи не требуют каких-либо эксклюзивных знаний и опыта, ИМХО желание просто это сделать должно быть своими руками... при условии, когда на рынке полно устройств.

Оффлайн Dying Fetus

  • Moderator
  • *****
  • Сообщений: 10316
  • DIYng Fetus
    • http://cathar.ru
Re: Самодельный гитарный процессор
« Ответ #16 : Сентября 07, 2011, 14:19:56 »
AntonVIP, идея приятно провести время и сделать разработку. О конкуренции в звуке нет ни слова.

Оффлайн AntonVIP

  • Живу на форуме
  • *******
  • Сообщений: 13729
  • Люблю качественную музыку в стиле "мясо"
    • Страница на ютубе
Re: Самодельный гитарный процессор
« Ответ #17 : Сентября 07, 2011, 14:28:20 »
AntonVIP, идея приятно провести время и сделать разработку. О конкуренции в звуке нет ни слова.

Моё ИМХО - тогда уж лучше сделать лямповый цтек, если руки чешутся... К лампе стремится весь мир, а от процессоров все стараются держатся подальше.. Особенно опытные бывалые музыканты - просто шарахаются от этого УГ.. В студиях юзают тоже всем известно что.. Ну, разве что, автор собрался сделать Ахе FX своими руками, тогда спору нет, но это вряд ли  ??? ??? ???..

Оффлайн Dying Fetus

  • Moderator
  • *****
  • Сообщений: 10316
  • DIYng Fetus
    • http://cathar.ru
Re: Самодельный гитарный процессор
« Ответ #18 : Сентября 07, 2011, 14:47:31 »
AntonVIP, а смысл делать однообразые вещи? зайди на тот форум, прочти первый пост или этот внимательно

Оффлайн dSidr Автор темы

  • Частый посетитель
  • **
  • Сообщений: 167
Re: Самодельный гитарный процессор
« Ответ #19 : Сентября 07, 2011, 14:50:05 »
dSidr, http://www.guitar-gear.ru/index.php?p=proj&id=66 может пригодится
чорт, уже готово :o, ладно мы пойдём своим путём и даже без dsp :crazy:

Чтобы не возникало всяких вопросов, мне интересен сам процесс, я не пытаюсь затмить звучанием <device_name> и у меня уже есть проц, звук которого меня вполне устраивает. Возможно, я реализую какие-то вещи, которых мне не хватает в моём процессоре, но даже если и нет - не огорчусь нисколько. Смысл делать что-то самому вовсе не в экономии (наоборот это даже накладно получается, если перевести потраченное время в деньги).

зы: ytrikoz, вот, совершенно верно про эксклюзивность, а то нагромоздили всяких мифов ;)
« Последнее редактирование: Сентября 07, 2011, 14:52:59 от dSidr »

Оффлайн dSidr Автор темы

  • Частый посетитель
  • **
  • Сообщений: 167
Re: Самодельный гитарный процессор
« Ответ #20 : Сентября 16, 2011, 17:16:20 »
Для начала общие моменты.

Девайс собирается на базе STM32F103 с ядром Cortex M3. На борту 128 кб флэш памяти под программу и 20 кб оперативы. Максимальная частота частота ядра 72МГц.
Программирую из под линукса, где установлен кросскомпилятор и консольный прошивальщик (под который я слепил простенький гуй). В качестве редактора и менеджера проектов использую QtCreator.

Копипаста
Цитировать
Потихоньку приступаем к реализации нашего амбициозного проекта. И начнём, как это водится, с середины. Задумайтесь ненадолго и не читая следующего абзаца попробуйте ответить на вопрос: какой эффект в процессоре (и не только) самый важный для гитариста?

Правильный ответ - байпасс (даже если вы так не считаете на моё мнение повлиять не сможете, и начнём мы именно с него).

Как известно, правильный Ъ-байпасс сохраняет всю теплоту звука являясь классикой жанра, а также предметом особой гордости любого примочкостроителя. Но в данном случае слово Ъ не несёт в себе никакой информации ни о его надёжности ни о сложности реализации (это всего лишь контакты переключателя, соединяющие вход с выходом). И вообще, это не наш путь, мы будем делать холодный цифровой байпасс для митола. :)

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

Оцифровка входного сигнала.

Как известно, частота дискретизации является не последним параметром, влияющим на качество звука. Не менее важно, чтобы она была фиксированной, поэтому для синхронизации оцифровки (а также вывода) сигнала будем использовать один из таймеров. И выберем эту частоту не абы какую, а самую что ни наесть стандартную (а то мало ли что :hitrez:). Мне нравится 48000 Гц.

Не хотелось бы плодить невежество, знаете ведь как в интернетах - один объяснил на пальцах, другой понял по-своему и, посчитав это объяснение слишком сложным, адаптировал для не таких умных как он. Поэтому не стану объяснять суть теоремы (тем более, что сам не до конца её понимаю ;D), только отмечу два важных момента. Первый из них очевиден - нет никакой возможности воспроизвести гармонику с частотой выше половины частоты дискретизации. Второй (уже не такой очевидный) - выше этой частоты (половины от дискретизации) будет сплошное бяко. В данном случае бяко будет выше 24кГц, "тебе страшно? мне нет"(с)

В результате, получается у нас времени на обработку очередного сэмпла при тактовой частоте 72МГц с учётом "туда-сюда" чуть поболе 1000 тактов. Прямо скажем, не жирно, но постараемся уложиться, на основное должно хватить.

Теперь разрядность, я уже писал что в STM32F103 есть встроенные АЦП (аж 2 штуки) с разрядностью 12 бит. Кстати вот этот жук

выглядит чуть более по-китайски, чем что-то среднекитайское, но вроде как работает, и вполне неплохо.
Так вот, для иллюстрационного проекта хватило бы и 12 бит, но здесь достаточно быстрый АЦП и можно легко увеличить разрядность до 16 бит оверсемплингом (делаем 16 измерений и складываем результаты). Конечно же, излишне самоуверенно заявлять, что всего 16 измерений прям дадут 4 дополнительных значащих разряда (к тому-же, у меня эвалюэйшн борд, и таких категорий как "аналоговая земля" здесь не существует в принципе). Но хоть сколько-то добавится, пусть будет, заодно посмотрим и сравним, тем более это почти ничего нам не будет стоить.

Итак, алгоритм простой:
1. По таймеру вызывается прерывание - здесь выводится результат предыдущей обработки и запускается новый цикл преобразования.
2. АЦП ацпирует, контроллер DMA пишет измерения в память.
3. По заполнении буфера контроллер DMA генерирует прерывание, там мы складываем результаты и выпихиваем получившуюся цифирьку как входной сигнал для обработки.

Красивая картинка номер один:

Жёлтая кривулина - обработчик прерывания по таймеру (при входе дёргаем вверх, перед выходом вниз), это наша синхронизация дискретизации. Синяя - прерывание контроллера dma (то-же самое на входе дёргаем ногу вверх, делаем чо надо и перед выходом - вниз).
Как видите всё по плану, выше указанные пункты 1, 2 и 3, 3-й немного тилипаица, потому что ацп не отключаем и первое измерение попадает после включения пдп как придётся (думаицо мне это всё мелочи, разве что впечатление от картинки немного портится).

Частота дискретизации - обведена красным (если не видно, там написано "48.0021kHz").

Буквой t отмечено время на обработку - её мы пристроим к первому пункту (прерывание от таймера) на всё время съёма следующего измерения и (даже можем потеснить 3-й пункт)

Не удивляйтесь, как много времени занимают 1 и 3, здесь почти половина времени уходит на дёрганье ножек (пока оставим для контроля) + всё делается через библиотечные функции (потом можно будет это дело выкинуть и работать с периферией напрямую через регистры).

ЦАП

Теперь наша задача - преобразовать цифру в аналоговый сигнал. Проблема в том, что ЦАПов на борту контроллера и нет вовсе. Выкрутиться из ситуации помогут таймеры, на которых мы реализуем ШИМ (широтно-импульсная модуляция, по-басурмански PWM).

Для тех кто не в курсе шим - это приближение среднего значения дискретного сигнала (способного принимать 2 значения) за определённый период к какому-то уровню между этими значениями. Можете нагуглить картинок там всё доступно нарисовано.

Прикинем, что у нас получается, не закапываясь в глубины математики и используя только расчёты на которые хватает пальцев одной руки (ладно, двух ;)).
у нас есть:
16 бит, которые надо выплюнуть на ШИМ (максимальное значение получается 65535)
максимальная частота таймера = внутренней частоте ядра = 72МГц (тут есть некоторые нюансы, но я про них не скажу))))
получается:
частота ШИМ = 72МГц/65535 = 1.1кГц :o
кашмар-катастрофа, шим медленней сигнала, который мы собираемся воспроизводить!!!

Заходим с другого края - делаем два 8-битных ШИМа и смешивая результаты в соотношении 1/256, городим из них 16-битный ЦАП. Для начала это будет выглядеть вот так:

частота ШИМ = 72МГц/255 = 282кГц
Супииир :yahoo:, частота ШИМа почти в 12 раз выше максимальной частоты воспроизводимого сигнала.
Вроде бы, основное всё если интересны детали, смотрите оригинал, либо задавайте вопросы тут.

Оффлайн agile

  • Завсегдатай
  • ***
  • Сообщений: 443
  • Let Eat Bee!..
Re: Самодельный гитарный процессор
« Ответ #21 : Сентября 16, 2011, 19:52:50 »
На вход лампа не предполагается?.. :rolleyes:

Оффлайн akl

  • Живу на форуме
  • *******
  • Сообщений: 8114
  • не шарю ваще
Re: Самодельный гитарный процессор
« Ответ #22 : Сентября 16, 2011, 20:51:37 »
черт. там же так мелко все. даже страшно. :hmmm:

Оффлайн dSidr Автор темы

  • Частый посетитель
  • **
  • Сообщений: 167
Re: Самодельный гитарный процессор
« Ответ #23 : Сентября 17, 2011, 09:11:33 »
На вход лампа не предполагается?.. :rolleyes:
:D вроде пока нет, а чо, надо?

akl, Ctrl+колёсико, или читай в оригинале ;)

Оффлайн VaJI

  • Новичок
  • *
  • Сообщений: 45
Re: Самодельный гитарный процессор
« Ответ #24 : Сентября 19, 2011, 01:04:32 »
...но здесь достаточно быстрый АЦП и можно легко увеличить разрядность до 16 бит оверсемплингом (делаем 16 измерений и складываем результаты).

dSidr, Переход на 16бит принципиально?))) перенос из разряда в разряд не будет ли заметна? Ведь лишняя операция то есть даже 2.. т.е.
получается если идет два 8-битных ШИМа (Lo/Hi как я понял их сначала нужно разделить) далее идет сам 16-битный ЦАП, т.е. чтобы пройти сигналу в ЦАП нужно сделать проверку на перебор во втором ШИМе(намутить флаг переполненого разряда) там реальная частота получиться около 15-17КГц... или ошибаюсь?

Оффлайн dSidr Автор темы

  • Частый посетитель
  • **
  • Сообщений: 167
Re: Самодельный гитарный процессор
« Ответ #25 : Сентября 19, 2011, 12:06:01 »
dSidr, Переход на 16бит принципиально?))) перенос из разряда в разряд не будет ли заметна? Ведь лишняя операция то есть даже 2.. т.е.
даже 16 :) и даже больше, если считать операции цикла - это мелочь по сравнению со всем остальным, а поднять разрядность ну очень хочется. Во-первых какая-никакая фильтрация, во-вторых увеличить динамический диапазон входного сигнала. Пока это на уровне ощущений, но ощущения очень часто помогают.
получается если идет два 8-битных ШИМа (Lo/Hi как я понял их сначала нужно разделить) далее идет сам 16-битный ЦАП, т.е. чтобы пройти сигналу в ЦАП нужно сделать проверку на перебор во втором ШИМе(намутить флаг переполненого разряда) там реальная частота получиться около 15-17КГц... или ошибаюсь?
Нет, никакого перебора, в результате всяких обработок из входного сигнала получаем 16-битный выходной. Старшие 8 разрядов являются параметром для high-шима, младшие - для low. Частота обоих одинакова 282кГц (поскольку оба эти шима передают величину от 0 до 255).

Оффлайн VaJI

  • Новичок
  • *
  • Сообщений: 45
Re: Самодельный гитарный процессор
« Ответ #26 : Сентября 19, 2011, 18:10:15 »
Частота обоих одинакова 282кГц (поскольку оба эти шима передают величину от 0 до 255).
а на выход можно поставить УКВ передачик чтоб по радио послушать как ты играешь ;D

... и добавил:

Идея интересная :)

Оффлайн Mr. Gitarist

  • Эксперт
  • *****
  • Сообщений: 1152
Re: Самодельный гитарный процессор
« Ответ #27 : Сентября 21, 2011, 08:37:17 »
Помимо
Было бы интересен проц с аналоговыми эффектами и усилением/перегрузом

Помимо этого, было бы круто уделить внимание качеству симуляции кабиинетов, например набор качественных импульсов "приладить"...

ЗЫ: Говорю потребительским языком, так что звиняйте если что не так :)

Оффлайн Alex(Molecul)

  • Эксперт
  • *****
  • Сообщений: 2260
Re: Самодельный гитарный процессор
« Ответ #28 : Сентября 21, 2011, 08:44:37 »
подпишусь, за идею +

Оффлайн Gunpowder

  • Эксперт
  • *****
  • Сообщений: 1096
Re: Самодельный гитарный процессор
« Ответ #29 : Сентября 21, 2011, 09:38:15 »
Странная тема. И, кажется, пустая. Какой Cortex M3, какие 72мГц, какие 16 бит?

Я, конечно, мало понимаю в разработке микропроцессорной техники. Но немного понимаю в ЦОС.

В начале темы нет главных исходных моментов:
1) не опеределено тех задание, что должен делать девайс и каким задачам отвечать;
2) нет понимания, что он должен делать - не расчитаны необходимые вычислительные мощности и возможности;
3) необходимые мощности и возможности не определили необходимую архитектуру и аппаратные решения;

Вместо этого проектирование ведется с п.3 в обратном порядке, так как бы делал инженер-схемотехник не понимая, что с этим потом делать (((