LINUX.ORG.RU

Гитарный звук и Linux

 , ,


8

7

Создание такого треда давно уже назрело, так как обсуждение вопроса гитарного звука в Linux вспыхивает оффтопиком то в одном месте, то в другом. Приглашаю всех интересующихся обсуждать вопрос здесь.

Кастую ist76, Chelobaka, AP.

Обсуждаем вопросы использования guitarix, rakarrack, tuxguitar, VST, LV2, LADSPA плагинов и прочего.

Практический результат обсуждений можно увидеть тут.

https://github.com/olegkapitonov/Kapitonov-Plugins-Pack

Версия 1.0, бинарники

https://github.com/olegkapitonov/Kapitonov-Plugins-Pack/releases/tag/v1.0

Прямая ссылка на скачивание всех бинарников

https://github.com/olegkapitonov/Kapitonov-Plugins-Pack/releases/download/v1....

Перемещено leave из multimedia

Перемещено jollheef из talks

Перемещено leave из multimedia

★★★★★

Ответ на: комментарий от curufinwe

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

Deleted ()
Ответ на: комментарий от Deleted

Есть некоторая зависимость от плотности записи на плёнке, но никаких дискретизирующих тактов у него в принципе нет.

В том то и дело что есть. Ток подмагничивания - это высокочастотные импульсы, которые намного превышают по амплитуде сам полезный сигнал. То есть сигнал пишется не непрерывно, а как бы тактируется импульсами подмагничивания.

curufinwe ★★★★★ ()
Ответ на: комментарий от curufinwe

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

Получается на плёнку пишется что-то вроде DSD-потока?

templarrr ★★★★★ ()
Ответ на: комментарий от curufinwe

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

Deleted ()
Ответ на: комментарий от curufinwe

Какая-то разница, возможно, и есть, но она не настолько значимая чтобы этим заморачиваться.

Именно так я и написал

ist76 ★★★★★ ()
Ответ на: комментарий от templarrr

Его можно проанализировать программно и перед тем, как выяснять слышна ли разница узнать существует ли эта разница.

Как быть, если при захвате встройкой разницы на графиках нет, а при захвате 1212m она есть? И как про это узнать, если, у нас есть только встройка?

Это как?

Это AVID/Lynx/RME/любое другое оборудование, предназначенное для работы со звуком, а не озвучивания системных звуков ОС

А у тебя разве не активные датчики? Если да, то зачем дибокс? У активов ведь линейный выход.

У меня разные датчики. Но ни пассивные ни активные, в любом случае не выдают сигнал линейного уровня. Активные в крайнем, случае, можно пихать в линейный вход, но не более того.

Если оборудование хотя бы не совсем днище, то потеря деталей на слух не слышна, это раз.



Это в теории, или сам пробовал захватывать поочерёдно intelHDA и какой-нибудь Juli@ хотябы CD-audio?

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



Ага. Например сделать lowpass на 2,4кгц. Потери будут везде одинаковые, значит разницу всё равно будет слышно. А что, нет?

ist76 ★★★★★ ()
Последнее исправление: ist76 (всего исправлений: 2)
Ответ на: комментарий от ist76

Ага. Например сделать lowpass на 2,4кгц.

Ну это уже детсад какой-то пошел. Или твоя карта реально его делает?

templarrr ★★★★★ ()
Ответ на: комментарий от templarrr

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

ist76 ★★★★★ ()
Ответ на: комментарий от templarrr

Не совсем, квантования по уровню то там нет (ну практически). А по времени - идеальной непрерывности нет. Вот на виниле - там да, непрерывно.

curufinwe ★★★★★ ()
Ответ на: комментарий от ist76

Это в теории, или сам пробовал захватывать поочерёдно intelHDA и какой-нибудь Juli@ хотябы CD-audio?

Есть результаты проб? Тоже очень интересная тема.

curufinwe ★★★★★ ()
Ответ на: комментарий от curufinwe

понадобится источник
не уровня CD-rom 98-го года с линейным выходом, а дека, за нормальные деньги на момент выпуска, и лучше бы - какой-нибудь DVD-A/SACD, плохая «звуковая карта» и «хорошая звуковая карта»

и, кстати, возник теоретический вопрос:
хорошо, SNR, спектрограмму мы можем померять
а вот чем померять способность оборудования воспроизводить быструю атаку в разных частях диапазона?

ist76 ★★★★★ ()
Ответ на: комментарий от ist76

а вот чем померять способность оборудования воспроизводить быструю атаку в разных частях диапазона?

Импульсным откликом.

templarrr ★★★★★ ()
Ответ на: комментарий от ist76

Этот простой и наглядный пример взят с потолка, а не с реального железа.

templarrr ★★★★★ ()
Ответ на: комментарий от templarrr

Импульсный отклик снимается одиночного сэмпла полной амплитуды
Дело полезное, но синтетика
А если я хочу посмотреть, насколько быстро моя карточка может выдать хэт? Вдруг он сразу из нее не полный выйдет (как в файле) а только отсчётов через 5 станет максимальным. А если не хэт, а бочка? А если звон об лад? Чем мне тут поможет IR?

ist76 ★★★★★ ()
Ответ на: комментарий от ist76

Это полностью определяется АЧХ. То есть отклик на любой сигнал однозначно связан с АЧХ, имея ее можно рассчитать отклик на что угодно в любом матпакете. Ну это если не учитывать просадку напряжения питания во время импульса. А это будет не в ЦАПе, а намного позднее, там где наращивается мощность.

АЧХ ЦАПа даже у мобильного телефона такая, что атаку оно отработает без проблем.

curufinwe ★★★★★ ()
Ответ на: комментарий от ist76

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

templarrr ★★★★★ ()
Ответ на: комментарий от curufinwe

А кинь ещё пожалуйста, в спектронализер вот эту парочку:
https://yadi.sk/d/LIgmGhH03Xh7wA
это прямой сигнал с конденсаторного микрофона, помимо всякой обработки
будут различия, нет?

ist76 ★★★★★ ()
Ответ на: комментарий от ist76

Практически то же самое. Один файл стабильно ниже на 1-1,5 дБ, видимо недовыровнена громкость на это значение.Есть случайные всплески. Выше 15 кГц всплески сильные, не совпадающие. С чего бы это. Но там общий уровень на 50 дБ ниже чем на 1 кГц.

curufinwe ★★★★★ ()
Ответ на: комментарий от curufinwe

Прикольно.
Не забываем, что вот это всё - снято после гитарного динамика. Считай - после лопасса на 5кГц. Интересно, что будет, если без него сделать?Пожалуй, я всё-таки парочку свипов прогоню.

ist76 ★★★★★ ()
Последнее исправление: ist76 (всего исправлений: 1)

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

Ещё раз добрым словом вспомнил сисаунд, в котором есть встроенный осциллограф.

Deleted ()
Последнее исправление: Chelobaka (всего исправлений: 1)
Ответ на: комментарий от Deleted

А, всё, нашёл. В составе x42plugins есть.

Deleted ()
Ответ на: комментарий от curufinwe

curufinwe, чкнр я натыркал!!! Ты пробовал fi.spectral_tilt ?

Я ковырялся и плюкался туда-сюда в поисках команды smooth, что-то не нахожу её и не пойму как она работает. И подумал, а не добьюсь ли я того же самого spectral_tiltом?. Вот моя наколенная вундервафля.

declare name "overdrive-try";

import("stdfaust.lib"); 
import("filter.lib");

process = stomp with {
    volume = hslider("volume",2.2,1.0,5.0,0.1);
    boost = hslider("boost",5,1,10,0.01);
    peak = hslider("peak",0.5,0.0,1.5,0.1);
    
    N = 3;
    f0 = hslider("lofreq1",415,20,5000,1);
    bw = hslider("bandwidth",436,20,10000,1);
    alpha = hslider("slope",-0.19,-1,1,0.01);
    rc1_freq = 15.9;
    
    signal = _;
    
    
    stomp = fi.highpass(1,rc1_freq): _*boost: (min(peak):max(-peak)): fi.spectral_tilt(N,f0,bw,alpha): _*volume;
};

Пускаю через него синусоиду - красиво так он её смягчает, правда, на второй стороне островато получается. Но это смотря на какой частоте синусоиду делать, и slope, lofreq и bandwidth много чего меняют. А гитарный звук подсунул, сыро, конечно. Но интересно. День убит с интересом :)

Deleted ()
Последнее исправление: Chelobaka (всего исправлений: 1)
Ответ на: комментарий от Deleted

На гитаре бы лучше поиграл, честное слово

ist76 ★★★★★ ()
Ответ на: комментарий от Deleted

Интересно конечно, но это не мягкий перегруз. Для овердрайва сразу резать должно мягко, а не смягчать после клиппера. Потому что вот этот min max на реальном гитарном сигнале, а не синусе, просто убьет все что выше ограничения. А мягкий перегруз - нет.

Вот для дисторшна так можно. Я пока смягчаю просто фильтром первого порядка. Можно попробовать и этим, но в настоящих дисторшнах вроде близко именно к первому порядку.

curufinwe ★★★★★ ()
Ответ на: комментарий от curufinwe

А, не, я не имел в виду непосредственно овердрайв, я просто в поисках на такое набрёл. Там пилы можно формировать и мягкую и скошенную и акулий плавник. онторесно.

С синусами же делал так - буст до уровня чуть больше единицы и синус синуса :). Тут, конечно, проблема в том, чтобы не давать завернуть синусоиде в обратную сторону при большем усилении. И тут мне без IFов никак не думается, я на станочной логике застрял. А тут надо математицски.

Deleted ()
Ответ на: комментарий от Deleted

Надо все-таки учитывать сложность спектра гитарного сигнала. Что красиво на синусе, не факт что звучать на гитаре нормально будет. То что клиппер отрезал, назад не восстановишь ничем.

Еще надо бы учитывать явление алиасинга, которое порождает клиппер на min и max. Это дает гармоники в диссонанс с основным тоном. Но с гитарой тут попроще, у нее спектр до 6 кГц и все по сути, частота дискретизации даже 48 кГц с нормальным запасом идет. А вот для синтов проблема с таким ограничителем может серьезная нарисоваться. А у меня пока во всех плагинах это простое отрезание присутствует так или иначе.

curufinwe ★★★★★ ()
Ответ на: комментарий от curufinwe

Но с гитарой тут попроще, у нее спектр до 6 кГц

Это только если после динамика, да и то
Кое что у гитары есть и после 6 и вот это маленькое кое-что очень важно. По крайней мере, включение хайпасса на 6 звук преображает.

ist76 ★★★★★ ()
Ответ на: комментарий от curufinwe

А, кстати, спросить хотел - вот есть примеры фаустовские, компрессор, дисторшн и пр. так там вот чо:

declare name "distortion";
declare version "0.0";
declare author "JOS, revised by RM";
declare description "Distortion demo application.";

import("stdfaust.lib");

process = dm.cubicnl_demo;
И что теперь, в исходниках искать этот dm.cubicnl_demo ? Ты их находил? мне компрессор и лимитер хочется посмотреть.

Deleted ()
Ответ на: комментарий от curufinwe

О, так они всё в один файл запхнули... А я искал отдельно :) Спасибо

Deleted ()

curufinwe, дружище, помоги! Пытаюсь на GNU Octave заюзать какойнить рандомайзер и ничего не получается. Берём rand(), согласно инстракшуну - должен давать число в пределах 0-1 (говорят, используя /dev/random). На практике получаю всегда 1. От чего это так? Ты не считаешь на Окаве?

И хотелось как-то оживить тему. Играть опять некогда, а вот алгоритм овердрайва волнует. Ну и тебя растолкать, а то лежишь себе там на Минском море, пузо греешь, а педали остыли. :)

И вот ещё, https://www.youtube.com/watch?v=s_yPZRsUMCw&t=1934s - Мне волосатик пондравился.

Deleted ()
Ответ на: комментарий от Deleted

Берём rand(), согласно инстракшуну - должен давать число в пределах 0-1 (говорят, используя /dev/random). На практике получаю всегда 1. От чего это так? Ты не считаешь на Окаве?

Я октаву практически не использую. Не сталкивался с проблемами. Сейчас проверил - у меня rand() работает нормально. Очень странно, что у тебя не работает.

И хотелось как-то оживить тему.

Я пока засел за другими работами.

С плагинами - проблема с GUI, на чем забуксовало. Я разобрался как ее решить - перевести весь gui на cairo. Опробовал примеры на cairo - отлично, как раз то что нужно. Но надо написать с нуля код, разобравшись с api.

Файловый диалог - нужно тупо дернуть из DE. Вот и все проблемы.

Это такой нормальный кусок работы, не просто улучшения понемногу, не могу себя заставить его провернуть. Но если это сделать - все продвинется вплотную к завершению. На следующей неделе займусь - сколько можно тянуть.

Играю практически каждый день, только через свои плагины. Меня устраивает, как оно звучит. Два плагина педалей плюс плагин ампа дают весь спектр - от клина до экстремального металла.

Что интересно - на синглах металл нормально не получается ни при каких настройках. Но очень помогает имитация хамбакера по твоей методике - с компрессором и эквалайзером. Сразу начинает звучать как положено. Хочу давно оформить в плагин, но пока руки не доходят.

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

И вот ещё, https://www.youtube.com/watch?v=s_yPZRsUMCw&t=1934s - Мне волосатик пондравился.

Звук класс.

curufinwe ★★★★★ ()
Последнее исправление: curufinwe (всего исправлений: 1)
Ответ на: комментарий от curufinwe

Блин. Я туплю. Мне нужен график, где X - массив от 0 до 10 с шагом 0.01, а Y - произвольное число от 0 до 1. Я пишу:

X=0:0.01:10
Y=randr()
plot(X,Y)
А он, собака, берёт ОДИН раз рандом для Y и всё, что понятно математически, но не понятно программически. И почему-то всегда берёт единицу вначале? Что за псевдослучайность такая? Ну это так, мысли вслух.

Попробовал ещё задумку для овердрайва и посмотреть, что происходит с синусоидой под разнми выкрутасами и (опять же, случайно) напоролся ещё на один разрыв шаблона. Вот такой код:

t=0:0.01:10
sine=sin(t) #Создаём синусоиду
a=sqrt(sine) #Корень верхней полуволны
b=sqrt(-sine) #Корень нижней полуволны

wave=a-b #Суммируем фазы

wave_sine=sin(wave) #Синус волны
plot(t,sine,t,wave,t,wave_sine)

Бред (с моей точки зрения) заключается в том, что синус единицы равен ~ 0.84, а синус получившейся волны (максимум которой единица) выходит за пределы единицы, каких 1.26 получается (на глаз по графику смотрю). Я вообще ничего не понимаю. Я даун. Научи меня считать.

Deleted ()
Ответ на: комментарий от Deleted

Да все просто. У тебя а и b содержат комплексные числа, потому как ты корень из отрицательных полуволн синусоид берешь. А потом синус комплексных чисел получается больше единицы.

По поводу ранома - попробуй

rand(1,100)

это генерирует вектор из 100 случайных чисел от 0 до 1.

curufinwe ★★★★★ ()
Ответ на: комментарий от Deleted

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

curufinwe ★★★★★ ()
Ответ на: комментарий от curufinwe

Погоди, вот берём шаг, где a равной 1 и b равной 0, вычитаем, берём синус, и?... Почему в Фаусте я такого не наблюдал?

Deleted ()
Ответ на: комментарий от Deleted

Комплексные числа не а всех шагах, а там где минуса. Распечатай массив wave и увидишь - там все в комплексных.

Фауст просто не делает комплексных вычислений. А октава делает по дефолту, потому что она матпакет.

curufinwe ★★★★★ ()
Ответ на: комментарий от curufinwe

Как у вас, математиков всё сложно... Я когда с таким сталкиваюсь, меня в дрожь бросает. То ((2*2)*2)/2 у них равно 3.99999, то теперь синус больше единицы... Так не бывает! Сколько бы ни было комплексных чисел - синус не может быть больше единицы! Не должен! Что за треугольник такой получится? Придумали всякого, чтобы мозг сломать людям... Вот я на станке некоторые штуки программирую и не задумываюсь, а тут...

Deleted ()
Ответ на: комментарий от Deleted

Комплексные числа - отдельная кухня со своими законами, где парадный вынос мозга род фанфары на каждом шагу )))

curufinwe ★★★★★ ()
Ответ на: комментарий от curufinwe

Спешите видеть! Вынос мозга челобаки состоялся сегодня после нескольких часов страдания фигнёй типа «я умный, я посчитаю в октаве, калькулятор для даунов»! Фанфары откладываются до полной имплеменации педалей и ампсима :)

Deleted ()
Ответ на: комментарий от curufinwe

Блин. Хочется этакой смеси интерактивной геомерии и алгебры, где можно строить графики и фигуры, но чтобы там небыло всякого такого ужаса.

Я, главное, раньше всё думал, что это я допустил ошибку в рассчётах, когда формулы переносил...

Deleted ()
Ответ на: комментарий от Deleted

Не знаю такого. Мне тоже интересно, если есть. Но пока не встречал.

curufinwe ★★★★★ ()

Ёрш твою в масло! Да что же это такое? После апдейтов Фауст вываливается с ошибкой сегментирования. Как жить?

Кстати, заказал племяннику такое. Племяшки у меня чойта в гитару ударяются. Что подкупило в кубе - тюнер и блюпуп для воспроизведения музыки с телефона, маленький, тонстэк классический, а не блэкстаровский смарттончивойта. То что пацану нужно для въезжания в тему. Ну и пожарить на фуллгейне :)

Deleted ()
Ответ на: комментарий от ist76

агаЮ сам в шоке :) Приедет посылка, у меня будет какое-то время с ней поиграться. Отчитаюсь.

Deleted ()
Ответ на: комментарий от Deleted

curufinwe, ты на Арче, у тебя Фауст не поломался? У меня из AUR стоял faust-git и faustlive-git. Не знаю когда поломалось, но пересобрать не получается и Фауст, что в основной репе тоже не работает. Пытаюсь собрать с faust2lv2 или любой другой, он крэшится.

Deleted ()
Ограничение на отправку комментариев: ★★