Нарушитель
611 / 92 / 0
Регистрация: 09.02.2020
Сообщений: 2,480
|
|
Программа-синтезатор09.02.2020, 11:28. Показов 7150. Ответов 30
Метки нет Все метки)
(
Это программа синтезатор синусоидальных звуков с возможностью добавления гармоник.
Через виртуальный миди-кабель может управляться секвенсером (например, Cubase). Вывод звука идет с минимальной задержкой через библиотеку ASIO (используется дополнительно bass.dll) Программа синтезатор позволяет играть на миди-клавиатуре. Решил выложить исходники на гитхаб. Кому-то пригодится как пример использования вывода звука через ASIO и вообще генерации звука как такового. https://github.com/wiz3267/ASIOSynthesizer
3
|
09.02.2020, 11:28 | |
Ответы с готовыми решениями:
30
Собственный синтезатор речи Синтезатор Синтезатор на С++ |
Asm/C++/Delphi/Py/PHP/VBA
![]() |
|
09.02.2020, 22:46 | |
Почему Visual Studio 6 ?
![]() Выложите, пожалуйста, dll-ки от 6-й студии. У меня, например, их нет, хотя довольно обширный набор библиотек Redistributable C++ установлен. А глянуть хочется...
0
|
Нарушитель
611 / 92 / 0
Регистрация: 09.02.2020
Сообщений: 2,480
|
|
09.02.2020, 23:11 [ТС] | |
Привык уже к VC 6.0 + быстрая среда + слабый комп. Я перекомпилировал проект в release и добавил release версию на гитхаб, она не должна требовать дополнительных VC6 библиотек.
Вот прямая ссылка, но ей нужны также bass.dll и bassasio.dll, их взять с гитхаба с того же проекта. https://github.com/wiz3267/ASI... elease.exe https://github.com/wiz3267/ASI... r/bass.dll https://github.com/wiz3267/ASI... ssasio.dll
0
|
Asm/C++/Delphi/Py/PHP/VBA
![]() |
|
10.02.2020, 13:56 | |
![]() Решение
Не пашет
![]() Хотя ASIO на дефолтовом устройстве работает в других прогах.
1
|
Нарушитель
611 / 92 / 0
Регистрация: 09.02.2020
Сообщений: 2,480
|
||||||
10.02.2020, 14:45 [ТС] | ||||||
У меня еще установлено ASIO4ALL. Может в этом дело.
https://www.asio4all.org/ Добавлено через 18 минут Jin X, спасибо, я понял в чем дело. У меня в коде
Надо будет сделать выбор номера устройства.
1
|
Нарушитель
611 / 92 / 0
Регистрация: 09.02.2020
Сообщений: 2,480
|
|
10.02.2020, 14:54 [ТС] | |
0
|
Asm/C++/Delphi/Py/PHP/VBA
![]() |
|
10.02.2020, 15:39 | |
Теперь всё работает
![]()
0
|
Нарушитель
611 / 92 / 0
Регистрация: 09.02.2020
Сообщений: 2,480
|
|
10.02.2020, 16:05 [ТС] | |
Jin X, спасибо за оперативность и тест, стало больше мотивации дальше что-то делать, если хоть кому-то прога пригодилась. А так, вообще интерес пропадает если честно, когда обратной связи нет совсем.
Добавлено через 21 минуту Описание сюда положу. В проекте это ReadmeRus.txt файл. Блок ползунков внутри с надписями -6, -5, -4, -3, -2, -1, base, 1, 2, 3, 4, 5, 6 это эквалайзер получаемой волны, base - амплитуда базовой частоты, а остальные это гармоники. Если гармоник нет, то в поле Actual Freq отображается реальная частота воспроизводимого звука. В поле WaveLen отображается длина физически получаемой звуковой волны в метрах из рассчета 330 метров в секунду. Для чего я это сделал? Чтобы понять почему в разных частях небольшой комнаты, в которой я нахожусь, воспроизводимые звуки от синтезатора в нижнем регистре разная. Сейчас, например тестирую один басовый динамик, зажимаю Ля 110 Герц, длина волны 3 метра, громкость получаемого звука в разных частях комнаты разная из-за явления интерференции, т.е. суммарного сложения амплитуд в пространстве. Волна отражается от всех поверхностей и в каждой точке трехмерного пространства получается разная амплитуда. Правее ползунков отображается информация, принимаемая с миди-клавиатуры, к примеру с картинки, 9 - это код нажатия клавиши, 17 это номер (Фа, F) клавиши миди-клавы, 102 это параметр, относящейся к скорости нажатия клавиши velocity или просто условно амплитуда нажатия. Когда клавиша отпускается посылается тоже самое с амплитудой 0. Блок Release sound содержит ползунок, влияющий на затухание волны после отпускания клавиши. Поле A(La)_Note содержит базовую частоту ноты Ля, обычно 440 Герц, но можно поменять строй. После Scale 12 задает строй как равномерно темперированный, октава делится на 12 равных частей. Можно изменить, например на 24, поэкспериментировать. Если нет миди-клавиатуры играть можно на буквенных клавишах из ряда QWERTYUIOP и цифровых клавишах, стрелки влево-вправо меняют привязку к общему пианороллу. Изменять значения параметров можно только после нажатия кнопки "Stop Generate Mode". Затем нужно запустить вновь генерацию звука кнопкой "Generate Sound Mode".
0
|
Нарушитель
611 / 92 / 0
Регистрация: 09.02.2020
Сообщений: 2,480
|
|
11.02.2020, 10:17 [ТС] | |
Может кто подскажет по поводу гитхаба, как отменить последний коммит? А то в качестве теста на самом сайте поправил *.cpp файл, сохранил и сделал коммит. Затем синхронизировался с компьютером, среда выдала сообщение, что файл извне изменился, что и ожидалось, файл обновился, но слетела русская кодировка. Теперь вот ищу на гитхабе как это отменить...пока не найду...
Добавлено через 29 минут (всё понял)
0
|
Asm/C++/Delphi/Py/PHP/VBA
![]() |
|
11.02.2020, 10:27 | |
Можно ещё добавить:
– Индикацию уровня каждой гармоники для ползунков (в дБ), а то сейчас не понятно даже – линейная или логарифмическая там шкала. – Ещё штуки 4-6 ползунков с указанием коэффициентов для создания обертонов с частотами, некратными целым числам. Чтобы не слишком много места занимало, можно убрать -6, -5 как минимум (а то и -4, -3). Если кому надо, укажут эти числа. – Выбор типа волны (синус, квадрат, треугольник, пила). – ADSR-огибающую (attack, decay, sustain, release). Например, в виде параметров: степень затухания для decay (дБ); длительность attack, decay, sustain, release (от 0 сек); функции для decay и release (линейная, синус, парабола, перевёрнутая парабола). – Звучание на протяжении удержания кнопки мыши или клавиши Shift (отдельный checkbox для этого режима). – Модуляцию по частоте и громкости (пока можно просто указать частоту модуляции, амплитуду и тип волны, а позже уже график приляпать). – Фильтр частот. – Перемещение окна. Есть такой косяк: при нажатии цифр идёт воспроизведение ноты, даже в окнах ввода (Midi#, Scale...). Добавлено через 1 минуту А что за 0 на ноте Си, зачем это?
0
|
Нарушитель
611 / 92 / 0
Регистрация: 09.02.2020
Сообщений: 2,480
|
|
11.02.2020, 10:30 [ТС] | |
Jin X, спасибо большее за советы в плане расширения функциональности. А ноль это символ привязки цифровой клавиатуры, с которой можно играть (клавиши QWERTYIUP и цифры) к пианороллу. Привязку можно менять курсорными стрелками влево-вправо.
0
|
Asm/C++/Delphi/Py/PHP/VBA
![]() |
|
11.02.2020, 10:33 | |
Вот ещё:
– Указание частоты звука. – Вывод в файл. – VSTi ![]() p.s. А зачем тут ASIO, почему бы обычный вывод не использовать?
0
|
Нарушитель
611 / 92 / 0
Регистрация: 09.02.2020
Сообщений: 2,480
|
|||
11.02.2020, 11:02 [ТС] | |||
Jin X, указание частоты звука есть, плохо читали описание. Указание частоты происходит только для синусоидальных звуков с одной гармоникой. Указывается в поле Actual Freq. По поводу VSTi я тоже думал. Как делать я пока не знаю. Но я подумал, что при тестировании модуля уже написанного как VSTi будет слишком долго идти процесс отладки. Ведь при изменении кода и дальнейшей проверки нужно будет, например в Cubase, заходить в соответствующее окно, обновлять списки VSTi. Затем через F11 модуль будет загружаться и только потом уже можно будет услышать звук, что мы там наменяли в коде.
(По крайней мере я так примерно представляю) Добавлено через 11 минут
И "обычный" это через системный микшер функциями hWaveOut? Вначале у меня так и было построено, как видно в попытке добиться минимальной задержки звука идут 20 блоков в очереди по 200 байт, но это можно менять. И все равно задержка оказывалась слишком большой. Что странно, сейчас пытаюсь избавиться в программе вообще от вызова функций типа hWaveOut, при этом звук перестает работает. Добавлено через 8 минут
0
|
Asm/C++/Delphi/Py/PHP/VBA
![]() |
|||||
11.02.2020, 11:40 | |||||
Но это так, на будущее.
0
|
Asm/C++/Delphi/Py/PHP/VBA
![]() |
|
12.02.2020, 13:27 | |
Пресеты можно ещё добавить...
Мне теперь самому захотелось синтезатор сделать ![]()
0
|
Нарушитель
611 / 92 / 0
Регистрация: 09.02.2020
Сообщений: 2,480
|
|
07.04.2020, 17:29 [ТС] | |
Всем привет! Программу пишу, на гитхабе подключился к ее разработке еще один человек, мой друг.
Самые главные изменения: сделаны пока две переменные гармоники, сейчас они настроены на мажор. Т.е. одной клавишей можно играть мажорные аккорды. Сделаны круговые слайдеры вторым разработчиком, атака, релиз, и слайдер модуляции. Можно экспериментировать с полем Scale, там стоит 12 но можно указать любое число, это на сколько равных частей будет делится октава. Например, 11, или 13, или 24 и поиграть. Сам проект по прежнему тут: https://github.com/wiz3267/ASIOSynthesizer Выглядит интерфейс сейчас так:
0
|
Нарушитель
611 / 92 / 0
Регистрация: 09.02.2020
Сообщений: 2,480
|
|
07.04.2020, 17:45 [ТС] | |
Опан, привет! Только что увидел ваше сообщение, как будет время, обязательно посмотрю ваши проекты.
Добавлено через 4 минуты Еще дополнения, в программе работают кнопки записи и воспроизведения записанного. (Write, Write Stop, Play Written, Stop Playing). После загрузки можно нажать кнопку Play Written, воспроизведется написанная мной мелодия).
0
|
07.04.2020, 17:45 | |
Помогаю со студенческими работами здесь
20
Синтезатор Синтезатор программный Синтезатор речи Синтезатор речи Синтезатор частот Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
![]() |
||||
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
|
Множества в Python
py-thonny 11.06.2025
В Python существует множество структур данных, но иногда я сталкиваюсь с задачами, где ни списки, ни словари не дают оптимального решения. Часто это происходит, когда мне нужно быстро проверять. . .
|
Работа с ccache/sccache в рамках C++
Loafer 11.06.2025
Утилиты ccache и sccache занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться. . .
|
Настройка MTProxy
Loafer 11.06.2025
Дополнительная информация к инструкции по настройке MTProxy:
Перед сборкой проекта необходимо добавить флаг -fcommon в конец переменной CFLAGS в Makefile.
Через crontab -e добавить задачу:
0 3. . .
|
Изучаем Docker: что это, как использовать и как это работает
Mr. Docker 10.06.2025
Суть Docker проста - это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнер, если говорить образно, это запечатанная коробка, в которой находится ваше приложение вместе. . .
|
Тип Record в C#
stackOverflow 10.06.2025
Многие годы я разрабатывал приложения на C#, используя классы для всего подряд - и мне это казалось естественным. Но со временем, особенно в крупных проектах, я стал замечать, что простые классы. . .
|
Разработка плагина для Minecraft
Javaican 09.06.2025
За годы существования Minecraft сформировалась сложная экосистема серверов. Оригинальный (ванильный) сервер не поддерживает плагины, поэтому сообщество разработало множество альтернатив. CraftBukkit. . .
|
Dapper - лучший среди микроORM под C#
UnmanagedCoder 09.06.2025
Знаете, в мире ORM-инструментов для . NET существует негласная иерархия. На вершине массивных фреймворков возвышается Entity Framework - неповоротливый, но всемогущий. А в категории легковесных. . .
|
Сравнение GCC 14 и Clang 18 компиляторов C для HPC
bytestream 08.06.2025
В высокопроизводительных вычислениях (HPC) выбор компилятора - это ход, способный радикально изменить производительность всей системы. Работая последние 15 лет с критическими HPC-системами, я видел. . .
|
Всё о конфигурации ASP.NET Core
stackOverflow 08.06.2025
Старый добрый web. config, похоже, отправился на пенсию вместе с классическим ASP. NET. За годы работы с различными проектами я убедился, что хорошо организованная конфигурация – это половина успеха. . .
|