カセットプレーヤーから楽器を作る



カセットシンセサイザー



珍しい音楽プロジェクトが好きです。たとえば、私はApollo12ミッション中にNASAが作成した録音に基づいアルバムリリースしました。そして最近、私は自分のを使って音楽のテンポをコントロールしました。私の音楽実験の結果はここにあります



私は最近、ソニーのウォークマンを彷彿とさせる古いカセットプレーヤーからMIDI制御のシンセサイザーを作りました。これを行うには、Arduinoボードといくつかのコードが必要でした。起こったことは「カセットシンセサイザー」と呼ぶことができます。



カセットシンセサイザーは、以前にカセットテープに録音された単調な音(1音)を再生することによって機能します。ピッチは制御できます、それはテープの速度に依存します。OndeMagnétiqueプロジェクトは、カセットシンセサイザーを作成するというアイデアに私を導きました。このプロジェクトの作成者は、Mellotronのアイデアに触発されました





これは、MIDIキーボードを使用してカセットシンセサイザーを再生している様子を示すビデオです。



このシンセサイザーの良いところは、ノートを変更するときに非常に「アナログ」なサウンドを生成することです。つまり、音符から音符に移るときにピッチがスムーズに変化することが多く、その結果、音が非常に興味深いものになります(つまり、このシンセサイザーで再生される音楽では、ポルタメント効果がよく見られます)。さらに、絶対にどんな音でもテープに録音できるので、私のシンセサイザーは非常に用途が広いことがわかりました。



カセットシンセサイザーの作成



実際、このようなシンセサイザーの作成は非常に簡単です。電圧レギュレーターを使用してカセットの再生速度を制御できるようにカセットプレーヤーを変更する方法についての良いビデオ出くわしました同様の方法で既存のプレーヤーを変更しました。また、ブラウザをベースに、電圧を変更して目的のノートを取得するように設計されたシンプルなMIDIコントローラを作成しました。



以下の手順は、プレーヤーとArduinoによって表されるシンセサイザーのハードウェア、およびMIDIコントローラーによって再生されるソフトウェアに焦点を当てています。



材料



  • GE 3-5362Aカセットプレーヤー($ 15、eBayでたくさん)
  • Arduino($ 23)。
  • DAC MCP4725($ 11)。
  • 3,5 ($8).
  • ( , $5).
  • , ($25, ).


GE 3-5362A



GE3-5362Aプレーヤーを使用する必要はないことに注意してください。可変再生速度をサポートするすべてのプレーヤーで問題ありません。別のプレーヤーをベースにしたカセットシンセサイザーを作成する場合は、その内部構造と、対応するワイヤーをどこにはんだ付けするかを理解する必要があります。



プレイヤーの体を開くことから始めましょう。これを行うには、デバイスの背面にある4本のネジを緩める必要があります。ここではそれほど手間をかける必要はありません。ネジを緩めてケースを慎重に開くだけです。ユニットの背面と前面は、プレーヤーの電子機器に電力を供給するワイヤーで接続されていることに注意してください。これらのワイヤーを切断しないでください。





すでに改造された分解済みプレーヤープレーヤーを



カセットシンセサイザーに変えるには、2つの新しいコンポーネントをはんだ付けする必要があります。1つ目はに接続されたワイヤでVin、電圧レギュレータを使用してテープの再生速度を制御できます。2つ目はに接続されたオーディオスプリッターLine inで、カセットにサウンドを録音できます(これはテープレコーダーを持っていない人に便利です)。



はんだ付けの仕方がわからなくても心配いりません。簡単だ。見るこのビデオを。それから、ワイヤーをパッドにはんだ付けする方法を学びます。



Vinに接続し、テープ速度制御を整理する



デバイスの本体にあるVariableSpeedPlaybackというラベルの付いたホイールを見つけます。ここで、2本のワイヤーをはんだ付けします。プラスには赤いワイヤー、マイナスには茶色または緑のワイヤーを使用するのが好きです。したがって、赤いワイヤーをVS +パッドにはんだ付けし、もう1つのカラーワイヤーをB +のすぐ下にあるパッドにはんだ付けします。





VS +パッドとB +の近くにあるパッドにはんだ付けされたワイヤー



このような状況では、一端にメスコネクタが付いたケーブルを使用することに注意してください。それらに何かを接続すると非常に便利です。



カセットへの録音を整理するためのライン入力への接続



次に、マイクからの赤と黒のワイヤーがはんだ付けされているMIC-パッドとMIC +パッドを見つける必要があります。これらのワイヤーをはんだ付け解除し、オーディオケーブルワイヤーをこれらのパッドにはんだ付けするだけです。赤からMIC +、黒からMIC-。





MIC-およびMIC +にはんだ付けされたワイヤ



単調な音をカセットに録音する



これで、カセットをプレーヤーに挿入し、Line in!に接続してサウンドを録音できますどんな音でも録音できます。原則として、ノート「C」から実験を開始できます。録音は十分な長さである必要があります-30分程度(ちなみに、ここではテープループ付きのテープが便利です)。録音の再生速度を制御することによって変更されるのはこのトーンのピッチであるため、カセットに録音する必要があるのは1つのトーンだけであることに注意してください。





OP-1でカセットに録音する



MIDIインターフェースとして使用するためのArduinoの準備



Arduinoは、MIDIインターフェイスと、電圧の変更を担当するデジタルからアナログへのコンバーターの間の仲介役として機能します。MIDIキーボードがコンピューターに接続されています。キーボード信号は、Chromeで実行されているプログラムによって受信されます。これは、電圧変化に関するデータをArduinoに送信するサーバーをアドレス指定し、Arduinoは、対応する信号を、プレーヤーでのテープの再生速度を制御するデジタルからアナログへのコンバーターに送信します。





MCP4725 D / AコンバーターをArduino



に接続する最初に、上の図を使用してMCP4725をArduinoに接続する必要があります。MCP4725は、Arduinoから制御できるデジタルからアナログへのコンバーターです。コンバーターのOUT接点パッドは、以前にプレーヤーにはんだ付けした赤いワイヤーに接続する必要があります。もう一方のワイヤは、ArduinoのGNDピンに接続する必要があります。



コンピューターとArduinoの間で通信するコードはデバイスと通信し、電圧の変更方法に関する情報をデバイスに送信します。たとえば、Arduinoがコマンドを受信するdac.setVoltage(newVolts, 1)と、MCP4725は電圧を出力しnewVoltsます。コードは次のとおりです。



#include <Wire.h>
#include <Adafruit_MCP4725.h>

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を制御するには、電圧を変更するコマンドをボードに送信する単純なサーバーを使用できます。関連するコードはここにありますサーバーを実行するにはGolangが必要ですサーバーを稼働させる方法は次のとおりです。



$ git clone https://github.com/schollz/tape-synth
$ cd tape-synth
$ go build
$ ./tape-synth -com ARDUINOCOM


Linuxを使用している場合は、コマンドを使用してUSBポートでの作業を整理する必要がありますsudoARDUINOCOMUSB経由でコンピューターに接続されたArduinoボードのCOMポートです。これはWindowsでは一般的COM4です。



このページは、サーバーを管理するために使用されますindex.htmlChromeで開くには、アドレスに移動する必要がありますlocalhost:8080次に、MIDIキーボードを接続して、Arduinoコマンドを送信できます(ChromeはMIDIをサポートする最も一般的なブラウザーです)。



システムの構築とシンセサイザーの再生



カセットシンセサイザーを再生するには、サーバーを起動し、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,
}


結果



理解できないことを説明した場合(そうだと思います)、TwitterまたはInstagramで質問してください



独自のカセットシンセサイザーを構築する予定ですか?










All Articles