Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
.NET 4.x

Синтезатор на подобии 3xOsc

06.02.2012, 19:49. Показов 4860. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здавствуйте уважаемое кибер-сообщетво! После данного сообщения Памирыча мне стало интересно: "А смогу ли я написать такой синтезатор". И вот через два дня "работы" получилось это чудо(скриншоты ниже). А тепер собственно вопрос: не могу поняк как в NAudio можно сделать такую штуку как panning(когда в одном канале громкость больше чем в другом), и вообще как там работать с парой каналов. Итак, кто чем может прошу Вас помочь
Миниатюры
Синтезатор на подобии 3xOsc   Синтезатор на подобии 3xOsc   Синтезатор на подобии 3xOsc  

Вложения
Тип файла: zip 3xOsc.zip (391.0 Кб, 132 просмотров)
2
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.02.2012, 19:49
Ответы с готовыми решениями:

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

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

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

17
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
07.02.2012, 06:40
Alex Sabaka, у меня чего то при нажатии клавиши сначала какой-то скрежет, а потом уже звук.
У тебя так же?
0
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
07.02.2012, 11:05  [ТС]
Тоже так. Это либо сам NAudio лагает, либо изза малого количиства сэмплов. Чуть пожже попробую решить, т.к. сейчас немогу.
1
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
07.02.2012, 11:06
Alex Sabaka, все равно это уже что-то, продолжай
0
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
07.02.2012, 21:46  [ТС]
Забыл сказать: все кто желает, может присойденятся к разработке
Итак, вот "новая" версия:
  • Убрал:
  1. Вывод аудио через DirectOut;
  2. Визуализатор.
  • Добавил:
  1. Вывод аудио через драйвер ASIO(или WASAPI, по выбору);
  2. Двухканальный звук;
  3. Редактор формул, для произвольных волн(недоработано).

Вопрос про panning все еще в силе, так что если кто-то что-то знает, то говорите, не стесняйтесь
После изменения драйвера на ASIO помехи при проигрывании пропали, но появилась небольшая задержка звука.
Вложения
Тип файла: zip 3xOsc.zip (432.2 Кб, 64 просмотров)
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
08.02.2012, 06:42
Цитата Сообщение от Alex Sabaka Посмотреть сообщение
После изменения драйвера на ASIO помехи при проигрывании пропали, но появилась небольшая задержка звука
Странно, я всегда пользовался ASIO4ALL когда нужно было петь или играть вживую, из-за малой задержки звука.
Там же должен быть регулятор, в принципе в 32 милисекунды задержка на слух не так заметна и хрипеть не должно, проверено на слабых аудиокартах
0
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
23.05.2012, 02:10  [ТС]
Лучший ответ Сообщение было отмечено как решение

Решение

Не думаю, что кто то следит за этим проектом, но он тем не менее развивается! Итак, нового много: теперь это не просто синтезатор, а недо-степ-секвенсор и синтезатор Как это чудо выглядит, можно посмотреть на скринах. В планах у меня сделать полноценный плейлист(как в FL Studio), сохранение/загрузку инструментов, паттернов, пелейлистов, и еще много-много чего...

Если у кого-то есть предложения и пожелания, то можете говорить, не стесняйтесь! С радостью всех выслушаю
Миниатюры
Синтезатор на подобии 3xOsc   Синтезатор на подобии 3xOsc   Синтезатор на подобии 3xOsc  

Вложения
Тип файла: zip 3xOsc.zip (943.4 Кб, 48 просмотров)
3
 Аватар для dimasamchenko
336 / 269 / 21
Регистрация: 30.03.2009
Сообщений: 500
23.05.2012, 10:35
Цитата Сообщение от Alex Sabaka Посмотреть сообщение
Не думаю, что кто то следит за этим проектом
Ну почему-же? Слежу с интересом!
Цитата Сообщение от Alex Sabaka Посмотреть сообщение
Если у кого-то есть предложения и пожелания, то можете говорить, не стесняйтесь! С радостью всех выслушаю
Я занимаюсь созданием MIDI файла и его преобразованием в WAVE.

Меня интересуют вопросы загрузки паттернов
в частности загрузка форматов аудио фонтов SF2 и особенно NKI
для преобразования MIDI файла в WAVE.

Формат аудио фонтов SF2 к сожалению говорят устарел а новый NKI
какой-то супер секретный (не могу найти даже спецификацию файла)

Если Вас интересует данное направление темы, то можем сотрудничать в этой области.
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
23.05.2012, 11:30
Че то валит ошибку... Когда второй канал добавляю.
Если она вылезла хоть раз, потом от нее не избавиться, что бы я не добавлял
Миниатюры
Синтезатор на подобии 3xOsc  
0
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
23.05.2012, 12:17  [ТС]
Цитата Сообщение от Памирыч Посмотреть сообщение
Че то валит ошибку...
А подробности ошибки можно??? Я знаю что бывают "fatal execution engine error", и с чем это связано я не именю ни малейшего понятия. Но после смены драйвера на ASIO и принудительной очистки мусора, вроде все пропало.

Аааа... все заметил, что за ошибка Вы просто создаете два(и больше) инструментов с одинаковыми именами Просто каждому новому инструменту дайте уникальное имя.
Миниатюры
Синтезатор на подобии 3xOsc  
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
23.05.2012, 12:31
Alex Sabaka, да, но ошибку надо как-то оформить. И сделать чтоб она больше не вываливалась, а то потом хоть разные выбирай - не дает работать.
Не понял, где менять высоту звука. Все на одной ноте?
0
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
23.05.2012, 12:39  [ТС]
Цитата Сообщение от Памирыч Посмотреть сообщение
Не понял, где менять высоту звука. Все на одной ноте?
Пока да, в планах(сегодня/завтра) создать плейллист, и уже тогда буду делать пиано ролл. Просто сейчас не могу придумать как организовать этот пиано ролл... Нет идей пока как данные в памяти представить
0
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
23.05.2012, 12:46  [ТС]
Цитата Сообщение от dimasamchenko Посмотреть сообщение
Если Вас интересует данное направление темы, то можем сотрудничать в этой области.
Интересует, конечно же! Если Вам интересно, то я покопался в гугле и нашел такой инструмент для конвертации NKI в wave(смотреть вложения). Сам этой темой буду заниматься позже(сейчас времени свободного мало, к ЗНО готовлюсь), через две недельки займусь
Вложения
Тип файла: zip Desktop.zip (1.86 Мб, 16 просмотров)
1
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
24.05.2012, 23:23  [ТС]
Типо новая версия!
Теперь все не на одной ноте(зато, пока что, все в одной октаве - четвертой). В планах все как обично, сейчас уже работая над созданием плейлиста, и подумываю о загрузке сэмплов

PS Предложения и пожелания все также принимаю! Только никто не говорит... Вы не стесняйтесь, я всех выслушаю!

PPS Для изменения ноты наведите курсор, на ту которую хотите изменить и покрутите колесиком.
Миниатюры
Синтезатор на подобии 3xOsc   Синтезатор на подобии 3xOsc   Синтезатор на подобии 3xOsc  

Вложения
Тип файла: zip 3xOsc.zip (1,015.8 Кб, 29 просмотров)
1
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
27.05.2012, 12:43  [ТС]
Апдейт!
Что нового можно увидеть на скриншотах. О любых багах и вылетах пишите здесь(и если можно, то стак-трейс выкладывайте)
Миниатюры
Синтезатор на подобии 3xOsc   Синтезатор на подобии 3xOsc   Синтезатор на подобии 3xOsc  

Синтезатор на подобии 3xOsc   Синтезатор на подобии 3xOsc   Синтезатор на подобии 3xOsc  

Синтезатор на подобии 3xOsc   Синтезатор на подобии 3xOsc  
Вложения
Тип файла: zip SharpXOscSequencer.zip (269.3 Кб, 55 просмотров)
1
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
29.05.2012, 20:18  [ТС]
Появилось у меня пару вопросов:
  1. Кто может наглядно объяснить, что означают
    эти фичи
    • Invert Switch (INV) - Allows you to invert the phase of the oscillator. When you mix two oscillators with equal settings, and one of them is inverted, they cancel each other and no sound is produced. However, if you set the Fine frequency to a slightly different value, this can produce interesting flanging/phasing effects.
    • Stereo Phase (SP) - Allows you to set different phase offset for the left and right channels of the generator. The offset results in the oscillator starting at a different point on the oscillator's shape (for e.g. start in the highest value of the sine function instead at zero point). Stereo phase offset adds to the richness and stereo panorama of the sound produced.
      Stereo Detune (SD)[/b] - Allows you to de-tune the stereo sound of the generator, by applying a slightly different frequency at the left and right sound channels. This adds to the stereo panorama of the sound produced, and creates a 'stereo flange' effect. When the knob is in the middle, the effect is turned off.
    • Panning (PAN) - Sets the stereo panning of the individual oscillators.
    • Coarse Tuning (CRS) - Sets the coarse tuning (range -24 to +24 semitones) of the individual oscillators.
    • Fine Tuning (FINE) - Sets the fine tuning (range -1 to +1 semitone) of the individual oscillators.
    и как они работают?
  2. Сейчас секвенсер работает на таймере, т.е. с каждым кликом таймера заново инициализируется устройство вывода аудио. Это мешает создать полноценный пиано-ролл, и отсюда кое-какие проблемы с качеством вывода(лишние шумы). Как это можно обойти?

Добавлено через 19 часов 58 минут
up up up
0
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
09.06.2013, 01:02  [ТС]
Всем снова привет!
Так как старый проект(SharpXOscSequencer) был случайно мною убит(удален с HDD), да и не хотелось мне его продолжать из-за его корявости, поэтому я начал новый проект:)
Так вот, есть такой вопрос: как избавится от шумов и кликов в готовом аудиофайле(на скиншоте из Adobe Audition выделено синим). Причину этих кликов я знаю, они появляются из-за разностей фаз на конце одной ноты и начале другой(см. вложения, там где желтым выделено, может станет понятнее). За рендер в аудиофайл отвечает ф-ция Render в классе Synth.PianoRollWindow.
Функция Render
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
        void Render(Stream stream, List<RenderElement> elements, int sampleRate, ToolStripProgressBar pb)
        {
            int length = elements.Max(e => e.EndPosition);
 
            BinaryWriter writer = new BinaryWriter(stream);
            short frameSize = (short)(sizeof(short) / sizeof(byte));
            writer.Write(0x46464952); // "RIFF"
            writer.Write(36 + length * frameSize);
            writer.Write(0x45564157); // "WAVE"
            writer.Write(0x20746D66); // "frm "
            writer.Write(16);
            writer.Write((short)1);
            writer.Write((short)1);
            writer.Write(sampleRate);
            writer.Write(sampleRate * frameSize);
            writer.Write(frameSize);
            writer.Write((short)16);
            writer.Write(0x61746164); // "DATA"
            writer.Write(length * frameSize);
 
            for (int i = 0; i < length; ++i)
            {
                double rValue = 0.0;
                var atPos = elements.Where(e => i > e.StartPosition && i < e.EndPosition).ToList();
                if (atPos.Count > 0)
                {
                    foreach (var e in atPos)
                    {
                        double cfreq = e.Frequency * SHelper.TwoPi / sampleRate;
                        double dumping = Dump(e.Velocity / 1200.0, cfreq, i - e.StartPosition, e.Duration / (double)sampleRate, sampleRate);
 
                        rValue += MakeSound(i, cfreq) * dumping * e.Velocity;
                    }
                    rValue /= atPos.Count;
                }
                short curr = (short)(rValue * short.MaxValue);
                foreach (var el in BitConverter.GetBytes(curr))
                    stream.WriteByte(el);
 
                pb.Value = (int)(100.0 * i / (double)length);
            }
        }
Ф-ция MakeSound просто суммирует несколько синусов(обертоны). А ф-ция Dump отвечает за затухание. Шумы и клики появляются из-за того, что при переходе от ноты к ноте меняется частота, и появляется сдвиг фаз. Собственно вопрос в том как "сдвинуть обратно", что-бы не было шумов?
PS Надеюсь объяснил я все понятно:)
PPS И надеюсь модераторы не обидятся за, то что поднял мертвую тему.
Миниатюры
Синтезатор на подобии 3xOsc   Синтезатор на подобии 3xOsc  
Вложения
Тип файла: zip Synth.zip (144.7 Кб, 55 просмотров)
0
0 / 0 / 0
Регистрация: 01.09.2015
Сообщений: 1
01.09.2015, 20:15
Большое спасибо вам за исходник Я давно искал какой-нибудь секвенсор - и тут такое сокровище! Я скачал и улучшил ваш код. Во первых - добавил возможность создавать сразу несколько форм волны. То есть, звучать инструмент будет как например Square и Sine и т.п. Если хотите я могу помочь вам.

Добавлено через 24 минуты
P.S Я просто давно хотел изучить код создания звука
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.09.2015, 20:15
Помогаю со студенческими работами здесь

Синтезатор цвета
Что это вообще такое? Где найти про него информацию, размеры платы, технические характеристики, в общем все. Вбиваю в гугл и мне только...

Синтезатор речи
Подскажите библиотеку или WinApi чтобы можно в программе было воспроизводить занесенный текст. Допустим. Есть форма с кнопкой и EDIT. В...

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

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

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


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru