- Регистрация
- 21.07.20
- Сообщения
- 40.408
- Реакции
- 1
- Репутация
- 0
You must be registered for see links
Кассетный синтезатор
Мне нравятся необычные музыкальные проекты. Например, я выпустил
You must be registered for see links
, основанный на записях, сделанных NASA во время миссии «Аполлон-12». А недавно я, для управления темпом музыки, использовал собственное
You must be registered for see links
. Результаты моих музыкальных экспериментов вы можете найти
You must be registered for see links
.Недавно я сделал из старого кассетного плеера, напоминающего Walkman от Sony, синтезатор, управляемый MIDI-командами. Для этого мне понадобилась плата Arduino и немного кода. То, что получилось, можно назвать «кассетным синтезатором».
Кассетный синтезатор работает, проигрывая монотонный звук (одну ноту), заранее записанный на кассету. Высотой звука можно управлять, она зависит от скорости проигрывания плёнки. К идее создания кассетного синтезатора меня привёл проект
You must be registered for see links
, а создатели этого проекта вдохновлялись идеей
You must be registered for see links
.Вот видео, в котором показано как я играю на кассетном синтезаторе, используя MIDI-клавиатуру.
Этот синтезатор хорош тем, что у него получается очень «аналоговое» звучание при смене нот. А именно, часто высота звука плавно меняется при переходе от ноты к ноте, звук, в результате, получается весьма интересным (то есть, в музыке, исполняемом на этом синтезаторе, часто встречается эффект
You must be registered for see links
). Кроме того, на плёнку можно записать абсолютно любой звук, поэтому синтезатор у меня получился достаточно универсальным.Создание кассетного синтезатора
На самом деле, создать такой синтезатор очень просто. Мне попалось хорошее
You must be registered for see links
, посвящённое тому, как модифицировать кассетный плеер, сделав так, чтобы скоростью воспроизведения кассеты можно было бы управлять, используя регулятор напряжения. Я доработал имеющийся у меня плеер подобным образом. Я, кроме того, создал, на основе браузера, простой MIDI-контроллер, рассчитанный на то, чтобы получать нужные ноты путём модификации напряжения.Нижеприведённые инструкции посвящены аппаратной части синтезатора, представленной плеером и Arduino, и программной, роль которой играет MIDI-контроллер.
Материалы
- Кассетный плеер GE 3-5362A ($15, их очень много на eBay)
-
You must be registered for see links($23).
- Цифроаналоговый преобразователь
You must be registered for see links($11).
-
You must be registered for see linksс 3,5 мм разъёмом на одной стороне и с обычными проводами на другой ($8).
- Соединительные
You must be registered for see links(если у вас их нет, то стоят они $5).
-
You must be registered for see linksи то, что нужно для пайки ($25, пользоваться им можно будет всю жизнь).
Модификация плеера GE 3-5362A
Обратите внимание на то, что вам необязательно использовать плеер GE 3-5362A. Подойдёт любой плеер, который поддерживает переменную скорость воспроизведения. Если вы будете делать кассетный синтезатор на основе другого плеера — вам лишь понадобится разобраться с его внутренним устройством, и с тем, куда припаивать соответствующие провода.
Начнём с того, что откроем корпус плеера. Для этого нужно открутить четыре винта, расположенных на задней части устройства. Больших усилий тут прилагать не нужно — достаточно открутить винты и аккуратно открыть корпус. Обратите внимание на то, что задняя и передняя части устройства связаны проводами, подводящими к электронике плеера питание. Не оборвите эти провода.
Разобранный плеер, который уже модифицирован
Для того чтобы превратить плеер в кассетный синтезатор, нам понадобится припаять к нему два новых компонента. Первый — это провод, подключённый к Vin, с помощью которого мы сможем управлять скоростью проигрывания плёнки, используя регулятор напряжения. Второй — это аудиоразветвитель, подключённый к Line in, который позволит нам записывать звуки на кассету (это пригодится тем, у кого нет магнитофона).
Если вы не умеете паять — не переживайте. Это просто. Посмотрите
You must be registered for see links
видео. Из него вы узнаете о том, как припаивать провода к контактным площадкам.Подключение к Vin и организация управления скоростью протяжки ленты
Найдите на корпусе устройства колёсико с подписью Variable Speed Playback. Именно тут мы и будем припаивать пару проводов. Я предпочитаю использовать красный провод для «плюса», а коричневый или зелёный — для «минуса». Поэтому красный провод мы припаиваем к контактной площадке VS+, а провод другого цвета — к площадке, расположенной сразу под B+.
Провода, припаянные к контактной площадке VS+ и к площадке, расположенной около B+
Обратите внимание на то, что я в подобных ситуациях, использую кабели с Female-разъёмами на одном конце. К ним очень удобно что-нибудь подключать.
Подключение к Line in для организации записи звука на кассету
Теперь нужно найти контактные площадки MIC- и MIC+, к которым припаяны красный и чёрный провода от микрофона. Эти провода можно просто отпаять и припаять к данным площадкам провода аудиокабеля. Красный — к MIC+, чёрный — к MIC-.
Провода, припаянные к MIC- и MIC+
Запись монотонного звука на кассету
Теперь можно вставить кассету в плеер и записать на неё звук, подключившись к Line in! Записать можно звучание любой ноты. Как правило, начать эксперименты можно с ноты «до». Запись должна быть достаточно длинной — 30 минут или что-то около того (тут, кстати, пригодилась бы кассета с плёночной петлёй). Обратите внимание на то, что на кассету надо записать лишь один тон, так как именно высоту этого тона мы будем изменять, управляя скоростью воспроизведения записи.
Запись звука на кассету с помощью OP-1
Подготовка Arduino для использования в роли MIDI-интерфейса
Arduino служит посредником между MIDI-интерфейсом и цифроаналоговым преобразователем, отвечающим за изменение напряжения. MIDI-клавиатура подключена к компьютеру. Сигналы от клавиатуры принимает программа, работающая в Chrome. Она обращается к серверу, который отправляет данные об изменении напряжения на Arduino, а Arduino передаёт соответствующие сигналы цифроаналоговому преобразователю, который и управляет скоростью воспроизведения кассеты на плеере.
Подключение цифроаналогового преобразователя MCP4725 к Arduino
Для начала нужно подключить MCP4725 к Arduino, воспользовавшись вышеприведённой схемой. MCP4725 — это цифроаналоговый преобразователь, которым можно управлять с Arduino. Контактную площадку OUT преобразователя надо соединить с красным проводом, который мы ранее припаяли к плееру. Другой провод надо подключить к контакту GND на Arduino.
Код, обеспечивающий взаимодействие компьютера и Arduino, обменивается с устройством данными, отправляя ему сведения о том, как нужно изменить напряжение. Например, если Arduino получит команду dac.setVoltage(newVolts, 1), то MCP4725 выдаст напряжение newVolts. Вот код:
#include
#include
Adafruit_MCP4725 dac;
String sdata = ""; // инициализация пустой строкой.
bool started = false;
void setup(void) {
Serial.begin(9600);
// Для Adafruit MCP4725A1 адрес - это 0x62 (по умолчанию) или 0x63 (пин ADDR связан с VCC)
// Для MCP4725A0 адрес - это 0x60 или 0x61
// Для MCP4725A2 адрес - это 0x64 или 0x65
dac.begin(0x62);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
Serial.println("Begin");
}
void loop(void) {
if (started == false) {
started = true;
dac.setVoltage(0, 1);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
}
byte ch;
if (Serial.available()) {
ch = Serial.read();
sdata += (char)ch;
if (ch == '\n') {
sdata.trim();
if (sdata.indexOf("voltage") > -1) {
sdata.remove(0, 7);
float newVal = sdata.toFloat();
// установка напряжения
float newVoltage = round(910.0 * newVal);
if (newVoltage > 4095) {
newVoltage = 4095;
}
uint16_t newVolts = uint16_t(newVoltage);
dac.setVoltage(newVolts, 1);
Serial.print("volts: ");
Serial.println(newVolts);
} else {
Serial.println("?");
}
sdata = "";
}
}
}
Сервер, используемый для отправки команд на Arduino
Для управления Arduino можно воспользоваться простым сервером, который отправляет плате команды, приводящие к изменению напряжения. Соответствующий код можно найти
You must be registered for see links
. Для работы сервера понадобится
You must be registered for see links
. Вот как подготовить сервер к работе:$ git clone
You must be registered for see links
$ cd tape-synth
$ go build
$ ./tape-synth -com ARDUINOCOM
Если вы пользуетесь Linux, то для организации работы с USB-портом вам понадобится воспользоваться командой sudo. ARDUINOCOM — это COM-порт для платы Arduino, подключённой к компьютеру по USB. В Windows это обычно COM4.
Для управления сервером служит страница index.html. Для того чтобы открыть её в Chrome, надо перейти по адресу localhost:8080. Далее, можно будет подключить MIDI-клавиатуру и отправлять команды Arduino (Chrome — это самый популярный браузер, поддерживающий
You must be registered for see links
).Сборка системы и игра на синтезаторе
Для того чтобы поиграть на кассетном синтезаторе нужно запустить сервер, подключить MIDI-клавиатуру и перейти в Chrome по адресу localhost:8080. Теперь можно включить плеер и начать играть! Нота, которую играют на клавиатуре, должна воспроизводиться плеером.
Настройка синтезатора
Мы имеем дело с механической системой, меняющей высоту звука путём изменения скорости протяжки ленты. Поэтому наш синтезатор нуждается в настройке. Для этого надо открыть index.html и отредактировать свойства объекта voltageMap. Каждой ноте должно быть назначено напряжение (между 0 и 3), соответствующее её высоте.
var voltageMap = {
"C": 0,
"C#": 0.7,
"D": 0.9,
"D#": 1.2,
"E": 1.4,
"F": 1.62,
"F#": 1.85,
"G": 2.25,
"G#": 2.6,
"A": 3.0,
"A#": 0,
"B": 0,
}
Итоги
Если я что-то объяснил непонятно (подозреваю, что так оно и есть) — задавайте мне вопросы в
You must be registered for see links
или в
You must be registered for see links
.А вы планируете собрать собственный кассетный синтезатор?
You must be registered for see links
You must be registered for see links