Adafruit Industries
Adafruit提供
ガイド:John Park
概要
ファイトスティック/ピアノキーボードのマッシュアップの形で、自分だけのアルペジエータシンセサイザ/MIDIコントローラを構築しましょう!チップチューンに最適です。LEDアーケード1x4ボード、MIDI FeatherWing、Feather M4 Express、そしてたくさんの光るボタンを使って、このレトロスタイルのシンセサイザを作りましょう。
光るアーケードボタンで基音を鳴らし、ジョイスティックでテンポとオクターブを調整し、フロントパネルのファンクションボタンでアープ(アルペジエータ)を開始/停止し、アープレンジの調整、さまざまなパターンを選択します。ステレオヘッドフォンジャックから矩形波シンセサイザのサウンドを出力したり、USBやクラシックなDIN-5 MIDIケーブルを介してソフトウェアやハードウェアシンセサイザにMIDIを送信します。
このプロジェクトは、素晴らしいPianocadeに直接インスパイアされたものです。
オーディオライブラリを使用したオンボード合成
MIDIを介してゲームボーイをコントロールするアーケードシンセサイザコントローラ
パーツ
- AdafruitのFeather M4 Express - ATSAMD51搭載
- AdafruitのLEDアーケードボタン1x4 - STEMMA QT I2Cブレイクアウト
- AdafruitのLEDアーケードボタン1x4 4個
- AdafruitのMIDI FeatherWingキット
- 小型アーケードジョイスティック
- LED付きアーケードボタン 13個
- 30mm 半透明クリア 3枚
- FeatherWing Triplerミニキット - Feathers用プロトタイプアドオン
- FeatherWingプロト - すべてのFeatherボードFeatherWing Proto用プロトタイプアドオン 1組
- ブレッドボードフレンドリーな3.5mmステレオヘッドフォンジャック 1個
- ステマQT / Qwiic JST SH 4ピンケーブル 4本
- ステマQT / Qwiic JST SH 4ピンケーブル 1本
- SparkFunのステマQT / Qwiicブレッドボードブレイクアウトアダプタ 1組
- 16mm照明付き押しボタン - 緑、ラッチオン/オフスイッチ
- 16mm照明付き押しボタン - 黄色、モーメンタリスイッチ
- アーケードボタン クイックコネクトワイヤペア 4組
- 電解コンデンサ10uF 50V 1個
- スルーホール抵抗器 1.0KΩ 1個
- リトルラバーバンパーフィート 2セット
オプション
あなたが非常にハイな気分なら、ベースとなるアルミバンパーフィートを2セット、3セットと増やしていくことも可能です!
エンクロージャ材料
筐体を作るには、グレー、黒、白の3mm厚(約1/8インチ)のアクリル板が必要です。
- マットグレー 1/8インチx 12インチx 24インチ 2枚
- つや消しの黒 1/8インチx 12インチx 24インチ 1枚
- 半透明の白 1/8インチx 12インチx 24インチ 1枚
M4ネジとナットでケースを固定します。また、同様にジョイスティックも固定します。
- M4 x 0.7mm ナット
- M4 x 80mm ソケットヘッドねじ
- M4 x 14mm ソケットヘッドねじ
アーケードシンセサイザのコード
簡単なコードのアップロード
ドラッグ&ドロップで簡単にFeather M4 Expressにコードを書き込むことができます!Featherを正常なUSBデータケーブルでコンピュータに接続し(電源だけではありません!)、リセットボタンをダブルクリックするだけです。
ボードはFEATHERBOOTという名前のUSBドライブとしてコンピュータ上に表示されます。以下のリンクからArcade_Synth_Controller.UF2ファイルをダウンロードし、FEATHERBOOTドライブにドラッグします。
ボードは自動的にリセットされ、コードが実行されます。
ソースコードハッキング
もっと深く掘り下げたい場合は、こちらから ソースコードをダウンロードできます。これには、Arduino IDEの知識とボードにコードをアップロードする方法についてのある程度の知識が必要です。
// SPDX-FileCopyrightText: 2022 John Park and Tod Kurt for Adafruit Industries
//
// SPDX-License-Identifier: MIT
// Arcade Synth Controller II: Son of Pianocade -- The Enriffening
// written by John Park and Tod Kurt
// Synthesizer/MIDI arpeggiator for with multiple LED Arcade boards & joystick input
// Arpy library: https://github.com/todbot/mozzi_experiments/blob/main/eighties_arp/Arpy.h
// midi_to_freq and ADT patch: https://github.com/todbot/tal_experiments/tree/main/arpy_test
// - to do: when arp is off it acts as a normal keyboard.
#include <Arduino.h>
#include <Adafruit_TinyUSB.h>
#include <MIDI.h>
#include <Audio.h>
#include <Bounce2.h>
#include "Adafruit_seesaw.h"
#include "ADT.h"
#include "midi_to_freq.h"
#include "Arpy.h"
// ----- LED Arcade 1x4 STEMMA QT board pins-----
// pin definitions on each LED Arcade 1x4
#define SWITCH1 18 // PA01
#define SWITCH2 19 // PA02
#define SWITCH3 20 // PA03
#define SWITCH4 2 // PA04
#define PWM1 12 // PC00
#define PWM2 13 // PC01
#define PWM3 0 // PA04
#define PWM4 1 // PA05
#define I2C_BASE_ADDR 0x3A // boards are in order, 0x3A, 0x3B, 0x3C, 0x3D
#define NUM_BOARDS 4
Adafruit_seesaw ledArcades[ NUM_BOARDS ];
//----- board variables
int boardNum = 0; //used to read each board
int switchNum = 0; //used to read each switch
int boardSwitchNum = 0; //unique button ID accross all boards/buttons
int led_low = 10; //min pwm brightness
int led_med = 60;
int led_high = 220; // max brightness
bool lastButtonState[16] ;
bool currentButtonState[16] ;
//-----joystick pins-----
const int joyDownPin = 11; //down
const int joyUpPin = 12; // up
const int joyLeftPin = 9; // left
const int joyRightPin = 10; //right
const int joyGroundPin = 6; //"fake" ground pin
//-----joystick debouncer
Bounce joyDown = Bounce();
Bounce joyUp = Bounce();
Bounce joyLeft = Bounce();
Bounce joyRight = Bounce();
//-----MIDI instances-----
Adafruit_USBD_MIDI usb_midi;
MIDI_CREATE_INSTANCE(Adafruit_USBD_MIDI, usb_midi, MIDIusb); // USB MIDI
MIDI_CREATE_INSTANCE(HardwareSerial, Serial1, MIDIclassic); // classic midi over RX/TX
//-----Audio Library Syth parameters
#define NUM_VOICES 4
AudioSynthWaveform *waves[] = {
&wave0, &wave1, &wave2, &wave3
};
int filterf_max = 6000;
int filterf = filterf_max;
uint32_t lastControlMillis=0;
uint8_t arp_octaves = 1;
uint8_t root_note = 0;
//----- create arpy arpeggiator
Arpy arp = Arpy();
int bpm = 160;
int octave_offset = 3; // initially starts on MIDI note 36 with the offset of 3 octaves from zero
bool arp_on_off_state;
void setup() {
Wire.setClock(400000);
//----- MIDI and Serial setup-----
//
MIDIusb.begin(MIDI_CHANNEL_OMNI);
MIDIclassic.begin(MIDI_CHANNEL_OMNI);
Serial.begin(115200);
MIDIusb.turnThruOff();
delay(2000); // it's hard getting started in the morning
Serial.println("[.::.:::.] Welcome to Arcade Synth Controller II: Son of Pianocade -- The Enriffening [.::.:::.]");
Serial.println("MIDI USB/Classic and Serial have begun");
//----- end MIDI and Serial setup-----
//----- joystick pins setup-----
//
pinMode( joyDownPin, INPUT);
pinMode( joyUpPin, INPUT);
pinMode( joyLeftPin, INPUT);
pinMode( joyRightPin, INPUT);
pinMode( joyGroundPin, OUTPUT);
joyDown.attach( joyDownPin, INPUT_PULLUP);
joyUp.attach( joyUpPin, INPUT_PULLUP);
joyLeft.attach( joyLeftPin, INPUT_PULLUP);
joyRight.attach( joyRightPin, INPUT_PULLUP);
digitalWrite(joyGroundPin, LOW);
//----- end joystick pins setup-----
//----- LED Arcade 1x4 setup-----
//
for ( int i = 0; i < NUM_BOARDS; i ) {
if ( !ledArcades[i].begin( I2C_BASE_ADDR i ) ) {
Serial.println(F("LED Arcade not found!"));
while (1) delay(10);
}
}
Serial.println(F("LED Arcade boards started"));
for ( int i = 0; i < NUM_BOARDS; i ) {
ledArcades[i].pinMode(SWITCH1, INPUT_PULLUP);
ledArcades[i].pinMode(SWITCH2, INPUT_PULLUP);
ledArcades[i].pinMode(SWITCH3, INPUT_PULLUP);
ledArcades[i].pinMode(SWITCH4, INPUT_PULLUP);
ledArcades[i].analogWrite(PWM1, led_low);
ledArcades[i].analogWrite(PWM2, led_low);
ledArcades[i].analogWrite(PWM3, led_low);
ledArcades[i].analogWrite(PWM4, led_low);
}
// brighten default root note
ledArcades[0].analogWrite(PWM1, led_high);
// turn down brightness of the function buttons
ledArcades[3].analogWrite(PWM2, 0);
ledArcades[3].analogWrite(PWM3, led_low);
ledArcades[3].analogWrite(PWM4, led_low);
//----- end LED Arcade 1x4 setup-----
//-----Arpy setup-----
//
arp.setNoteOnHandler(noteOn);
arp.setNoteOffHandler(noteOff);
arp.setRootNote( root_note );
arp.setOctaveOffset(octave_offset);
arp.setBPM( bpm );
arp.setGateTime( 0.75 ); // percentage of bpm
arp.off();
//----- Audio Library Synth setup-----
// (patch is saved in ADT.h file)
AudioMemory(120);
filter0.frequency(filterf_max);
filter0.resonance(0.5);
env0.attack(10);
env0.hold(2);
env0.decay(100);
env0.sustain(0.5);
env0.release(100);
// Initialize processor and memory measurements
AudioProcessorUsageMaxReset();
AudioMemoryUsageMaxReset();
Serial.println("Arpy setup done");
} // end setup()
int waveform = WAVEFORM_SQUARE;
void noteOn(uint8_t note) {
waves[0]->begin( 0.9, tune_frequencies2_PGM[note], waveform);
waves[1]->begin( 0.9, tune_frequencies2_PGM[note] * 1.01, waveform); // detune
waves[2]->begin( 0.9, tune_frequencies2_PGM[note] * 1.005, waveform); // detune
waves[3]->begin( 0.9, tune_frequencies2_PGM[note] * 1.025, waveform); // detune
filterf = filterf_max;
filter0.frequency(filterf);
env0.noteOn();
MIDIusb.sendNoteOn(note, 127, 1);
MIDIclassic.sendNoteOn(note, 127, 1);
}
void noteOff(uint8_t note) {
env0.noteOff();
MIDIusb.sendNoteOn(note, 0, 1);
MIDIclassic.sendNoteOn(note, 0, 1);
}
void midiPanic(){
for( uint8_t m = 0; m < 128; m ){
MIDIusb.sendNoteOn(m, 0, 1) ;
MIDIclassic.sendNoteOn(m, 0, 1) ;
yield(); // keep usb midi from flooding
}
}
void lightLED(uint8_t buttonLED) {
uint8_t pwms[4] = {PWM1, PWM2, PWM3, PWM4};
boardNum = map(buttonLED, 0, 12, 0, 3);
// first dim all buttons on first three boards
for( int b = 0; b < 3; b ) {
for( int p = 0; p < 4; p ) {
ledArcades[b].analogWrite(pwms[p], led_low);
}
}
// dim first button on fourth board (the other two are function buttons)
ledArcades[3].analogWrite(PWM1, led_low);
// then brighten the selected one
ledArcades[boardNum].analogWrite(pwms[buttonLED % 4], led_high);
}
#define SWITCHMASK ((1 << SWITCH1) | (1 << SWITCH2) | (1 << SWITCH3) | (1 << SWITCH4))
void arcadeButtonCheck() {
for ( boardNum = 0; boardNum < NUM_BOARDS; boardNum ) { // check all boards, all switches
int pos = boardNum*4;
uint32_t switches = ledArcades[boardNum].digitalReadBulk(SWITCHMASK);
currentButtonState[pos 0] = ! (switches & (1<<SWITCH1));
currentButtonState[pos 1] = ! (switches & (1<<SWITCH2));
currentButtonState[pos 2] = ! (switches & (1<<SWITCH3));
currentButtonState[pos 3] = ! (switches & (1<<SWITCH4));
}
for( int i = 0; i < 4*NUM_BOARDS; i ) {
bool state = currentButtonState[i];
if(state != lastButtonState[i]) {
if( state == HIGH ) { //pressed
// ---button functions---
// --root notes--
if (i < 13){ // these are the piano keys for picking root notes
root_note = 0 i ; // MIDI note
lightLED(i);
}
//-- start/stop toggle button--
if (i == 13) { // arp pattern button on front panel
if( !arp_on_off_state) {
arp.on();
ledArcades[3].analogWrite(PWM2, led_med);
arp_on_off_state = true;
}
else {
arp.off();
midiPanic(); // just to be on the safe side...
ledArcades[3].analogWrite(PWM2, 0);
arp_on_off_state = false;
}
}
//-- arp octave range button--
if (i == 14) { // arp range button on front panel
ledArcades[3].analogWrite(PWM3, led_high);
arp_octaves = arp_octaves 1; if( arp_octaves==4) { arp_octaves=1; }
arp.setTransposeSteps( arp_octaves );
//Serial.printf("arp steps:%d\n",arp_octaves);
ledArcades[3].analogWrite(PWM3, led_low);
}
//-- pattern button--
if (i == 15) { // arp pattern button on front panel
ledArcades[3].analogWrite(PWM4, led_high);
arp.nextArpId();
ledArcades[3].analogWrite(PWM4, led_low);
}
}
}
}
for( int i=0; i<4*NUM_BOARDS; i ) {
lastButtonState[i] = currentButtonState[i];
}
}
//----- end arcade button check
void loop(){
arcadeButtonCheck(); // see if any buttons are pressed, send notes or adjust parameters
joyDown.update();
joyUp.update();
joyLeft.update();
joyRight.update();
if ( joyUp.fell() ) { // read a joystick single tap
ledArcades[3].analogWrite(PWM3, led_high); // feedback on front panel button
octave_offset = octave_offset 1; if( octave_offset>7) { octave_offset=7; }
arp.setOctaveOffset(octave_offset);
ledArcades[3].analogWrite(PWM3, led_low);
}
if ( joyDown.fell() ) {
ledArcades[3].analogWrite(PWM3, led_high); // feedback on front panel button
octave_offset = octave_offset - 1; if( octave_offset<0) { octave_offset=0; }
arp.setOctaveOffset(octave_offset);
ledArcades[3].analogWrite(PWM3, led_low);
}
int joyLeftVal = joyLeft.read(); // read a held joystick (autorepeat) instead of single tap
if( joyLeftVal == LOW ) {
bpm = bpm - 1; if(bpm < 100) { bpm = 100; }
ledArcades[3].analogWrite(PWM4, led_high);
arp.setBPM( bpm );
ledArcades[3].analogWrite(PWM4, led_low);
}
int joyRightVal = joyRight.read(); // for a held joystick instead of single tap
if( joyRightVal == LOW ) {
bpm = bpm 1; if(bpm > 3000) { bpm = 3000; }
ledArcades[3].analogWrite(PWM4, led_high);
arp.setBPM( bpm );
ledArcades[3].analogWrite(PWM4, led_low);
}
arp.update(root_note); //
if( millis() - lastControlMillis > 20 ) {
lastControlMillis = millis();
}
}
//end loop()
MIDI
Arcade_Synth_Controller.inoのコードは、Audio Libraryのシンセサイザで音を鳴らすとともに、USBとクラシックDIN-5接続を介してMIDIを送出します。どのチャンネルを使うかは、ここのMIDIusb.sendNoteOnまたはOffの行をチャンネル1から必要なチャンネルに変更します。
void noteOn(uint8_t note) {
waves[0]->begin( 0.9, tune_frequencies2_PGM[note], waveform);
waves[1]->begin( 0.9, tune_frequencies2_PGM[note] * 1.01, waveform); // detune
waves[2]->begin( 0.9, tune_frequencies2_PGM[note] * 1.005, waveform); // detune
waves[3]->begin( 0.9, tune_frequencies2_PGM[note] * 1.025, waveform); // detune
filterf = filterf_max;
filter0.frequency(filterf);
env0.noteOn();
MIDIusb.sendNoteOn(note, 127, 1);
MIDIclassic.sendNoteOn(note, 127, 1);
}
void noteOff(uint8_t note) {
env0.noteOff();
MIDIusb.sendNoteOn(note, 0, 1);
MIDIclassic.sendNoteOn(note, 0, 1);
}
void midiPanic(){
for( uint8_t m = 0; m < 128; m ){
MIDIusb.sendNoteOn(m, 0, 1) ;
MIDIclassic.sendNoteOn(m, 0, 1) ;
yield(); // keep usb midi from flooding
}
}
アルペジオ
Arpy.h classは、あのすばらしいTod Kurtによって設計され、キーボードで演奏された基音に基づくアルペジオパターンの演奏を処理します。
既存のパターンを編集したり、独自のパターンを作成することができます。 Arpy.hのコードの中で、それらの変更を行う場所は次のとおりです。
int8_t arps[arp_count][arp_len] = {
{0, 4, 7, 12}, // major
{0, 3, 7, 10}, // minor 7th
{0, 3, 6, 3}, // Diminished
{0, 5, 7, 12}, // Suspended 4th
{0, 12, 0, -12}, // octaves
{0, 12, 24, -12}, // octaves 2
{0, -12, -12, 0}, // octaves 3 (bass)
{0, 0, 0, 0}, // root
};
シンセサイザ設計
Audio System Design Toolは、シンセのモジュールとパッチの接続を設計するために使用されます。ここで使用する例では、パッチはADT.hファイルに含まれています。
AudioSynthWaveform wave0; //xy=502.74795150756836,82.7552137374878
AudioSynthWaveform wave1; //xy=504.28649139404297,117.86524295806885
AudioSynthWaveform wave2; //xy=503.2865982055664,153.0081024169922
AudioSynthWaveform wave3; //xy=502.8580284118653,188.86524295806885
AudioMixer4 mixer0; //xy=633.7151184082031,100.00811004638672
AudioEffectEnvelope env0; //xy=758.612813949585,54.04482841491699
AudioFilterStateVariable filter0; //xy=888.6010780334473,60.850419998168945
AudioMixer4 mixerA; //xy=1010.7359161376953,171.30673599243164
AudioMixer4 mixerL; //xy=1196.8192749023438,210.86235809326172
AudioMixer4 mixerR; //xy=1198.2637329101562,277.8345947265625
AudioOutputAnalogStereo audioOut; //xy=1360.3193969726562,250.61236572265625
AudioConnection patchCord1(wave0, 0, mixer0, 0);
AudioConnection patchCord2(wave3, 0, mixer0, 3);
AudioConnection patchCord3(wave2, 0, mixer0, 2);
AudioConnection patchCord4(wave1, 0, mixer0, 1);
AudioConnection patchCord5(mixer0, env0);
AudioConnection patchCord6(env0, 0, filter0, 0);
AudioConnection patchCord7(filter0, 0, mixerA, 0);
AudioConnection patchCord8(mixerA, 0, mixerL, 0);
AudioConnection patchCord9(mixerA, 0, mixerR, 0);
AudioConnection patchCord10(mixerL, 0, audioOut, 0);
AudioConnection patchCord11(mixerR, 0, audioOut, 1);
アーケードシンセサイザ回路を構築する
回路
プロトタイプ基板
FeatherWing Protoボードは、小型のオーディオ出力回路や、I2C経由のSTEMMA QTポートの接続、ジョイスティック配線、リセットスイッチとイネーブルスイッチを追加するのに適しています。
以下の回路図は、Featherボードに関連するこれらの接続を示していますが、Protoボード上でこれらを作成し、FeatherWing Triplerを使用してこれらのポイントをFeatherに接続します。
プロトタイプ基板
上記の回路図とこれらの写真に従って、次の場所にある部品をはんだ付けします。
- オーディオ出力RC回路(オーディオからノイズを除去するための抵抗コンデンサ回路)
- ジョイスティック配線(D6ピンをジョイスティックスイッチの共通グランドとして使用することに注意)
- イネーブルスイッチとリセットスイッチのヘッダ
- STEMMA QT/QwiicコネクタからSDA、SCL、3v3、およびGNDへ
Feather Tripler
ここに示すように、ヘッダとM2.5ナイロンスタンドオフをFeather Triplerに追加します。
MIDI FeatherWing(DIN-5またはTRSプラグのどちらかを選択)をTriplerに挿入し、次にProto FeatherWingとFeather M4 Expressを挿入します。
後でケーブルを挿入する際にぐらつかないように、基板をTriplerのスタンドオフに固定します。
LEDアーケードボタンSTEMMA QTボード
I2Cで4つのLEDアーケードボタンボードを使用するには、それぞれに固有のアドレスを設定する必要があります。
3枚の基板のトレースをカットしてセットします。
次のように設定します。
- 0x3A(デフォルト、トレースをカットしないでください)
- 0x3B – トレースA0をカット
- 0x3C – トレースA1をカット
- 0x3D – トレースA0とA1をカット
次に、100mmのSTEMMA QTケーブルを使って、左から右へ順番に配線していきます。
アーケードボタンの配線
各アーケードボタンに2組のクイックコネクトケーブルを差し込みます – 1組はスイッチ用、もう1組はLED用です。
スイッチタブ(グレーのプラスチック製スイッチベースから突き出ているもの)には極性は関係ありませんが、LEDが動作するためには-と+を正しく接続する必要があります。これらは、アーケードボタン基板のLEDポートと、スイッチベースのモールドとの両方に記されています。
この配線は、混乱を避けるために、私はあらかじめ熱収縮チューブで印を付けておきました。また、このように黄色、赤、緑、青の4つのボタンを熱収縮チューブで順番に並べています。このような整理準備は、適切な配線作業や後でトラブルシューティングの際に非常に役に立ちます!
リセットボタンとイネーブルボタンの配線
これらのスイッチのLEDは配線せず、スイッチだけを配線することにしました。極性は関係ありません。
黄色のモーメンタリスイッチはFeatherのリセットピンに、緑のトグルスイッチはイネーブルに接続されることを忘れないでください。
アーケード筐体を構築する
筐体
アーケードシンセサイザコントローラの筐体は、3mm厚のアクリルからレーザーカットされるように設計されています。下の.svgファイルは、レーザーカッターで使用するか、サービスプロバイダに送ってカットしてもらうことができます。
筐体の部品
3mm(約1/8インチ)のアクリルから、図のようにパーツを切り出します。材料の仕上がり面を上にしてカットします。
アーケードボードを貼り付ける
M2.5ナイロンスタンドオフ、ネジ、ナットを使って、アーケードボタン基板をベースプレートに貼り付けます。左側が1枚目の基板(アドレス0x3A)です。
基板の向きに注意して、後で他のすべてが揃うようにします。
Triplerの貼り付け
スタンドオフとナットを使用して、図のようにTriplerを取り付けます。STEMMA QTケーブルポートをアーケードボタン基板に接続します。
リアパネルのボタン
バックパネルの仕上げ面を表にして(MIDI出力ポートと穴の位置を正しく合わせ)、リセットボタンとイネーブルボタンを穴に入れ、保持リングを通します。
スイッチをFeather Protoボードのそれぞれのポートに差し込みます。
バックパネルの切込みをベースにセットします。
サイドパネル
サイドパネルの切込みをベースにセットします。
フロントパネルのボタン
仕上げ面を表にして、フロントパネルのアーケードボタン3個を図のように穴に通します。
保持リングを通し、4番目のLEDアーケードボタンブレークアウトボードに差し込みます。LEDケーブルとスイッチケーブルが、それぞれのポートに正しく差し込まれていることを再確認してください。
トップレイヤのボタン
天板を挟み込み(注:2枚のうち下側のみフィンガージョイントの切り欠きがあります)、黄色、赤、緑、青の順番に注意しながらボタンをはめ込みます。
保持リングを通します。
ジョイスティックの取付け
ジョイスティックトッパーのネジを外し、脇に置いておきます。永遠に減らないゴブストッパーに見えますが、口にいれても味はしませんし、決して消化できないので食べないでください。
インターフェースピンをコントローラの中央に向かって内側に向け(そうでなければ収まりません!)、ジョイスティックステムをトップパネルに通し、M4 × 40mmのネジとナット4組で所定の位置にネジ止めします。
ジョイスティックのワイヤハーネスを差し込みます。
ボタンを差し込む
プラグパーティです!
残りのすべてのアーケードボタンを、左から右の順番に、LEDアーケードボタンブレークアウトボードに差し込みます。
テスト: この機会に、すべてを終了する前に動作確認を行うことをお勧めします。
ケースを閉じる
フィンガージョイントのタブとスロットを合わせて、慎重にケーストップを閉じます。
M4 × 80mmのネジ6本を穴に通し、底面でナットで固定します。
ジョイスティックワッシャとボール
ジョイスティックのディスクとボールトッパーを交換します。
フィート
ネジが露出して机を傷つけないように、大きなゴム製のバンパーフットや、次に示すようにM4ネジのキーボードフィートを4つまたは6つ使うことも可能です。
アーケードシンセサイザコントローラでプレイ
FeatherにマイクロUSBケーブルを接続し、もう一方の端をコンピュータ(特にUSB MIDI使用時)またはUSB電源に接続します。
オーディオ出力は、ステレオ3.5mm TRSケーブルをProtoboardのジャックに差し込み、もう一方の端をアンプ、パワードスピーカ、またはオーディオインターフェースに差し込みます。
オプションとして、クラシックMIDI信号を送信する場合は、リセットボタンに最も近いMIDIポートであるMIDI出力にMIDIケーブルを接続してください。
アーケードシンセサイザコントローラの緑色のスイッチを押して電源を入れると、しばらくしてボタンが点灯し、プレイできる状態になります。
コントローラ前面の左側にある白いボタンを押すとアルペジエータが起動します。このボタンは、アープが停止しているときは消灯し、再生しているときは点灯します。コントローラの最初のキーボードボタンがデフォルトで点灯しているので、シンセサイザがハ長調のアルペジオを演奏しているのが聞こえます。成功です!
その他、試してほしい操作をご紹介します。
- 赤いキーボードのボタンを押すと、別の基音ノートが選択されます。その基音ノートは他のノートより明るく点灯します。
- ジョイスティックを左右にしてテンポを速くしたり遅くしたりします。
- ジョイスティックを上下にしてオクターブオフセットを増減します。
- フロントパネルの白い中央ボタンで、アルペジオの範囲を1オクターブ、2オクターブ、3オクターブと広げることができます。
- フロントパネルの白い右ボタンで内蔵の8種類の異なるアープパターンを循環で切り替えることができます。
主要部品とコンポーネント
- 1528-2648-ND
- 1528-5296-ND
- 1528-4740-ND
- 1528-2316-ND
- 1528-2318-ND
- 1528-1905-ND
- 1528-1622-ND
- 1528-4210-ND