Музыкальный вайбкодинг (18 онлайн)

Товарищи, если вы в код не лезете вообще, почему сразу на чистом VST_SDK без обертки не пинаете клода генерировать исходники?
 
  • interesting
  • Like
Реакции: Vladiger и Greev
Создал сервис для изменения аудио nanosound.ru, измененное аудио можно скачать. Такое в принципе интересно использовать звукорежиссерам и всем тем, кто работает со звуком?
 
Товарищи, если вы в код не лезете вообще, почему сразу на чистом VST_SDK без обертки не пинаете клода генерировать исходники?
Так там соображать нужно, а клоду сказал хочу LA-2A, и сразу кайф, за 2 часа. А за неделю весь пакет от вейвс.
 
но можно извратиться и считать все на видеокарте. это конечно тот еще гемор, так как там расчет целочисленный и в 8/16 битный. но думаю на какой нибудь RTX1580 можно сделать онлайн расчет пары каналов очень точной физмодели LA2A. но сдается мне, что немного людей будут покупать для этого RTX1580. для игр и ии купят, а вот для моделей компрессоров - врядли.
GPU еще как считают в fp, еще лучше чем cpu и их производительность измеряется flops'ами, например последний у nvdia - rtx 5090, имеет производительность 104.9 Tflops в FP32, а в FP64 (double) уже на 2 порядка меньше!
 
@Vladiger, та не думаю, чтобы ИИ не справился. Я просто исхожу из того, что к примеру вдруг кто-то сильно увлечется и со временем докрутит свой проект до того состояния, что можно будет его на продажу выставить и очень хорошо если на тот момент окажется, что плагин написан не на коммерческом Juce за который платить нужно, а на штайнберговском SDK у которого сейчас лицензия MIT.
 
проект до того состояния, что можно будет его на продажу выставить и очень хорошо если на тот момент окажется, что плагин написан не на коммерческом Juce за который платить нужно, а на штайнберговском SDK у которого сейчас лицензия MIT.
Лично я на продажу ничего не планирую, но если алгоритм готов, то нет сложностей избавиться от Juce, дело техники, с помощью той же нейронки. Почему я начал делать для Juce? Да просто это было первой идеей, просто слышал что для этого есть Juce )
 
Я просто исхожу из того, что к примеру вдруг кто-то сильно увлечется и со временем докрутит свой проект до того состояния, что можно будет его на продажу выставить и очень хорошо если на тот момент окажется, что плагин написан не на коммерческом Juce за который платить нужно, а на штайнберговском SDK у которого сейчас лицензия MIT.
Juce вроде для инди-программистов-вайбкодистов бесплатно, если на плагинах до 50000$ заработать, а кто больше зарабатывает думаю не проблема и лицензию купить :D
 
  • Salut
Реакции: dugdum®
Juce для инди девелоперов до 40k вгод кабы бесплатен, смысл заморачиваться
ну если твои доходы с плагинов превышают 40k то уж 800уе можно заплатить
и это у тебя никто проверять не будет можешь на инди лицензии сидеть
 
Почему я начал делать для Juce? Да просто это было первой идеей, просто слышал что для этого есть Juce )
У меня что то подобное было, когда на какое то время увлекся игрушками.
Тоже, нагуглил, что для этого есть игровые движки Ogre, Irrlicht Engine (бесплатные) или Unity, Unreal engine (платные). Начал с бесплатных, разные движки, первые демки... Потом что то озадачился, попробовал прямое взаимодействие C++ и DirectX SDK и перестал понимать, а зачем игровые движки вообще. Ну бери да пиши на DirectX SDK свой движек, так как тебе нужно и что тебе нужно. А если это не 3D игра, а какая нибудь казуалка, так там вообще больше половины всего лишнего. Можно вообще и без DirectX писать.

Но в Юнити, к примеру, там оболочка, можно какие то сцены в редакторе конструировать, а в коде только взаимодествие с ними описывать. Это подкупает.
 
Чет я прошлёпил этот момент, не посмотрел на строку "Up to..." в таблице прайсов джуса
 
@Vladiger, да чем плох этот фреймворк? просто библиотека, файлы dll маленькие получаются, код эффективный, если оттуда функции использовать. Не вижу никаких минусов.
 
@Vladiger, если игрулю писать с целью заработка, то движки очень сильно время сэкономят, в сотни раз, плюс ассеты по несколько десятков баксов подкупить нужные в которых уже будет большая часть механик реализована, пердолинга с кроссплатформой опять же не будет, на голых директиксах, опенджиэлях и вулканах есть смысл писать только чисто just for fun, прокачать себя в графике на низком уровне.
 
Почему я начал делать для Juce? Да просто это было первой идеей, просто слышал что для этого есть Juce )
кстати есть ещё опенсорсный https://hise.dev/ там вроде встроенный gui редактор, морды удобнее делать, чем в Juce наугад,
он вроде больше для VSTi заточен.
 
  • я записываю
Реакции: dugdum®
в juce кстати был GUI редактор до 7версии но потом они решили что он больше не нужен
с 8 версии JUCE поддерживает Web GUI можно делать векторные интерфейсы на JS/HTML/CSS через WebView
 
  • Like
Реакции: dugdum® и evgeny26
Всё, утомился ) LA2A_circuit_simulator.vst3
1778433523645.png

12AX7: Child-Langmuir Ip = K·E₁¹·⁵·tanh(Vpk/Va), fixed-point итерация с релаксацией 0.3, катод зашунтирован 50µF (Vk фиксирован). Gain ~34×. 12BH7: катодный повторитель, та же модель (µ=17), релаксация 0.08, выход /15. Между ними — output transformer (tanh-сатурация + ФНЧ 30кГц) и DC-block.
Сайдчейн: анод 12AX7 → high-shelf emphasis 3кГц (0/+2/+4/+6/+8/+10dB) → full-wave rect → RMS 5ms → компрессия/лимит (ratio 0.5/1.0). Опто: EL-panel (sqrt envelope) + CdS (R = 10M·exp(-light·12)) с attack 12/8ms, release 80/60ms. Feedback-компрессия: LDR + 1MΩ делитель на входе 12AX7. Peak Reduction = drive 0–8×.
 
  • Like
  • Wow
Реакции: belovw, evgeny26 и Lux
12AX7: Child-Langmuir Ip = K·E₁¹·⁵·tanh(Vpk/Va), fixed-point итерация с релаксацией 0.3, катод зашунтирован 50µF (Vk фиксирован). Gain ~34×. 12BH7: катодный повторитель, та же модель (µ=17), релаксация 0.08, выход /15. Между ними — output transformer (tanh-сатурация + ФНЧ 30кГц) и DC-block.
Сайдчейн: анод 12AX7 → high-shelf emphasis 3кГц (0/+2/+4/+6/+8/+10dB) → full-wave rect → RMS 5ms → компрессия/лимит (ratio 0.5/1.0). Опто: EL-panel (sqrt envelope) + CdS (R = 10M·exp(-light·12)) с attack 12/8ms, release 80/60ms. Feedback-компрессия: LDR + 1MΩ делитель на входе 12AX7. Peak Reduction = drive 0–8×
Спасибо. А с релаксацией 0.4 не будет лучше?
 
Опто: EL-panel (sqrt envelope) + CdS (R = 10M·exp(-light·12))
Мне показалось, что было бы в новинку получить эмуляцию la2a, в котором параметры можно было бы задавать, изменяя циферки в этих формулах)) Или даже свои формулы дописывать. А то чё мы так умственно отсталые двумя крутилками оперируем)))
 
  • я записываю
  • Like
Реакции: AAG и dugdum®
Пользователи всем известного ресурса будут ругаться, что пресетов готовых нет! :D
Да, с пресетами пока полный провал :rolleyes: Но для плагина с парой ручек можно пережить. А вот ревер навороченный с кучей алгоритмов, оно да.
 
Кто знает, https://learncpp.com нормальный ресурс для изучения плюсов? Решил все ж базу изучить, вайбить вслепую как-то не интересно :)
 
12AX7: Child-Langmuir Ip = K·E₁¹·⁵·tanh(Vpk/Va), fixed-point итерация с релаксацией 0.3, катод зашунтирован 50µF (Vk фиксирован). Gain ~34×. 12BH7: катодный повторитель, та же модель (µ=17), релаксация 0.08, выход /15. Между ними — output transformer (tanh-сатурация + ФНЧ 30кГц) и DC-block.
Сайдчейн: анод 12AX7 → high-shelf emphasis 3кГц (0/+2/+4/+6/+8/+10dB) → full-wave rect → RMS 5ms → компрессия/лимит (ratio 0.5/1.0). Опто: EL-panel (sqrt envelope) + CdS (R = 10M·exp(-light·12)) с attack 12/8ms, release 80/60ms. Feedback-компрессия: LDR + 1MΩ делитель на входе 12AX7. Peak Reduction = drive 0–8×.

LA-2A плагин: review модели и предложения по улучшению​

Контекст: анализ DSP-формул плагина-эмулятора LA-2A. Цель документа — указать на расхождения с прототипом (Teletronix/UA LA-2A) и предложить замены, верифицированные по открытым источникам. Среда разработчика: JUCE 8 / Visual Studio 2022.
Каждый пункт помечен:
  • ✅ Verified — подтверждено документацией или измерениями (источник в конце).
  • ⚙️ Design choice — обоснованное архитектурное решение, не из единственного источника.
  • ❓ Estimate — типовой порядок, требует подгонки под референс.

Текущая модель (как есть)​

Код:
12AX7: Ip = K·E₁^1.5·tanh(Vpk/Va), fixed-point relaxation 0.3,
       cathode bypass 50µF (Vk fixed), gain ~34×
12BH7: cathode follower, та же модель, μ=17, relaxation 0.08, выход /15
OT:    tanh saturation + LPF 30 kHz, DC-block
SC:    анод 12AX7 → high-shelf emphasis 3 kHz (0/+2/+4/+6/+8/+10 dB)
       → full-wave rect → RMS 5ms → ratio 0.5/1.0
Opto:  EL √envelope; CdS R = 10M·exp(-light·12); attack 12/8 ms, release 80/60 ms
FB:    LDR + 1 MΩ делитель на входе 12AX7
PR:    drive 0–8×

Критические расхождения​

1. ✅ Release time: нет long tail — главная потеря характера LA-2A​

Источник: мануал Universal Audio LA-2A, цитата:
"Cells are selected which provide minimum attack time, and a release time which requires about 60 ms for 50% release, and then a gradual release over a period of 1 to 15 secs to the point of complete release."
Текущая модель release 80/60 ms воспроизводит только быструю (50%) фазу и теряет медленный тепловой хвост CdS-фоторезистора, который и есть характерный «дыхательный» отклик LA-2A.
Замена — multi-τ release с тремя постоянными времени:
Код:
dR_fast/dt = (R_target - R_fast) / τ_fast      τ_fast ≈ 10 ms
dR_med/dt  = (R_target - R_med)  / τ_med       τ_med  ≈ 150 ms
dR_slow/dt = (R_target - R_slow) / τ_slow      τ_slow ≈ 2.5 s

R_effective = α·R_fast + β·R_med + γ·R_slow,  α+β+γ = 1
            (стартовые веса: 0.5 / 0.3 / 0.2; ❓ калибровать)
Опционально (полировка): state-dependent τ_slow — растёт с историей GR, до ~5–10 с (объясняет, почему UA пишет «1 to 15 secs» — диапазон зависит от программы). Это даёт именно тот эффект, что LA-2A «одинаково хорошо» работает на разных источниках.
В JUCE 8 — три каскадных juce::dsp::FirstOrderTPTFilter или ручной one-pole в state-объекте T4B-ячейки.

2. ✅ R37 Emphasis — фильтр работает в другую сторону​

Источник: мануал UA LA-2A (стр. 9) и UA support article:
"The (R37) Emphasis... controls a shelf filter circuit in the compressor's sidechain input... Rotating the Emphasis control counter-clockwise increases filtering of the sidechain signal. The Emphasis filter gradually reduces the lower frequency content of the sidechain signal."
Контекст: R37 нужен был для компенсации FM pre-emphasis (+17 dB на 15 кГц), которой облучали LA-2A в broadcast-применении.
Текущая модель: high-shelf BOOST на 3 кГц с шагами 0/+2/+4/+6/+8/+10 dB.
Реальная схема: low-shelf CUT, режущий низа до –10 dB. Pivot frequency, насколько удаётся восстановить из обсуждений (mixanalog, GroupDIY) — около 1 кГц.
Спектральный наклон у обеих реализаций похож (sidechain становится чувствительнее к ВЧ), но:
  • У low-shelf cut общий уровень sidechain падает → надо корректировать gain detector;
  • Форма около pivot отличается → характер de-essing-эффекта не идентичен.
Замена:
Код:
sc_filtered = LowShelf(input, fc ≈ 1 kHz, gain = 0...-10 dB)
JUCE: juce::dsp::IIR::Coefficients<float>::makeLowShelf(...).
❓ Точные значения шагов аттенюации (0/-2/-4/-6/-8/-10 dB) — гипотеза, исходно соответствующая реальной кривой R37. Проверять по AB-сравнению с UAD/Waves CLA-2A.

3. ✅ CdS — экспонента вместо power-law​

Источник: стандартная физика фоторезисторов (CdS, Silonex/Clairex CL-505L, используемые в T4B):
R = K · E^(-γ), where γ ≈ 0.7…1.2
Текущая модель: R = 10M · exp(-light · 12) — экспонента откалибрована в одной точке. На сильной компрессии экспонента схлопывает R быстрее реального → компрессия становится жёстче, ratio растёт быстрее, чем у прототипа.
Замена:
Код:
R_inst = R_dark · max(L, L_eps)^(-γ)
   R_dark ≈ 10 MΩ                 ✅ типично для CdS
   γ ≈ 0.75                        ❓ калибровать под T4B (диапазон 0.7–0.9)
   L_eps малое для избежания /0
В коде на C++ — std::pow(L, -gamma) либо аппроксимация через exp(-gamma·log(L)) с быстрым log.

4. ✅ EL panel — √ не учитывает порог зажигания​

Источник: обсуждение T4B на GroupDIY (Joe-electro, Kenetek):
EL-панель в T4B запитана от sidechain до ~90 VAC peak, зажигается выше определённого напряжения, светимость растёт нелинейно.
Текущая модель: L = √(envelope) — даёт свечение при любом ненулевом сигнале.
Замена — threshold + power-law:
Код:
L = K_el · max(0, |V| - V_th)^n
   V_th ≈ 60 V (в скейле sidechain)   ❓ калибровать
   n   ≈ 2.5                          ❓ типично 2–3 для EL
Эффект: при тихих сигналах ниже порога компрессия не включается вовсе — это соответствует ощущению LA-2A как «leveling amplifier», а не классического компрессора.

Важные расхождения (вторая очередь)​

5. ✅ Sidechain пропускает 6AQ5 driver tube​

Источник: мануал UA LA-2A (стр. 11, Side-Chain Circuit) + обзор Gemtracks:
"The side-chain is comprised of a voltage amplifier, a pre-emphasis filter, and a driver stage which provides the voltage necessary to drive the electro-luminescent panel." "Two more tubes (12AX7 and 6AQ5) are in the sidechain and serve there as drivers for the electroluminescent foil."
Текущая модель: только анод 12AX7 → emphasis, дальше детектор. Драйверная ступень на 6AQ5 (пентод) пропущена, а её нелинейность вносит свою окраску в sidechain.
Замена: добавить упрощённую модель 6AQ5 driver между фильтром и детектором. Минимально — мягкий нелинейный gain stage (asymmetric soft clip с порогом, имитирующий клиппинг пентода в sidechain). Полноценная Koren-модель пентода (требует параметров KG2, KP, EX) — over-engineering, можно ограничиться waveshaper-ом.

6. ⚙️ 12BH7 нельзя моделировать той же формулой, что 12AX7​

Источник: опубликованные SPICE-модели (R. McLean DIY Audio thread, Leach form):
  • 12AX7 Koren: μ=100, EX=1.4, KG1=1060, KP=600, KVB=300 ✅
  • 12BH7A Leach: μ=16.64, perveance K=22.34E-6, exponent 1.5 ✅
Обратите внимание: для 12BH7 в открытом доступе нет Koren-модели в той же форме, что для 12AX7 — есть Leach (старая 1.5-power) и 3F4 (расширенная). Использовать "ту же модель с μ=17" неправильно — у 12BH7 совсем другие KG1 и форма передаточной.
Варианты:
  1. Минимум: оставить Child-Langmuir 1.5 для 12BH7, но с perveance-коэффициентом, соответствующим Leach-модели (≈22.34E-6, у 12AX7 коэффициент существенно меньше — там «остренькая» лампа).
  2. Лучше: снять параметры Koren из datasheet 12BH7 (RCA / GE) через CurveCaptor (есть в open source) или через ручной фит в Excel/MATLAB. Это разовая работа на час.
  3. Идеально: 12BH7 в LA-2A работает катодным повторителем — там точная форма передаточной не критична, важен корректный output impedance и небольшая нелинейность. Можно ограничиться вариантом 1 + правильное вычисление Vk через корректный Rk.

7. ⚙️ Fixed-point relaxation 0.08 → Newton-Raphson​

Проблема: relaxation 0.08 для 12BH7 — симптом плохой сходимости из-за сильной локальной ОС в катодном повторителе. Это означает 30+ итераций на сэмпл для приличной точности → ненужная нагрузка на CPU.
Замена: Newton-Raphson по неявной системе:
Код:
// Для 12BH7 cathode follower (ищем Vk):
// g(Vk) = Vk - Rk * Ip(Vin - Vk, Vsupply - Vk)
// g'(Vk) = 1 - Rk * (dIp/dVgk * (-1) + dIp/dVp * (-1))
//        = 1 + Rk * (dIp/dVgk + dIp/dVp)

float Vk = Vk_prev;  // warm start с прошлого сэмпла
for (int i = 0; i < MAX_ITER; ++i) {
    float Ip = computeIp(Vin - Vk, Vsupply - Vk);
    float g  = Vk - Rk * Ip;
    if (std::abs(g) < EPS) break;
    float dIp_dVgk = ...;  // analytical derivative
    float dIp_dVp  = ...;
    float gp = 1.0f + Rk * (dIp_dVgk + dIp_dVp);
    Vk -= g / gp;
}
Сходимость: 2–4 итерации до 1e-6 residual вместо 30+. Safeguard: при отсутствии сходимости за 6 шагов → fallback на bisection в [Vk_min, Vk_max].
В JUCE — стандартные <cmath> функции; для оптимизации можно juce::FastMathApproximations для exp/log, но обычно std-версии достаточно (это всё ещё ~5% одного ядра).

8. ⚙️ Output transformer — tanh + LPF 30 kHz слишком прозрачен​

Источник: реальный OT в LA-2A — UTC A-24 (или HA-133, Stancor WF-34, Sowter 1010 как замены), step-down. Frequency response типового 30 Hz – 20 kHz ±1 dB, с лёгким HF resonance из-за leakage L и winding C.
Что упускает текущая модель:
  • HF resonance (≈18–22 kHz, Q≈1) — характерный «открытый» верх.
  • LF magnetic saturation — magnetizing current ∝ 1/f, на низких частотах сердечник насыщается быстрее → 3-я гармоника на басу. Это половина того, что делает LA-2A «жирным».
  • Асимметричная нелинейность — даёт 2-ю гармонику. Чистый tanh симметричен, рождает только odd-order harmonics.
Замена:
Код:
1. HF секция:   biquad LCR (juce::dsp::IIR), резонанс ~20 kHz Q≈1
2. LF saturation: high-shelf boost +6 dB ниже 100 Hz перед нелинейностью,
                  high-shelf cut после неё (имитация 1/f magnetizing)
3. Asymmetric softclip: y = softclip(x + 0.04·|x|)
                        или y = (x + 0.5·x²·ε)/(1+|x|)
Полноценная Jiles-Atherton модель сердечника overkill для VST.

Минор / nice-to-have​

9. ⚙️ Gain staging — убрать /15

выход 12BH7 /15 смешивает три разных вещи:
  • Gain катодного повторителя (≈ μ/(μ+1) ≈ 0.94)
  • Step-down ratio output transformer
  • Внутреннюю нормировку к audio float
Разделить на явные блоки в коде:
Код:
[12AX7 stage]    → Av_voltage ≈ 34
[coupling cap]   → HPF ~3 Hz
[12BH7 follower] → Av ≈ 0.94
[OT step-down]   → ×0.25 (1:4 ratio, ❓ зависит от модели OT)
[output trim]    → калибровочная константа k_norm
Подставлять k_norm так, чтобы при PR=0 plugin был bypass-friendly (unity gain).

10. ⚙️ Sidechain detector — вместо RMS 5ms схемная топология​

Реальный sidechain LA-2A после rectifier — конденсатор, заряжающийся через низкое сопротивление и разряжающийся через высокое. Это даёт fast attack / slow discharge без явного envelope follower:
Код:
sc_after_rect → cap_charge (Rc=низкое, Rd=высокое, C=1µF)
RMS 5ms — абстракция, дающая похожий, но не идентичный результат. Особенно отличие заметно на транзиентах.

11. ⚙️ Compression ratio 0.5/1.0​

Источник: обсуждения на Gearspace + UA Webzine:
  • Compress mode: 3:1 to 4:1, soft knee, program-dependent
  • Limit mode: ∞:1 (UA spec) / реально ~10:1 при насыщении CdS
Текущие коэффициенты 0.5/1.0 могут соответствовать этим ratio через нелинейность gain reduction — это надо проверить static input/output curve plugin'а в режиме compress vs limit. Если кривые не совпадают с измерениями реального LA-2A — пересмотреть mapping.

Приоритизация для итеративного релиза​

ПриоритетЧтоЭффектСложность
P0Multi-τ release с τ_slow ≈ 2.5 sБез этого это не LA-2AНизкая (3 one-pole)
P0CdS power-law вместо expКорректная форма GRНизкая (1 строка)
P0R37 emphasis: low-shelf cut вместо high-shelf boostСоответствие схемеНизкая (biquad)
P1EL panel threshold + V^nТихие сигналы не давят compressionНизкая
P1OT с LF saturation + HF resonanceЖирный low-end, открытый topСредняя
P1Newton solver для 12BH7CPU экономия 5–10×Средняя
P26AQ5 sidechain driverДополнительная окраскаНизкая (waveshaper)
P212BH7 — отдельные параметрыКорректность моделиСредняя (нужен фит)
P3Cap-discharge sidechain detectorЕстественные транзиентыНизкая
P3Asymmetric OT softclip2-я гармоникаНизкая
P3Явный gain staging (убрать /15)MaintainabilityНизкая

Верификация изменений​

Минимальный test suite, чтобы убедиться, что изменения приближают к прототипу:
  1. Static GR curve — sine 1 kHz @ +6 dBu вход, sweep amplitude, замерять output. Сравнивать с измерениями реального LA-2A или UAD-эмуляции (есть много обзоров).
  2. Release impulse response — короткий burst → выкл. → измерить кривую восстановления GR. Должна быть характерная двухступенчатая (быстрая до 50%, медленная до полного восстановления).
  3. THD spectrum на +4 dBu и +18 dBu — наличие 2-й и 3-й гармоник в правильной пропорции.
  4. Frequency response sidechain для разных позиций R37 — проверить, что это shelf cut на низах, не boost на верхах.

Источники​

#ИсточникЧто подтверждает
1UA LA-2A Manual (PDF): https://media.uaudio.com/assetlibrary/l/a/la-2a_manual.pdfRelease timing, R37 функция, schematic block diagram
2UA Support: Teletronix LA-2A Leveler Collection Manual: https://help.uaudio.com/hc/en-us/articles/4419496124180R37 как low-shelf cut
3Sweetwater InSync — LA-2A Emphasis Control: https://www.sweetwater.com/insync/la-2a-emphasis-control/R37 +17 dB @ 15 kHz контекст
4Norman Koren — Tube parameters: https://www.normankoren.com/Audio/Tube_params.html12AX7 Koren parameters
5Effectrode — Accurate BSPICE Tube Models: https://www.effectrode.com/knowledge-base/the-accurate-bspice-tube-models/Koren equations и параметры
6DIYaudio — 12BH7 SPICE model thread (R. McLean): https://www.diyaudio.com/community/threads/pspice-ltspice-model-for-6au6-ef94.59480/12BH7A Leach model: μ=16.64, K=22.34E-6
7GroupDIY — T4B Photocells (Kenetek, Joe-electro): https://groupdiy.com/threads/t4b-photocells.64961/Состав T4B (CL-505L + EL panel), max 90 VAC
8Elektroda — LDR/Photoresistor reference: https://www.elektroda.com/qa,ldr-photoresistor-cds-cdse-rohs-models.htmlPower law R = K·E^(-γ), γ ≈ 0.7–1.2
9Gearspace — LA-2A specs discussion: https://gearspace.com/board/high-end/367872-la2a-limit-mode-attack-time.htmlRelease 60 ms 50% + 0.5–2 s tail
10Gearspace — LA-2A Compress vs Limit: https://gearspace.com/board/so-much-gear-so-little-time/776746-la2a-limit-vs-compress.htmlRatio 3:1–4:1 compress, ~10:1 limit
11mixanalog blog — LA-2A tutorial: https://blog.mixanalog.com/dual-la2a-compressorR37 attenuates low frequencies up to 10 dB
12ProReplicas — T4B cell info: https://www.proreplicas.com/t4b_cell.htmlBurgundy/green curves of T4B response

Disclaimer​

Все значения, помеченные ❓, — типовые для соответствующих компонентов и должны быть откалиброваны под референсное звучание (UAD, Waves CLA-2A или, идеально, измерения реального юнита). Документ не претендует на bit-exact эмуляцию — это roadmap, который приведёт модель ближе к прототипу по слышимым характеристикам.
 
  • Like
Реакции: belovw
Решил все ж базу изучить, вайбить вслепую как-то не интересно
так пусть ИИ интерактивно обучает, так сказать learn by doing, начать какой то проект который интересует, сказать ИИ пусть обьясняет каждый шаг как ученику,
по моему будет полезнее чем смотреть пустые функции и переменные в книжных курсах, от которых быстро станет скучно :rolleyes:
 
  • Like
Реакции: Lux
@evgeny26, ну Newton-Raphson не взлетел у меня, начали мы с ИИ-шкой с перегрузки процессора, не буду оправдываться, возможно с Claude всё по-другому получится )
 
  • мозг
Реакции: evgeny26
Кто знает, https://learncpp.com нормальный ресурс для изучения плюсов? Решил все ж базу изучить, вайбить вслепую как-то не интересно :)
с++ без привязки к дсп по опыту смысла нет учить
1. есть бесплатный курс от джус https://juce.com/learn/course/
2. купить их книги курсы https://www.theaudioprogrammer.com/books-and-courses
3. офигенный бесплатный курс лекций с уклоном в ДСП


4. ну и кунечно настольная книга https://www.amazon.com/Designing-Audio-Effect-Plugins-C/dp/1138591939


я начинал с max msp gen~
невысок порог вхождения
и их книга по ДСП с уклоном в gen~
Generating Sound and Organizing Time https://cycling74.com/books/go
 
  • я записываю
  • Like
Реакции: evgeny26 и Lux
возможно с Claude всё по-другому получится )
вот что клод нагенерил, если интересно покрутить

Что в комплекте:
  • README.md — инструкции по интеграции (минимальный/полный путь) + калибровка
  • LA2A_OptoCell.h ⭐ — T4B с multi-τ release и CdS power-law (P0)
  • LA2A_Sidechain.h ⭐ — R37 как low-shelf cut, 6AQ5 driver, cap-discharge detector (P0)
  • LA2A_TubeModels.h — Koren 12AX7 + Leach 12BH7 + Newton-Raphson solver (P1)
  • LA2A_OutputTransformer.h — LCR резонанс + LF saturation + асимметрия (P1)
  • LA2A_DSPChain.h — top-level wiring всех модулей
  • LA2A_PluginProcessor_Integration_Example.h — APVTS hookup под параметры с интерфейса (Gain, Peak Reduction, Mode, Emphasis)

Honest disclosure про код:
  1. Не компилировал у себя. Написан под JUCE 8 / C++17 с привычными паттернами (juce::dsp::IIR::Filter, SmoothedValue, APVTS), но первая компиляция почти наверняка потребует мелких правок — что-нибудь типа [[maybe_unused]] вместо (void), мелкие incompatibilities между минорными версиями JUCE 8.x. Ничего архитектурного.
  2. Параметры с пометкой ❓ в коде — типовые значения, требуют калибровки под референс. Самые чувствительные: T4BOptoCell::gamma, tau_slow, веса w_fast/w_med/w_slow, и INPUT_SCALE/OUTPUT_SCALE в LA2ADspChain.
  3. Voltage scaling — самое опасное место. Внутренние тюбы работают в реальных вольтах (~250V supply), а вход/выход в float [-1, 1]. INPUT_SCALE = 0.5f и OUTPUT_SCALE = 0.05f — стартовые значения; при первом запуске почти точно нужно подкрутить, чтобы при PR=0 был bypass-friendly unity gain.
  4. Стерео-линк — текущая реализация per-channel независимая. Для true stereo-link нужна общая sidechain детекция; в README описано как это сделать.

Рекомендованная стратегия отката, если что-то пойдёт не так:

Внедряй по одному модулю и тестируй после каждого. Порядок (от самого безопасного к самому invasive):
  1. R37 emphasis fix — одна строка в существующем sidechain (заменить makeHighShelf на makeLowShelf с pivot 1 kHz и отрицательным gain).
  2. T4B opto-cell — заменяешь существующую опто-модель, остальная цепь не трогается. Это даст самый большой слышимый эффект.
  3. Output transformer — заменяешь существующий tanh + LPF.
  4. Tube models с Newton solver — самое invasive, влияет на всю цепь сигнала. Делать последним.
Если на каком-то шаге плагин начнёт звучать странно — откатываешься на предыдущий и калибруешь параметры этого блока перед движением дальше.
 

Вложения

  • Salut
Реакции: dugdum®
Андрей правильно написал , ии - практически всегда относительно убедительно несет полную х...ню) когда ты ваще не в теме - то тебе кажется что и норм ) интеллект ))))))..........
Когда мало мальски в теме - начинаешь поминутно ловить фейспалмы )и так практически со всем что пытаешься его заставить делать )
 
  • Like
Реакции: AAG

Сейчас просматривают