NeoSynth (5 онлайн)

euggie2000

Well-Known Member
1 Май 2008
612
308
63
Screenshot 2026-02-26 at 6.44.09 PM.png


NeoSynth — модульный полифонический синтезатор

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

Возможности:

- Модульная расширяемая архитектура — каждый модуль отдельный плагин, 58 модулей в комплекте
- Осцилляторы: Saw, Sine, RSaw, Triangle, Square (с PWM). Audio-rate FM и Hard Sync на каждом
- 24 фильтра, включая попытки эмуляции классических аналоговых схем: Moog Ladder, TB-303, Korg MS-20, Roland Juno-106, Roland Jupiter-8, Sequential Prophet-5, SSM2040, CEM3320, Diode Ladder и другие. Большинство с поддержкой Filter FM
- Спектральный морфинг — 4 алгоритма (аддитивный, McAulay-Quatieri, SMS sinusoidal+residual, STFT phase vocoder)
- Векторный микшер — XY-crossfader на 8 входов в стиле Korg Wavestation
- Сэмплер с гранулярным синтезом (grain size, spray, pitch spread, density, window shape)
- Ring Modulator, Decimator/Bitcrusher, Panner
- Chorus (эмуляция Juno-60 BBD), Spring Reverb (2 варианта)
- 3 типа шума (White, Pink, Brown) с S&H режимом
- Lag/Slew модуль для portamento и сглаживания
- ADSR, AHDSR, DADSR огибающие + Envelope Follower
- LFO (5 форм волны включая S&H)
- Oscilloscope и Spectrum Analyzer
- Обработка внешнего аудио (AudioIn)
- 16-голосная полифония
- 100 слотов матрицы модуляции
- 48 пресетов в комплекте

Поддерживаемые операционные системы:
MacOS, Windows; iOS/Android (в проекте)

Исполнение:
AU/VST3 плагин и standalone версия (mac/pc). Для mac - universal binary.

Технологии:

Написано на C++ с использованием кроссплатформенной библиотеки iPlug2 (macOS + Windows). Блоковая pipeline-обработка, минимальная latency в пределах ASIO/CoreAudio буферов. Архитектура построена на SOLID и data-driven принципах — все компоненты и параметры обнаруживаются динамически через discovery API. При довольно компактных размерах (в современных реалиях), система имеет гибкие возможности синтеза и открыта для расширения новыми модулями; при наличии интереса может быть опубликован SDK для разработки сторонних плагинов.

Проект активно развивается — планируются новые и усовершенствованные существующие модули, фильтры, осцилляторы и улучшения. На данном этапе рекомендую проявлять осторожность с экстремальными настройками
резонанса на некоторых фильтрах (возможны громкие пики).
Тем не менее, на мой безусловно предвзятый взгляд, некоторые фильтры звучат живее и интереснее чем у "законодателей" аналоговой эмуляции - U-he.

В общем, «прошу использовать в работе». Безвозмездно. Если есть идеи, пожелания, предложения, критика (даже неконструктивная:) - добро пожаловать!)

MacOS binary (universal)
Windows версия, VST3 и Standalone

Ссылку на win версию опубликую чуть позже.
 
Последнее редактирование модератором:
Пример/ы звука же есть?
Постараюсь выкроить время чтобы создать целую композицию полностью только на нем.
Может быть даже с синтезированными барабанами.

Небольшой хинт - если патч слишком тяжелый (напоминаю, на всякий случай - до 100 слотов в матрице модуляции) и перегружает CPU, можно ограничить кол-во голосов, кликая на led'ы голосов. Если при этом кликать на активные голоса, светящиеся зеленым, они сбрасываются, если кликать на неактивные, led"ы становятся серыми и общее количество голосов уменьшается, и уменьшив их на нужное количество можно добиться того что даже тяжелый патч не будет вызывать перегруза процессора, разумеется за счет потери полифонии. Размер полифонии сохраняется с патчем.
 
Последнее редактирование:
  • Like
Реакции: Arlekin
@euggie2000 , а можно кратко как пользоваться? поставил, за 5 минут не разобрался как роутинг сигнала между модулями происходит
Проще всего - на готовых примерах. Модули на панель добавляются либо из контекстного меню, либо из "выпадашки" сверху.

Добавим, например Midi, Oscillator, Filter, Envelope - самый стандартный набор блоков синтезатора. В "матрице" модуляции в выпадающих списках появляются входы-выходы модулей, которые присутствуют на панели.

1. В матрице слева из выпадающего списка выбираем источник, например midi.note (это выход типа "pitch"), а справа в списках выдаются только входы совместимые с этим типом входов, в частности osc.pitch. Но это пока только "cv":
midi1.note -> osc1.pitch
Переключатель между выходом и входом нужно включить

2. Нужен еще gate, триггер, который тоже находится в модуле midi, добавляем выход midi.gate из выпадающего меню, он обычно триггерит env, поэтому вход - env.gate. Звук уже должен появиться, можно уже играть):
midi1.gate -> env1.gate
Переключатель между выходом и входом нужно так же включить

3. За осциллятором обычно следует Filter, соответственно слева выбираем osc.audio, справа - filter.audio. Звук на этом этапе теперь можно фильтровать:
osc1.audio -> filter1.audio
Значение слайдера нужно выставить на 1. (Это коэффициент усиления)

4. Обычно мы хотим управлять частотой среза фильтра с помощью envelope, поэтому добавляем еще одну строку в mod matrix:
env1.level -> filter1.cutoff
Выставляем слайдер на нужную частоту (слайдер получил информацию от модуля о том что он здесь регулируется в частотном диапазоне)

5. Для управления громкостью огибающей добавляем еще одно соединение:
env1.level -> vca1.gain
Выбираем нужный коэффициент усиления, для начала 1.

6. За фильтром следует vca, поэтому связываем и их тоже:
filter1.audio -> vca1.audio

Таким образом, мы получили минимальный набор блоков. Можно добавить еще один env, выделенный конкретно для фильтра. Синт вообще-то модульный, позволяет создавать сложнейшие патчи. Пока конечно не очень дружественный интерфейс, модульность имеет свои накладные расходы.. В начале работы над проектом еще думал, стоит ли реализовать обычную стандартную схему синта, но потом передумал, так как интересовали прежде всего эксперименты со звуком, а максимальный полет фантазии возможен лишь в модульном исполнении)

Да, если нужен velocity control, то вместе с env добавляем блок multiplier, потому что логически velocity должен не просто складываться со значением env, а усиливать его. Есть пример в патче TwoOscFilter. Осцилляторов можно добавлять сколько угодно, можно даже создавать аддитивный синтез, как у Kawai 5000).

Screenshot 2026-02-28 at 2.58.52 PM.png


Между прочим, можно обмениваться патчами, они находятся в стандартных пользовательских папках.
Mac: /Users/$USER/Library/Application Support/NeoSynth/presets
Win: c:\Users\%USERNAME%\Application Data\NeoSynth\presets

Представляют собой папки с именем пресета и содержимым: preset.json и доп. файлы, например запись траектории векторного джойстика или сэмплы для сэмплера.
 

Вложения

  • Like
Реакции: crowd91 и dugdum®
Интерфейс похож на vaz modular немного ) но с роутингом заморочено конечно, вот бы нажать кнопочку TAB как в ризоне, а сзади модулей - проводки.
 
В пути после appdata пропустили roaming
PS Этот синт это какая-то реинкарнация Реактора что ли?
У меня без Roaming. Но если у вас в roadming, то так тому и быть. Насчет реактора - не совсем, он ведь вообще на синт не похож)
Идеология примерно та же, но с качественными отличиями, например, фильтры в реакторе не похожи на реальные (по крайней мере когда я его пробовал). А у меня пунктик на фильтрах)) В общем, там задачу другую ставили. Везде свои плюсы/минусы.
 
  • Like
Реакции: deplexer
1. В матрице слева из выпадающего списка выбираем источник, например midi.note (это выход типа "pitch"), а справа в списках выдаются только входы совместимые с этим типом входов, в частности osc.pitch. Но это пока только "cv":
midi1.note -> osc1.pitch
Переключатель между выходом и входом нужно включить

2. Нужен еще gate, триггер, который тоже находится в модуле midi, добавляем выход midi.gate из выпадающего меню, он обычно триггерит env, поэтому вход - env.gate. Звук уже должен появиться, можно уже играть):
midi1.gate -> env1.gate
Переключатель между выходом и входом нужно так же включить

3. За осциллятором обычно следует Filter, соответственно слева выбираем osc.audio, справа - filter.audio. Звук на этом этапе теперь можно фильтровать:
osc1.audio -> filter1.audio
Значение слайдера нужно выставить на 1. (Это коэффициент усиления)

4. Обычно мы хотим управлять частотой среза фильтра с помощью envelope, поэтому добавляем еще одну строку в mod matrix:
env1.level -> filter1.cutoff
Выставляем слайдер на нужную частоту (слайдер получил информацию от модуля о том что он здесь регулируется в частотном диапазоне)

5. Для управления громкостью огибающей добавляем еще одно соединение:
env1.level -> vca1.gain
Выбираем нужный коэффициент усиления, для начала 1.

6. За фильтром следует vca, поэтому связываем и их тоже:
filter1.audio -> vca1.audio
Ого, даже в лоджике 5.5.1 не так сложно было звук получить
 

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