Форум программистов, компьютерный форум, киберфорум
Программирование звука
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
Нарушитель
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
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.02.2020, 11:28
Ответы с готовыми решениями:

Собственный синтезатор речи
Народ всем привет. Помогите не опытному студенту. В общем написал бота и научил его говорить. Но столкнулся с проблемой, что бот говорит...

Синтезатор
Всем доброго времени суток, хочу сделать простенький синтезатор, путем Beep'а определенной частоты по нажатой клавише, написал кое-что,...

Синтезатор на С++
На ОПИ задали сделать проект, тема любая. Пришла мне в голову такая идея, сделать синтезатор(электро-пианина) на С++(неочень сложный по...

30
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6784 / 2027 / 235
Регистрация: 14.12.2014
Сообщений: 4,257
Записей в блоге: 12
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
 Аватар для Jin X
6784 / 2027 / 235
Регистрация: 14.12.2014
Сообщений: 4,257
Записей в блоге: 12
10.02.2020, 13:56
Лучший ответ Сообщение было отмечено zorxor как решение

Решение

Не пашет
Хотя ASIO на дефолтовом устройстве работает в других прогах.
Миниатюры
Программа-синтезатор   Программа-синтезатор  
1
Нарушитель
611 / 92 / 0
Регистрация: 09.02.2020
Сообщений: 2,480
10.02.2020, 14:45  [ТС]
У меня еще установлено ASIO4ALL. Может в этом дело.

https://www.asio4all.org/

Добавлено через 18 минут
Jin X, спасибо, я понял в чем дело. У меня в коде

C++
1
2
3
4
5
6
// setup ASIO - first device
    if (!BASS_ASIO_Init(1,BASS_ASIO_THREAD))
    {
        Error("BASS_ASIO_THREAD Can't initialize ASIO device");
        return 0;
    }
открывается устройство 1, а это как раз ASIO4ALL, если 0, то у меня тоже работает, но уже через другое ASIO устройство.
Надо будет сделать выбор номера устройства.
1
Нарушитель
611 / 92 / 0
Регистрация: 09.02.2020
Сообщений: 2,480
10.02.2020, 14:54  [ТС]
У ASIO4ALL вот такое окошко появляется

Вложение 1111384
0
Нарушитель
611 / 92 / 0
Регистрация: 09.02.2020
Сообщений: 2,480
10.02.2020, 15:32  [ТС]
Сделал выбор устройства, пока так, ручками через индекс. Интересно проверить,
заработает ли все-таки прога или нет. На гитхабе обновил.
Название: scrnasio4.png
Просмотров: 233

Размер: 3.0 Кб
1
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6784 / 2027 / 235
Регистрация: 14.12.2014
Сообщений: 4,257
Записей в блоге: 12
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
 Аватар для Jin X
6784 / 2027 / 235
Регистрация: 14.12.2014
Сообщений: 4,257
Записей в блоге: 12
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
 Аватар для Jin X
6784 / 2027 / 235
Регистрация: 14.12.2014
Сообщений: 4,257
Записей в блоге: 12
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 минут
p.s. А зачем тут ASIO, почему бы обычный вывод не использовать?
Получалась большая задержка от нажатия клавиши до звука, а у меня MIDI-клавиатура, играть становилось некомфортно.
И "обычный" это через системный микшер функциями hWaveOut? Вначале у меня так и было построено, как видно в попытке добиться минимальной задержки звука идут 20 блоков в очереди по 200 байт, но это можно менять. И все равно задержка оказывалась слишком большой. Что странно, сейчас пытаюсь избавиться в программе вообще от вызова функций типа hWaveOut, при этом звук перестает работает.

Добавлено через 8 минут
– Перемещение окна.
Вот тут тоже загадка, делаю когда стиль окна с заголовком, в начале при старте программы все идет нормально. Но стоит окно подвинуть, что-то внутри происходит, программа начинала глючить, и даже не хотела закрываться кнопкой X. Пришлось снимать процесс, а потом сделать кнопку <Abort>. Надо разбираться, тогда я не стал искать загвоздку, мне скорее хотелось получать звук.
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6784 / 2027 / 235
Регистрация: 14.12.2014
Сообщений: 4,257
Записей в блоге: 12
11.02.2020, 11:40
Цитата Сообщение от zorxor Посмотреть сообщение
Jin X, указание частоты звука есть, плохо читали описание.
Неверно выразился, пардон. Я имел в виду частоту дискретизации.

Цитата Сообщение от zorxor Посмотреть сообщение
Но я подумал, что при тестировании модуля уже написанного как VSTi будет слишком долго идти процесс отладки.
Можно сделать оболочку с клавиатурой, которая подгружает VSTi.
Но это так, на будущее.

Цитата Сообщение от zorxor Посмотреть сообщение
Получалась большая задержка от нажатия клавиши до звука, а у меня MIDI-клавиатура, играть становилось некомфортно.
И "обычный" это через системный микшер функциями hWaveOut?
Ясно. Обычный – или через waveOutXXX, или через тот же BASS.

Цитата Сообщение от zorxor Посмотреть сообщение
Вот тут тоже загадка, делаю когда стиль окна с заголовком
Можно сделать перемещение за само окно, а не заголовок.
0
Нарушитель
611 / 92 / 0
Регистрация: 09.02.2020
Сообщений: 2,480
11.02.2020, 13:57  [ТС]
Исправил много, теперь можно перемещать окно. Выглядит сейчас так:
Миниатюры
Программа-синтезатор  
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6784 / 2027 / 235
Регистрация: 14.12.2014
Сообщений: 4,257
Записей в блоге: 12
12.02.2020, 13:27
Пресеты можно ещё добавить...
Мне теперь самому захотелось синтезатор сделать
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
20.03.2020, 17:29
Если вам не трудно можете глянуть ещё мои работы на эту тему в разных годах. У кого нерусская ось, некоторые русские надписи в программах могут отображаться некорректно.
Вложения
Тип файла: zip synthesizer-1.zip (47.2 Кб, 15 просмотров)
Тип файла: zip synthesizer-2.zip (394.1 Кб, 11 просмотров)
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.04.2020, 17:45
Помогаю со студенческими работами здесь

Синтезатор
Всем привет! Помогите, пожалуйста, решить задачу. Вожусь уже 3 день, не могу понять, как её делать. Написать программу «синтезатор»....

Синтезатор программный
Подскажите где можно скачать или название приличного, повторюсь качественного синтезатора звука основных музыкальных инструментов(пианино,...

Синтезатор речи
люди подскажите как сделать синтезатор речи? какие нужны библиотеки.

Синтезатор речи
Здравствуйте, помогите пожалуйста а возможно ли сделать программу для синтезатора речи или для расшифровки текста с колонок? Заранее...

Синтезатор частот
Здравствуйте, мне нужен реализовать синтезатор частот в матлабе кодом(не Симулинк), но я даже не знаю с чего вообще можно начать...схема...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
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. За годы работы с различными проектами я убедился, что хорошо организованная конфигурация – это половина успеха. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »