VCO с чистым звуком
- Войдите на сайт для отправки комментариев
Вс, 29/12/2019 - 20:04
Здравствуйте
Вот программа генератора, но частота здесь меняется скачками и звук получзается не чистой.
Как сделать чтобы частота менялась плавно ?
void setup() { pinMode(9, OUTPUT); } void loop() { int frequencyinput = analogRead(A0); frequencyinput = map(frequencyinput, 0, 1203, 50, 5000); tone(9, frequencyinput); delay(100); }
Чистый звук можно получить только синусоидой, а прямоугольник по определению имеет кучу гармоник. Переключение частот, если Вам надо плавно лучше кнопками или энкодером. Кроме того - избавьтесь от delay().
и строка 8 должна быть иной, как минимум
А так не лучше будет?
Спасибо, звук лучше, пробовал тоже с STM32F103 , но с ним не работает, пины kонечно поменял.
Вот ещё одна программа, измеритель постоянного напряжения, отчет в мВ.
Тут всё просто: frequency = f(voltage);
VCO_mV:15:21: error: 'f' cannot be used as a function
Отлично. Теперь нужно в функцию f() поместить формулу пересчёта mV в Hz. Ведь только Вам она известна.
frequency = volt;
Сделал так, но звук меняется не плавно, вместо - tone - нужно чти то другое.
в среднем человек слышит изменение частоты на 7 герц и более, если взять 10 герц на единицу то 1023 дадут изменение на 10 килогерц, а вам надо 5, осталось убрать скачки с аналогового пина и изменять частоту на 10 герц, если значение с аналогового пина изменилось на 2 единицы...
выше приводил код, где сигнал с аналогового пина усредняется, вывести значение в монитор порта и посмотреть, на сколько единиц скачет, это и будет дискретность (значение +1), 1023 / (значение +1) = количество градаций, 4500 / количество градаций = цена градации в герцах
Можно поиграться значением в строке 86 того скетча, от 4 до 10, код не мой, здесь на сайте публиковали, можно уточнить у автора
antonx, строго говоря, получить от цифрового (АКА дискретного) устройства плавное (АКА непрерывное) изменение чего либо - задача принципиально невыполнимая.
Соответственно, чтобы что-то посоветовать по существу, условие задачи должно быть переформулировано так, чтобы сама задача имела решение.
Судя по Вашим сообщениям, у Вас явно недостаточно знаний, чтобы грамотно сформулировать техническую задачу. Поэтому попытайтесь описать, чего именно Вы хотите добиться. В частности, что именно Вам нужно: "частота" или "звук".
в среднем человек слышит изменение частоты на 7 герц и более...
Слуховой анализатор человека (ухо) обладает логарифмической характеристикой по обеим осям (частоты и амплитуды), поэтому "изменение частоты" для него следует измерять не в Герцах, а в процентах.
Но это имеет смысл обсуждать только в случае, если ТС нужен именно "звук". Ведь он может, скажем, использовать частотомер для индикации напряжения, а на слух проверять работу схемы лишь при отладке.
"изменение частоты" для него следует измерять не в Герцах, а в процентах.
Звук на слух измеряют в октавах.
я так понял ему нужно глиссандо получить
Погуглите на тему DDS генератора. Даже на ардуине можно несколько килогерц синусоиды выжать, или несколько десятков килогерц прямоугольников.
Есть генератор на NE555 частота меняется плавно, с tone(PC13, frequency); сперва меняется скважность импульсов - 0% -100% , когда она превышает 100%, частота увеличивается вдвое и снова меняется скважность 0% -100%, то что видно на осциллографе, так что проблема не в потенциометре, а в tone.
"изменение частоты" для него следует измерять не в Герцах, а в процентах.
Звук на слух измеряют в октавах.
ты это японцам скажи )))
Есть генератор на NE555 частота меняется плавно, с tone(PC13, frequency); сперва меняется скважность импульсов - 0% -100% , когда она превышает 100%, частота увеличивается вдвое и снова меняется скважность 0% -100%, то что видно на осциллографе, так что проблема не в потенциометре, а в tone.
это не проблема, это особенности реализации функции
"изменение частоты" для него следует измерять не в Герцах, а в процентах.
Звук на слух измеряют в октавах.
Обычно используются более мелкие единицы, например, в музыке используется полутон - 1/12 октавы. А для более точных вещей - цент: 1/100 полутона или 1/1200 октавы.
В среднем здоровый человек различает интервал 6-20 центов, а люди с развитым музыкальным слухом - 3-4 цента.
В общем, IMHO вполне вменяемым интервалом для того, чтобы человеческий слух воспринимал изменение высоты тона как плавное, можно считать 1/32 тона (1/384 октавы, 3.1 цента). http://arduino.ru/forum/proekty/analog-analogovogo-sintezatora
Спасибо за пересказ википедии. Ты, наверно, очень умным себя чувствуешь сейчас.
Спасибо за пересказ википедии. Ты, наверно, очень умным себя чувствуешь сейчас.
Извините, уважаемый, но Вы наверное очень умный и знаете чем отличается синусоида от пилы или прямоугольника. Тогда купите генератор синусоиды, подключите к ардуинке и не парьте нам мозги. Если Вы хотите получить ЧИСТЫЙ звук на цифровом аппарате - Вам в любом случае надо пользоваться ЦАП. В том или ином виде.
На NE555 звук чистой (прямоугольник ) и перестройка плавная , на ардуино для одной частоты тоже звук чистой.
проблема не в потенциометре, а в tone.
Ну хорошо, попробуйте вот такой код и скажите - на ваш слух частота меняется плавно?
Есть интервалы, когда частота меняется плавно.
Здесь частота меняется плавно.
https://www.szynalski.com/tone-generator/
Вы можете там выбрать прямоугольник . На частоте около 30 Гц вы можете услышать изменение на 1 Гц.
Есть интервалы, когда частота меняется плавно.
А конкретнее?
Есть интервалы, когда частота меняется плавно.
Здесь частота меняется плавно.
https://www.szynalski.com/tone-generator/
Вы можете там выбрать прямоугольник . На частоте около 30 Гц вы можете услышать изменение на 1 Гц.
нет, это интермодуляционные
Есть интервалы, когда частота меняется плавно.
А конкретнее?
В начале.
Слышно два звуковых сигнала, один громкий частота меняется плавно второй потише ШИМ.