Страница 1 из 6 12 ... ПоследняяПоследняя
Показано с 1 по 10 из 58

Тема: Синтезатор с чистым строем

              
  1. #1

    По умолчанию Синтезатор с чистым строем

    Здравствуйте, уважаемые форумчане!

    Я по образованию и роду занятий не музыкант,
    но немного увлекаюсь теорией музыки
    и это увлечение в итоге привело к тому,
    что я написал программульку, синтезатор с чистым строем.

    Информация тут:

    http://zed.karelia.ru/go.to/for.all/software/ji-synth

    Исходные тексты тут:

    http://zed.karelia.ru/mmedia/bin/xji...-02-03.tar.bz2

    Буду признателен, если кто-то, кто интересуется чистым строем,
    попробует эту программку и выскажет предложения или замечания.

    Программа написана для того,
    чтобы попробовать "на вкус" чистый строй.

    При отсутствии "настоящего" синтезатора может
    вполне подойти для несложного аккомпанемента пению :)

    Написана для ОС Linux, проверялась в Debian и Ubuntu.

    P.S. Извиняюсь, если разместил тему не в том разделе,
    ничего более подходящего не нашел.
    Последний раз редактировалось xjiss; 17.02.2012 в 22:15.

  • #2

    По умолчанию Re: Синтезатор с чистым строем

    ... ндас, ЧСХ, народ безмолвствует...

    ладно, попробуем с другой стороны зайти.

    специально "написал" и сыграл "Реквием по РТС".

    http://zed.karelia.ru/mmedia/sound/r...tet-tuning.raw
    (48000 Hz, stereo, s16 little endian)

    ну? )) есть кто живой?
    Последний раз редактировалось xjiss; 24.02.2012 в 09:33.

  • #3
    Николай Scratch Аватар для DJ Хруст
    Регистрация
    17.02.2006
    Адрес
    Москва
    Сообщений
    2,744
    Записей в дневнике
    3

    По умолчанию Re: Синтезатор с чистым строем


    Уважаемый xjiss, наверное, проблема в том, что здесь мало линуксоидов.

  • #4

    По умолчанию Re: Синтезатор с чистым строем

    Да, наверное. Ну да и ладненько.

  • #5

    По умолчанию Re: Синтезатор с чистым строем

    Думаю, мне будет очень интересно почитать исходники. Возможно, это почти то самое, что я давно ищу. Потому как я как раз пробовал найти хотя бы онлайновые синтезаторы для некоторых строев, однако ничего хорошего не нашёл. Возможно, если повезёт, удастся переделать этот синтезатор для работы в каких-нибудь персидских ладах. Или просто в 53-РДО, или ещё какие-нибудь РДО, чтобы просто поиграться и посравнивать их на слух между собой. В своё время, лет уже 10 назад (ой, блин, неужели это уже целых 10 лет прошло...) я начинал было писать игрульки, издающие (и даже записывающие) какие-то звуки, и даже, хе-хе, показывал и рассказывал одному цивильному товарищу, как это делается (в качестве источника хватило хороших комментариев в заголовках от OSS, кажется), но... это было во времена ещё OSS'ного интерфейса звукового устройства, а очень вскоре он стал как-то неактуален, сменившись на ALSA, и всё на этом застопорилось. В то время как попытки понять, как то же самое делать в ALSA, кончились ничем, т.к. такого же понятного руководства, как в заголовках OSS, я что-то не нашёл среди аналогичных заголовков. А потом на несколько лет (примерно до 2009) вообще вышел из рядов пользователей Линукс. Может быть, почитав Ваши исходники, мне, наконец, удастся что-то понять Да ещё тут программа с нитями - в своих тогдашних почти-школьных программах я до нитей не доходил, всё делал последовательно в единственной. Короче, надеюсь, такая сравнительно небольшая программа, которую и части которой, в отличие от больших, можно обозреть взглядом одного человека - почти самое то что надо, чтобы посмотреть, как более-менее цивильно делается то, что я хотел и пытался сделать нецивильно тогда. В общем, большое спасибо: уже из того, что я успел прочитать в исходниках за первые 10-15 минут, я почерпнул много интересного и полезного для себя, при своём самом начальном уровне. Уже давненько я ничего на C не писал вообще - наверное, как раз те самые лет 10 после тех первых попыток, т.к. по работе-то всё перл да перл обычно...

  • #6

    По умолчанию Re: Синтезатор с чистым строем

    Цитата Сообщение от Toman Посмотреть сообщение
    Или просто в 53-РДО, или ещё какие-нибудь РДО, чтобы просто поиграться и посравнивать их на слух между собой.
    Думаю, с точки зрения кодинга - не проблема.
    Проблема вот где
    http://zed.karelia.ru/go.to/for.all/thoughts/12tet


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

    Цитата Сообщение от Toman Посмотреть сообщение
    Да ещё тут программа с нитями
    Есть еще вариант с callback.
    http://zed.karelia.ru//mmedia/src/music/ji-synth.c
    (это один из ранних)

    Он мне больше нравится,
    но, к сожалению, он не работает с Pulse Audio
    из-за причудливых архитектурных взаимотоношений
    этой ALSA с Pulse Audio.

    Цитата Сообщение от Toman Посмотреть сообщение
    В общем, большое спасибо: уже из того, что я успел прочитать в исходниках за первые 10-15 минут, я почерпнул много интересного и полезного для себя, при своём самом начальном уровне.
    Ок, жду замечаний и всё такое.

    Большая проблема - тембр.
    Я его "делал" тупо перебирая различные формы сигнала.
    Сейчас там используется гауссиана (на первом полупериоде колебания),
    второй оставлен нулём. Звучит относительно сносно, но глуховато.

  • #7
    Постоянный участник
    Регистрация
    17.02.2007
    Адрес
    Воронеж
    Сообщений
    662
    Записей в дневнике
    16

    По умолчанию Re: Синтезатор с чистым строем

    Цитата Сообщение от xjiss Посмотреть сообщение
    Нет, это не проблема.

  • #8

    По умолчанию Re: Синтезатор с чистым строем

    Цитата Сообщение от Dmitrii Посмотреть сообщение
    Нет, это не проблема.
    Имеется ввиду, что при генерации звука при помощи звуковой карты
    нельзя сгенерировать, к примеру, пилу/менандр/etc с каким
    угодно периодом (и, соответственно, с какой угодно частотой).

    Период всегда будет кратен 1/F, где F - частота, на которой работает звучка.

    Считать это проблемой или нет - это другой вопрос.
    Если JI - то это как раз не проблема. )

    А если темперации - тогда да, какбы проблема,
    поскольку не получится абсолютно точно выдержать
    интервалы. Хотя.. по мне это тем более не проблема )

  • #9

    По умолчанию Re: Синтезатор с чистым строем

    Цитата Сообщение от xjiss Посмотреть сообщение
    Период всегда будет кратен 1/F, где F - частота, на которой работает звучка.
    Это только если задаться целью уложить период сигнала обязательно в целое число отсчётов. Да, может быть, так оно проще, и занимает меньше всего памяти для хранения пресинтезированного образца, насколько это возможно. И требует минимум процессорного времени на вычисление отсчётов в этих пресинтезирванных образцах. Но с другой стороны, когда речь идёт о таких частотах, где на период звука приходится десяток-другой отсчётов, а то и меньше - в общем-то не проблема пресинтезировать не один период такого звука, а достаточно много. Если мы для каждой ноты (считая, что каждая нота синтезируется отдельным генератором) будем синтезировать, скажем, столько периодов, сколько укладывается в 1 секунду, то мы можем в области сколь угодно высоких частот (вплоть до принципиального предела по частоте дискретизации) синтезировать частоты с шагом по крайней мере 1 Гц. А при желании - и с большей точностью, если синтезируемый период не делать равным точно 1 с, а немножко укорачивать или удлинять согласно нашим потребностям.

    И вообще, всё это относится только к работе с пресинтезированным звуком. На лету же синтезировать можно звук вообще любой частоты - с такой точностью, какую позволяют сами вычисления на компьютере.

    Разумеется, на высоких частотах при таком синтезе значения отсчётов будут как-то меняться с каждым периодом звука (а повторяться только с каждым синтезируемым периодом). Поэтому частоты вроде F/2 на самом деле очень проблематичны: из-за наличия всего лишь 2 отсчётов в периоде мы не можем двигать её по фазе, т.к. при этом будет фактически падать вплоть до нуля амплитуда. А значит, будут возникать сильные биения. Более-менее сносно работает синтез с нецелым числом отсчётов на период при числе отсчётов на период ближе к 3 (пусть даже немножко меньше) и более - это довольно близко аналогично той причине, по которой трёхфазные (или с бОльшим числом фаз) асинхронные электродвигатели лучше однофазных (которые даже не могут без посторонней помощи пуститься в определённую нужную сторону). Поэтому, собственно, реальная "рабочая" часть частотного диапазона ЦАПей и АЦПей должна довольно сильно не дотягиваться до F/2. Более-менее реалистичная оценка - это F/3 с небольшим. Ну т.е. для частоты дискретизации 48 кГц можно более-менее дотягиваться где-то до 16-18 кГц, а выше лезть уже не стоит. При этом необходимо при синтезе звука с высокими частотами (а значит, малым числом отсчётов на период) подразумевать, что значения отсчётов не должны быть мгновенными значениями используемой функции в данной точке, а должны быть средними за весь тот кусок функции, который они "представляют". Если это дело нарушить, то в самом деле будем иметь артефакты в виде биений с частотой f-F/n. А при точных значениях f=F/n, хотя и не будет биений, но тембр звука будет тем или иным образом искажаться, отклоняясь от запланированного.

  • #10

    По умолчанию Re: Синтезатор с чистым строем

    Цитата Сообщение от Toman Посмотреть сообщение
    Это только если задаться целью уложить период сигнала обязательно в целое число отсчётов.
    эээ... а как звучка может выдать _нецелое_ число отсчетов?....

    Цитата Сообщение от Toman Посмотреть сообщение
    И вообще, всё это относится только к работе с пресинтезированным звуком. На лету же синтезировать можно звук вообще любой частоты - с такой точностью, какую позволяют сами вычисления на компьютере.
    Во-первых, честно говоря, не вижу разницы между real-time (на лету) и "заранее".

    Во-вторых, не понимаю, как можно сгенерировать *дискретный по времени* сигнал любой частоты.
    Давайте на тупом примере. Пусть у нас сигнал - меандр.
    И пусть звучка работает на 48 кгц, то есть длительность одного сэмла
    примерно 20 мксек (чуть больше, не важно).

    Какую самую высокую частоту меандра можно получить?
    Один сэмпл - типа 10000, второй - минус 10000.
    То есть минимальный период - 40 мксек.
    Соотвестсвенно, макс. частота - F/2

    Следующий период - 3*20 = 60 мксек., частота - F/3
    Ну и тд, чем больше, тем больше возможностей
    для изменения скважности меандрика.

    Но, пардон, как можно сгенерировать меандр с периодом
    в 2.5 периода дикретизации?!?

    Или в 100 с половиной?

    ---
    Может, вы Фурьёвое преобразование имеете ввиду?
    Так оно само по себе в дискретном виде неточно.
    Скажем, если синус раскладывать, то одна гармоника
    получится тогда и только тогда, когда будет взято целое
    число периодов этого синуса.

  • Страница 1 из 6 12 ... ПоследняяПоследняя

    Похожие темы

    1. Москва синтезатор
      от Mikle в разделе Покупка и продажа инструментов и аксессуаров
      Ответов: 1
      Последнее сообщение: 31.10.2008, 00:05
    2. Как работать над звуком, чтобы он был чистым?
      от Violin-zimmerman в разделе Скрипичная и альтовая музыка
      Ответов: 16
      Последнее сообщение: 24.08.2008, 10:12
    3. Синтезатор
      от Викуля в разделе Инструментарий
      Ответов: 7
      Последнее сообщение: 13.02.2007, 21:20
    4. Синтезатор
      от TANIA в разделе Инструментарий
      Ответов: 15
      Последнее сообщение: 05.09.2006, 20:01

    Социальные закладки

    Социальные закладки

    Ваши права

    • Вы не можете создавать новые темы
    • Вы не можете отвечать в темах
    • Вы не можете прикреплять вложения
    • Вы не можете редактировать свои сообщения
    •  
    Яндекс.Метрика Rambler's Top100