久しぶりにブログを更新。
ちょっと忙しさにかまけてしまった。
本ブログで製作を紹介したMIDIループセレクター。今はBOSS GT-8のループセクションにつないである。
もちろんGT-8のMIDI OUTからループセレクターのMIDI INをつないである。
これがなかなか使い勝手がいい。
ループセレクターはBOSS BD-2、自作の1Uラックディストーション、ZOOM MS-50Gをそれぞれのループに接続してある。
も切り替わるということで、GT-8のパッチを切り替えれば、これを好きに組み合わせてON OFFできる。
切替も案外スムーズで、日常使用では十分な感じ。
ギターから直結では気になっていたノイズも、GT-8を通ることで特段気にならなくなった。
これに先般作ったMS-50G用のMIDIインターフェイスをつなげば、さらに自由度は増す。
だが、まだこっちは剥き出しのままで、ケースへの実装ができていない。
というか、まだ最終の仕様が決められてない。
単なるMIDIスルーでもいいのだが、せっかくだからスイッチングの機能も持たせたいと思ったりしている。
なぜかというと、ライブの時などはGT-8は重過ぎて容易に運べないので、別途MS-50Gをメインとしたシステムを組みたいのだ。
今の使用感で言うと、4つあるループのうち、ドライブ系で二つ、MS-50G、そしてもうひとつ空間系があれば、ほぼ用は足りる。
空間系もZOOMのMS-70CDRあたりをつないで、これも同時にMIDIコントロールできれば一応完成かなと思っている。
MS-50GやGT-8を使っていて最近思っているのは、ギターから直結すると音がどうも良くないということ。
今まではBOSSのBD2などを間にかましていたが、ループ内に収めたので、その代わりが必要だ。
そこで、バッファーを入れたいと思っている。
バッファーと言えば、ハンドメイドプロジェクトの大塚明氏のものがいいなと思っていて、当時連載記事が載っていたギターマガジンを引っ張り出してみたのだが、最悪なことに、プリント基板のパターン図がきれいに切り取られていた。
いや、回路図から作る事はできるけど、ちょっとめんどっちい。
あれこれ探しているうちに、謎の自作A-B BOXを発見。
中を見ると、おお、あの大塚先生のバッファーが2個も入っているではないか。
ステレオ仕様になっている。
で、これを前段につないでみた。
しかし、自作のしかももう30年も前の機材が動くんだから、感動というか。
さて、音の方だけど、はやり張りのある音になった感じ。
ついでに発見したトレブルブースターなんてのもちょっと試してみたい。
一時はBOSSを始め、コンパクトのエフェクターをたくさんつなげてた時代もあったけれど、可搬性や音やせがやはり気になって、ほとんど売ってしまった。
また、ループセレクターもできたので、少しまた買い集めてみようかなとおもっている。
工作ものは一休みして、活用した情報ツールについて書いておきたいと思う。
なくてはならない情報ツールとしてJournlerというソフトが挙げられる。
もう長年使っているが、これに替わるソフトはないといっていい。
ここにあらゆる情報を集約している。

今回、Arduinoに関して、ネットで調べた情報、本から抜粋した内容などを蓄積しておき、それを参照しながら作業を進めた。
これがなかったら、作業効率は数倍悪くなっていたと思う。
調べものに限らず、ルーターの設定であるとか、Tipsなどを入れておくと大変重宝する。
当然レシピ集でもある。
カテゴリー分けやタグの自由度が高く、検索機能も強力なので、情報へのアクセスが早く、見つけられないという事が無い。
一度使い始めたら、他のものでは満足できなくなるだろう。
これでiPhoneと連携できれば満点なのだが、残念なことにそこまではいっていない。開発が続いてくれる事を願っている。
ではiPhoneでは何をつかっているのかと言えば、こっちはFlavaというアプリを使っている。
この手のソフトは他にも色々あるが、MacとAndroidとも連携できること、iPhone上での使い勝手の良さからこれを使っている。
こっちは主に外出先でのアイデアメモ、買い物リスト代わりとして重宝している。
自宅で、Ma上で買うものを逐次追加していって、外出先でそれをiPhoneで見ながら買い物するというフローが定着した。
物忘れがとみに多くなっているので、こういうのがやはり必要だ。
iPhoneでの使い勝手はいいのだが、Mac上ではSafariからアクセスする形で、こちらは少し使い勝手が悪い。
また、Webサイトのクリッピングなどが貼り込めないので、Journlerのようなデータベースとしては少々役不足。Journlerと使い分けで、こちらはログとしての機能だろうと思っている。
今はこの二つを情報ツールとして常用している。
この他、紙ベースでは雑記帳としてのノート、コンビニで売ってる小型のメモ帳を併用している。
今現在はスケジュール系の管理は、管理するほどの案件がないので何も使っていない。
強いていえばiPhoneのカレンダーとリマインダーだが、iOSのバージョンが8になって、とても使いづらくなった。
スケジュール管理でいえば、旧MacOSのPerManNoteというソフトが一番だった。
当時、自分のMac(カラークラシック2)を会社に持ち込んで、大変便利に使っていた。
階層的なキーワード登録できるのが特徴でアドレス管理などには大変重宝した。
確か今はフリーソフト化している。
以前紹介したVisionもそうだが、旧MacOSでしか動かないソフトでもこれだけは使いたいとおもっている。
似たようなソフトやクラウドサービスはあるが、やはりあれでないとだめだ。
いいソフトは例外無くUIがいい。
せっかくいいソフトがあるのに、捨て去らなければならないのは、大変残念なことだ。
いいものがひとつだけあれば、私はそれでいい。

パソコン ブログランキングへ
関連ソフト
Journler

http://journler.com/
Flava
https://www.takeflava.com/
なくてはならない情報ツールとしてJournlerというソフトが挙げられる。
もう長年使っているが、これに替わるソフトはないといっていい。
ここにあらゆる情報を集約している。

今回、Arduinoに関して、ネットで調べた情報、本から抜粋した内容などを蓄積しておき、それを参照しながら作業を進めた。
これがなかったら、作業効率は数倍悪くなっていたと思う。
調べものに限らず、ルーターの設定であるとか、Tipsなどを入れておくと大変重宝する。
当然レシピ集でもある。
カテゴリー分けやタグの自由度が高く、検索機能も強力なので、情報へのアクセスが早く、見つけられないという事が無い。
一度使い始めたら、他のものでは満足できなくなるだろう。
これでiPhoneと連携できれば満点なのだが、残念なことにそこまではいっていない。開発が続いてくれる事を願っている。
ではiPhoneでは何をつかっているのかと言えば、こっちはFlavaというアプリを使っている。
この手のソフトは他にも色々あるが、MacとAndroidとも連携できること、iPhone上での使い勝手の良さからこれを使っている。
こっちは主に外出先でのアイデアメモ、買い物リスト代わりとして重宝している。
自宅で、Ma上で買うものを逐次追加していって、外出先でそれをiPhoneで見ながら買い物するというフローが定着した。
物忘れがとみに多くなっているので、こういうのがやはり必要だ。
iPhoneでの使い勝手はいいのだが、Mac上ではSafariからアクセスする形で、こちらは少し使い勝手が悪い。
また、Webサイトのクリッピングなどが貼り込めないので、Journlerのようなデータベースとしては少々役不足。Journlerと使い分けで、こちらはログとしての機能だろうと思っている。
今はこの二つを情報ツールとして常用している。
この他、紙ベースでは雑記帳としてのノート、コンビニで売ってる小型のメモ帳を併用している。
今現在はスケジュール系の管理は、管理するほどの案件がないので何も使っていない。
強いていえばiPhoneのカレンダーとリマインダーだが、iOSのバージョンが8になって、とても使いづらくなった。
スケジュール管理でいえば、旧MacOSのPerManNoteというソフトが一番だった。
当時、自分のMac(カラークラシック2)を会社に持ち込んで、大変便利に使っていた。
階層的なキーワード登録できるのが特徴でアドレス管理などには大変重宝した。
確か今はフリーソフト化している。
以前紹介したVisionもそうだが、旧MacOSでしか動かないソフトでもこれだけは使いたいとおもっている。
似たようなソフトやクラウドサービスはあるが、やはりあれでないとだめだ。
いいソフトは例外無くUIがいい。
せっかくいいソフトがあるのに、捨て去らなければならないのは、大変残念なことだ。
いいものがひとつだけあれば、私はそれでいい。
パソコン ブログランキングへ
関連ソフト
Journler
http://journler.com/
Flava
https://www.takeflava.com/
さて、ループセレクターも最終章ということで、スケッチを。
//---------------------------------------------
//シフトレジスタでLCD駆動
#include
const byte dataPin = 6;
const byte clockPin = 8;
const byte enablePin = 7;
ShiftRegLCD123 srlcd(dataPin, clockPin, enablePin, SRLCD123);
//--------------------------------------------
//MIDI設定
#include
MIDI_CREATE_DEFAULT_INSTANCE();
//--------------------------------------------
//可変抵抗設定
const int analogInPin1 = A0; // 可変抵抗器の入力ピン
int sensorValue1 = 0; // 入力値
int outputValue1 = 0; // 出力値
//--------------------------------------------
//LED、スイッチピン設定
#define LED_PIN1 12
#define SW_PIN1 5
#define LED_PIN2 11
#define SW_PIN2 4
#define LED_PIN3 10
#define SW_PIN3 3
#define LED_PIN4 9
#define SW_PIN4 2
#define SW_PIN5 15
#define LED_PIN5 13
//----------------------------------------------
//EPRAM設定
#include
#define i2caddr 0x50
byte d=0;
//---------------------------------------
//LED、スイッチ初期化
int swVal1 = 0;
int swCount1 = 0;
boolean ledState1 = false;
int swVal2 = 0;
int swCount2 = 0;
boolean ledState2 = false;
int swVal3 = 0;
int swCount3 = 0;
boolean ledState3 = false;
int swVal4 = 0;
int swCount4 = 0;
boolean ledState4 = false;
int swVal5 = 0;
int swStatus1 = 0;
int swStatus2 = 0;
int swStatus3 = 0;
int swStatus4 = 0;
int swStatusD1 = 0;
int swStatusD2 = 0;
int swStatusD3 = 0;
int swStatusD4 = 0;
//--------------------------------------
////変換テーブルの関数定義
int table1(int y) {
int result;
switch (y){
case 0:
result = 0;
break;
case 1:
result = 1000;
break;
case 3:
result = 100;
break;
case 4:
result = 1100;
break;
case 5:
result = 10;
break;
case 6:
result = 1010;
break;
case 8:
result = 110;
break;
case 9:
result = 1110;
break;
case 11:
result = 1;
break;
case 12:
result = 1001;
break;
case 14:
result = 101;
break;
case 15:
result = 1101;
break;
case 16:
result = 11;
break;
case 17:
result = 1011;
break;
case 19:
result = 111;
break;
case 20:
result = 1111;
break;
default:
break;
}
return result;
}
//-------------------------------------------
int table2(int x) {
int result;
switch (x){
case 0:
result = 0;
break;
case 1000:
result = 1;
break;
case 100:
result = 3;
break;
case 1100:
result = 4;
break;
case 10:
result = 5;
break;
case 1010:
result = 6;
break;
case 110:
result = 8;
break;
case 1110:
result = 9;
break;
case 1:
result = 11;
break;
case 1001:
result = 12;
break;
case 101:
result = 14;
break;
case 1101:
result = 15;
break;
case 11:
result = 16;
break;
case 1011:
result = 17;
break;
case 111:
result = 19;
break;
case 1111:
result = 20;
break;
default:
break;
}
return result;
}
////////////////////////////////////////////////////////////
//セットアップ
//----------------------------------------------------------
void setup()
{
//------------------------------------------
//LEDスイッチ、設定
pinMode(LED_PIN1, OUTPUT);
pinMode(SW_PIN1, INPUT);
pinMode(LED_PIN2, OUTPUT);
pinMode(SW_PIN2, INPUT);
pinMode(LED_PIN3, OUTPUT);
pinMode(SW_PIN3, INPUT);
pinMode(LED_PIN4, OUTPUT);
pinMode(SW_PIN4, INPUT);
pinMode(SW_PIN5, INPUT); //送信用
pinMode(LED_PIN5, OUTPUT); //MIDI表示用
//-------------------------------------------
//EPRAM通信開始
Wire.begin();
//-----------------------------------------
//MIDI開始
MIDI.begin();
//------------------------------------------
//シフトレジスタでLCD開始
srlcd.begin(16,2);//LED表示桁,行を設定
srlcd.clear();//LCD初期化
srlcd.setCursor(0,0);
srlcd.print("MIDILOOPSELECTOR");
srlcd.setCursor(0,1);
srlcd.print("2015/1 Ver1.0");
delay(4000);
srlcd.clear();//LCD初期化
//--------------------------------------
}
/////////////////////////////////////////////////////
//EPROM書き込みルーチン
void writeData(unsigned int addr, byte data)
{
Wire.beginTransmission(i2caddr);
Wire.write((int)(addr >> 8));
Wire.write((int)(addr & 0xFF));
Wire.write(data);
Wire.endTransmission();
delay(10);
}
/////////////////////////////////////////////////////
//EPROM読み込みルーチン
byte readData(unsigned int addr)
{
byte result;
Wire.beginTransmission(i2caddr);
Wire.write((int)(addr >> 8));
Wire.write((int)(addr & 0xFF));
Wire.endTransmission();
Wire.requestFrom(i2caddr,1);
result = Wire.read();
return result;
}
////////////////////////////////////////////////////////
void loop()
//--------------------------------------------------------
//スイッチセクション
//*******************
{
swVal1 = digitalRead(SW_PIN1);
if (swVal1 == HIGH) {
swCount1 += 1;
}
else {
swCount1 = 0;
}
if (swCount1 == 10) {
ledState1 = !ledState1;
}
if (ledState1) {
digitalWrite(LED_PIN1, HIGH);
}
else {
digitalWrite(LED_PIN1, LOW);
}
delay(1);
//*********************
swVal2 = digitalRead(SW_PIN2);
if (swVal2 == HIGH) {
swCount2 += 1;
}
else {
swCount2 = 0;
}
if (swCount2 == 10) {
ledState2 = !ledState2;
}
if (ledState2) {
digitalWrite(LED_PIN2, HIGH);
}
else {
digitalWrite(LED_PIN2, LOW);
}
delay(1);
//**********************
swVal3 = digitalRead(SW_PIN3);
if (swVal3 == HIGH) {
swCount3 += 1;
}
else {
swCount3 = 0;
}
if (swCount3 == 10) {
ledState3 = !ledState3;
}
if (ledState3) {
digitalWrite(LED_PIN3, HIGH);
}
else {
digitalWrite(LED_PIN3, LOW);
}
delay(1);
//***************************
swVal4 = digitalRead(SW_PIN4);
if (swVal4 == HIGH) {
swCount4 += 1;
}
else {
swCount4 = 0;
}
if (swCount4 == 10) {
ledState4 = !ledState4;
}
if (ledState4) {
digitalWrite(LED_PIN4, HIGH);
}
else {
digitalWrite(LED_PIN4, LOW);
}
delay(1);
//-----------------------------------------------
//コードを生成する
int swSt1 = digitalRead(LED_PIN1) ;
if (swSt1 == HIGH) {
swStatus1 = 1000 ;
}
else {
swStatus1 = 0 ;
}
int swSt2 = digitalRead(LED_PIN2) ;
if (swSt2 == HIGH) {
swStatus2 = 100 ;
}
else {
swStatus2 = 0 ;
}
int swSt3 = digitalRead(LED_PIN3) ;
if (swSt3 == HIGH) {
swStatus3 = 10 ;
}
else {
swStatus3 = 0 ;
}
int swSt4 = digitalRead(LED_PIN4) ;
if (swSt4 == HIGH) {
swStatus4 = 1 ;
}
else {
swStatus4 = 0 ;
}
//--------------------------------------------
int ans ; //スイッチの状態コード
ans = swStatus1 + swStatus2 + swStatus3 + swStatus4; //コード合算
//---------------------------------------------
//LCD表示
char ans2[16];//4桁揃え用変数
sprintf(ans2, "%04d",ans);//4桁に揃える
srlcd.setCursor(11,1);
srlcd.print(ans2);//スイッチの設定を表示
//---------------------------------------------------------------------------
//MIDI受信セクション
int MIDIdataROM;
uint8_t MIDIdata1;
if (MIDI.read())
{
switch(MIDI.getType())
{
case midi::ProgramChange:
MIDIdata1 = MIDI.getData1();
d=readData(MIDIdata1); //EPROMから読み出し
MIDIdataROM = table1(d);//4桁数字への変換
//-------------------------------------------------------
//MIDIデータs受信の表示セクション
//桁揃え*********************
char readpgno[16];
int MIDIdata2;
MIDIdata2 = MIDIdata1 + 1;
sprintf(readpgno, "Read %03d = ",MIDIdata2);
srlcd.setCursor(0,0);
srlcd.print(readpgno);
//****************************
//EPROMから読み取った値を4桁揃えで表示
char readsetno[16];
int setdata2;
setdata2 = MIDIdataROM;
sprintf(readsetno, "%04d",setdata2);
srlcd.setCursor(11,0);
srlcd.print(readsetno);
//--------------------------------------------------
//LEDへの反映セクション
switch (d){ //LED1の反映
case 1:
case 4:
case 6:
case 9:
case 12:
case 15:
case 17:
case 20:
ledState1 = true;//LEDを点灯
break;
default:
ledState1 = false;//LEDを消灯
break;
}
switch (d){ //LED2の反映
case 3:
case 4:
case 8:
case 9:
case 14:
case 15:
case 19:
case 20:
ledState2 = true;//LEDを点灯
break;
default:
ledState2 = false;//LEDを消灯
break;
}
switch (d){ //LED3の反映
case 5:
case 6:
case 8:
case 9:
case 16:
case 17:
case 19:
case 20:
ledState3 = true;//LEDを点灯
break;
default:
ledState3 = false;//LEDを消灯
break;
}
switch (d){ //LED4の反映
case 11:
case 12:
case 14:
case 15:
case 16:
case 17:
case 19:
case 20:
ledState4 = true;//LEDを点灯
break;
default:
ledState4 = false;//LEDを消灯
break;
}
//---------------------------------
digitalWrite(LED_PIN5, HIGH);//受信LED
break; //MIDI受信ルーチンの終わり
//------------------------------------------------------
default:
digitalWrite(LED_PIN5, LOW);//受信LED
break;
}
}
//-----------------------------------------------
// 可変抵抗よりアナログ出力の値を読み取る
sensorValue1 = analogRead(analogInPin1);//可変抵抗からの読み取り
outputValue1 = map(sensorValue1, 0, 1023, 0, 127);//値の変換
int outputValueLCD;
outputValueLCD = outputValue1 +1;//EPROMのアドレスとプログラムチェンジナンバーの合わせ
char setpgno[16];
sprintf(setpgno, "Set %03d = ",outputValueLCD);
srlcd.setCursor(0,1);
srlcd.print(setpgno);
//--------------------------------------------
//5のスイッチを押した時だけ送信
swVal5 = digitalRead(SW_PIN5);
if (swVal5 == HIGH) {
int data1;
data1 = table2(ans);
writeData(outputValue1,data1); //EPROMへ書き込み
delay (1);
srlcd.print("Done!");//書き込み完了表示
delay (2000);
srlcd.setCursor(10,1);
srlcd.print(" ");
}
else {
}
//--------------------------------------------------
}
/////////////////////////////////////////////////////////////
文字数制限にひかっかってしまうので、ベタばりで申し訳ない。
かなりの部分切り貼りである。
スイッチの部分、LCDの部分、EEPROMの部分、MIDI受信の部分、桁揃えの部分等々、部分的に作っていったものを組み合わせたという感じ。
スイッチの状態をEEPROMに書き込める形とLCDに表示させる形との変換は、もっとスマートなやり方があるとは思うのだが、ベタに読み替える形になっている。
Switch Caseばかりで冗長になってしまっている。
実機ではLEDの部分にリレードライバ回路をつなぐ。
作るのはなかなか大変だが、思い通りに動くにはやはりうれしい。
部分部分は他にも応用が利くので、得たものは大きい。
大変勉強になった。
そういう中で、BOSSから新しいスイッチャーが出るとの情報も。
やりたいことはたくさんあるけれども、やはり時間とお金が最大のネック。
それでも、もう少しArduinoで楽しんでみようと思う。
【永久保証付き】Arduino Uno/スイッチサイエンス

¥価格不明
Amazon.co.jp

Arduino ブログランキングへ

エフェクター ブログランキングへ
//---------------------------------------------
//シフトレジスタでLCD駆動
#include
const byte dataPin = 6;
const byte clockPin = 8;
const byte enablePin = 7;
ShiftRegLCD123 srlcd(dataPin, clockPin, enablePin, SRLCD123);
//--------------------------------------------
//MIDI設定
#include
MIDI_CREATE_DEFAULT_INSTANCE();
//--------------------------------------------
//可変抵抗設定
const int analogInPin1 = A0; // 可変抵抗器の入力ピン
int sensorValue1 = 0; // 入力値
int outputValue1 = 0; // 出力値
//--------------------------------------------
//LED、スイッチピン設定
#define LED_PIN1 12
#define SW_PIN1 5
#define LED_PIN2 11
#define SW_PIN2 4
#define LED_PIN3 10
#define SW_PIN3 3
#define LED_PIN4 9
#define SW_PIN4 2
#define SW_PIN5 15
#define LED_PIN5 13
//----------------------------------------------
//EPRAM設定
#include
#define i2caddr 0x50
byte d=0;
//---------------------------------------
//LED、スイッチ初期化
int swVal1 = 0;
int swCount1 = 0;
boolean ledState1 = false;
int swVal2 = 0;
int swCount2 = 0;
boolean ledState2 = false;
int swVal3 = 0;
int swCount3 = 0;
boolean ledState3 = false;
int swVal4 = 0;
int swCount4 = 0;
boolean ledState4 = false;
int swVal5 = 0;
int swStatus1 = 0;
int swStatus2 = 0;
int swStatus3 = 0;
int swStatus4 = 0;
int swStatusD1 = 0;
int swStatusD2 = 0;
int swStatusD3 = 0;
int swStatusD4 = 0;
//--------------------------------------
////変換テーブルの関数定義
int table1(int y) {
int result;
switch (y){
case 0:
result = 0;
break;
case 1:
result = 1000;
break;
case 3:
result = 100;
break;
case 4:
result = 1100;
break;
case 5:
result = 10;
break;
case 6:
result = 1010;
break;
case 8:
result = 110;
break;
case 9:
result = 1110;
break;
case 11:
result = 1;
break;
case 12:
result = 1001;
break;
case 14:
result = 101;
break;
case 15:
result = 1101;
break;
case 16:
result = 11;
break;
case 17:
result = 1011;
break;
case 19:
result = 111;
break;
case 20:
result = 1111;
break;
default:
break;
}
return result;
}
//-------------------------------------------
int table2(int x) {
int result;
switch (x){
case 0:
result = 0;
break;
case 1000:
result = 1;
break;
case 100:
result = 3;
break;
case 1100:
result = 4;
break;
case 10:
result = 5;
break;
case 1010:
result = 6;
break;
case 110:
result = 8;
break;
case 1110:
result = 9;
break;
case 1:
result = 11;
break;
case 1001:
result = 12;
break;
case 101:
result = 14;
break;
case 1101:
result = 15;
break;
case 11:
result = 16;
break;
case 1011:
result = 17;
break;
case 111:
result = 19;
break;
case 1111:
result = 20;
break;
default:
break;
}
return result;
}
////////////////////////////////////////////////////////////
//セットアップ
//----------------------------------------------------------
void setup()
{
//------------------------------------------
//LEDスイッチ、設定
pinMode(LED_PIN1, OUTPUT);
pinMode(SW_PIN1, INPUT);
pinMode(LED_PIN2, OUTPUT);
pinMode(SW_PIN2, INPUT);
pinMode(LED_PIN3, OUTPUT);
pinMode(SW_PIN3, INPUT);
pinMode(LED_PIN4, OUTPUT);
pinMode(SW_PIN4, INPUT);
pinMode(SW_PIN5, INPUT); //送信用
pinMode(LED_PIN5, OUTPUT); //MIDI表示用
//-------------------------------------------
//EPRAM通信開始
Wire.begin();
//-----------------------------------------
//MIDI開始
MIDI.begin();
//------------------------------------------
//シフトレジスタでLCD開始
srlcd.begin(16,2);//LED表示桁,行を設定
srlcd.clear();//LCD初期化
srlcd.setCursor(0,0);
srlcd.print("MIDILOOPSELECTOR");
srlcd.setCursor(0,1);
srlcd.print("2015/1 Ver1.0");
delay(4000);
srlcd.clear();//LCD初期化
//--------------------------------------
}
/////////////////////////////////////////////////////
//EPROM書き込みルーチン
void writeData(unsigned int addr, byte data)
{
Wire.beginTransmission(i2caddr);
Wire.write((int)(addr >> 8));
Wire.write((int)(addr & 0xFF));
Wire.write(data);
Wire.endTransmission();
delay(10);
}
/////////////////////////////////////////////////////
//EPROM読み込みルーチン
byte readData(unsigned int addr)
{
byte result;
Wire.beginTransmission(i2caddr);
Wire.write((int)(addr >> 8));
Wire.write((int)(addr & 0xFF));
Wire.endTransmission();
Wire.requestFrom(i2caddr,1);
result = Wire.read();
return result;
}
////////////////////////////////////////////////////////
void loop()
//--------------------------------------------------------
//スイッチセクション
//*******************
{
swVal1 = digitalRead(SW_PIN1);
if (swVal1 == HIGH) {
swCount1 += 1;
}
else {
swCount1 = 0;
}
if (swCount1 == 10) {
ledState1 = !ledState1;
}
if (ledState1) {
digitalWrite(LED_PIN1, HIGH);
}
else {
digitalWrite(LED_PIN1, LOW);
}
delay(1);
//*********************
swVal2 = digitalRead(SW_PIN2);
if (swVal2 == HIGH) {
swCount2 += 1;
}
else {
swCount2 = 0;
}
if (swCount2 == 10) {
ledState2 = !ledState2;
}
if (ledState2) {
digitalWrite(LED_PIN2, HIGH);
}
else {
digitalWrite(LED_PIN2, LOW);
}
delay(1);
//**********************
swVal3 = digitalRead(SW_PIN3);
if (swVal3 == HIGH) {
swCount3 += 1;
}
else {
swCount3 = 0;
}
if (swCount3 == 10) {
ledState3 = !ledState3;
}
if (ledState3) {
digitalWrite(LED_PIN3, HIGH);
}
else {
digitalWrite(LED_PIN3, LOW);
}
delay(1);
//***************************
swVal4 = digitalRead(SW_PIN4);
if (swVal4 == HIGH) {
swCount4 += 1;
}
else {
swCount4 = 0;
}
if (swCount4 == 10) {
ledState4 = !ledState4;
}
if (ledState4) {
digitalWrite(LED_PIN4, HIGH);
}
else {
digitalWrite(LED_PIN4, LOW);
}
delay(1);
//-----------------------------------------------
//コードを生成する
int swSt1 = digitalRead(LED_PIN1) ;
if (swSt1 == HIGH) {
swStatus1 = 1000 ;
}
else {
swStatus1 = 0 ;
}
int swSt2 = digitalRead(LED_PIN2) ;
if (swSt2 == HIGH) {
swStatus2 = 100 ;
}
else {
swStatus2 = 0 ;
}
int swSt3 = digitalRead(LED_PIN3) ;
if (swSt3 == HIGH) {
swStatus3 = 10 ;
}
else {
swStatus3 = 0 ;
}
int swSt4 = digitalRead(LED_PIN4) ;
if (swSt4 == HIGH) {
swStatus4 = 1 ;
}
else {
swStatus4 = 0 ;
}
//--------------------------------------------
int ans ; //スイッチの状態コード
ans = swStatus1 + swStatus2 + swStatus3 + swStatus4; //コード合算
//---------------------------------------------
//LCD表示
char ans2[16];//4桁揃え用変数
sprintf(ans2, "%04d",ans);//4桁に揃える
srlcd.setCursor(11,1);
srlcd.print(ans2);//スイッチの設定を表示
//---------------------------------------------------------------------------
//MIDI受信セクション
int MIDIdataROM;
uint8_t MIDIdata1;
if (MIDI.read())
{
switch(MIDI.getType())
{
case midi::ProgramChange:
MIDIdata1 = MIDI.getData1();
d=readData(MIDIdata1); //EPROMから読み出し
MIDIdataROM = table1(d);//4桁数字への変換
//-------------------------------------------------------
//MIDIデータs受信の表示セクション
//桁揃え*********************
char readpgno[16];
int MIDIdata2;
MIDIdata2 = MIDIdata1 + 1;
sprintf(readpgno, "Read %03d = ",MIDIdata2);
srlcd.setCursor(0,0);
srlcd.print(readpgno);
//****************************
//EPROMから読み取った値を4桁揃えで表示
char readsetno[16];
int setdata2;
setdata2 = MIDIdataROM;
sprintf(readsetno, "%04d",setdata2);
srlcd.setCursor(11,0);
srlcd.print(readsetno);
//--------------------------------------------------
//LEDへの反映セクション
switch (d){ //LED1の反映
case 1:
case 4:
case 6:
case 9:
case 12:
case 15:
case 17:
case 20:
ledState1 = true;//LEDを点灯
break;
default:
ledState1 = false;//LEDを消灯
break;
}
switch (d){ //LED2の反映
case 3:
case 4:
case 8:
case 9:
case 14:
case 15:
case 19:
case 20:
ledState2 = true;//LEDを点灯
break;
default:
ledState2 = false;//LEDを消灯
break;
}
switch (d){ //LED3の反映
case 5:
case 6:
case 8:
case 9:
case 16:
case 17:
case 19:
case 20:
ledState3 = true;//LEDを点灯
break;
default:
ledState3 = false;//LEDを消灯
break;
}
switch (d){ //LED4の反映
case 11:
case 12:
case 14:
case 15:
case 16:
case 17:
case 19:
case 20:
ledState4 = true;//LEDを点灯
break;
default:
ledState4 = false;//LEDを消灯
break;
}
//---------------------------------
digitalWrite(LED_PIN5, HIGH);//受信LED
break; //MIDI受信ルーチンの終わり
//------------------------------------------------------
default:
digitalWrite(LED_PIN5, LOW);//受信LED
break;
}
}
//-----------------------------------------------
// 可変抵抗よりアナログ出力の値を読み取る
sensorValue1 = analogRead(analogInPin1);//可変抵抗からの読み取り
outputValue1 = map(sensorValue1, 0, 1023, 0, 127);//値の変換
int outputValueLCD;
outputValueLCD = outputValue1 +1;//EPROMのアドレスとプログラムチェンジナンバーの合わせ
char setpgno[16];
sprintf(setpgno, "Set %03d = ",outputValueLCD);
srlcd.setCursor(0,1);
srlcd.print(setpgno);
//--------------------------------------------
//5のスイッチを押した時だけ送信
swVal5 = digitalRead(SW_PIN5);
if (swVal5 == HIGH) {
int data1;
data1 = table2(ans);
writeData(outputValue1,data1); //EPROMへ書き込み
delay (1);
srlcd.print("Done!");//書き込み完了表示
delay (2000);
srlcd.setCursor(10,1);
srlcd.print(" ");
}
else {
}
//--------------------------------------------------
}
/////////////////////////////////////////////////////////////
文字数制限にひかっかってしまうので、ベタばりで申し訳ない。
かなりの部分切り貼りである。
スイッチの部分、LCDの部分、EEPROMの部分、MIDI受信の部分、桁揃えの部分等々、部分的に作っていったものを組み合わせたという感じ。
スイッチの状態をEEPROMに書き込める形とLCDに表示させる形との変換は、もっとスマートなやり方があるとは思うのだが、ベタに読み替える形になっている。
Switch Caseばかりで冗長になってしまっている。
実機ではLEDの部分にリレードライバ回路をつなぐ。
作るのはなかなか大変だが、思い通りに動くにはやはりうれしい。
部分部分は他にも応用が利くので、得たものは大きい。
大変勉強になった。
そういう中で、BOSSから新しいスイッチャーが出るとの情報も。
やりたいことはたくさんあるけれども、やはり時間とお金が最大のネック。
それでも、もう少しArduinoで楽しんでみようと思う。
【永久保証付き】Arduino Uno/スイッチサイエンス

¥価格不明
Amazon.co.jp
Arduino ブログランキングへ
エフェクター ブログランキングへ
Arduinoを使ってMS-50Gのパッチを切り替えるモノが出来たので、とりあえずご報告。
結果的にはUSBホストシールドを使ってうまくいった。
経過を説明しておくと、まず前回から、ArduinoをUSBMIDIホストにしてしまうファーム書き換えにチャレンジしてみた。
http://morecatlab.akiba.coocan.jp/lab/index.php/aruino/midi-firmware-for-arduino-uno-moco/
Macでは難しそうだったのでWindowsPCにて作業。
作業自体はうまくいって、つなぎ直したMacからもちゃんと認識された。
スケッチも一応作ってMS-50Gにつないでみたが、残念ながら反応なし。
MacでPdにてMIDI受信させてみると、これはちゃんとプログラムチェンジを認識する。
Pdで、受信のプログラムチェンジをMIDI OUTにつなぎ、MacとMS-50Gをつないだ状態でArduinoからプログラムチェンジを送信すると、これはちゃんとパッチが切り替わる。
こんな感じ。

Pd側では、設定としてMIDI INとMIDI OUTをZOOM MS-50Gとしている。
また、PCとつなぐとMS-50Gは電源が入るが、ArduinoからUSB接続した状態では電源は入らない。
もうひとつ何か足りない感じ。
どうにもこの壁が超えられず、Raspberry PiにPd乗っければできるかななどと思ってもみたが、あまり実用的ではないしと、ちょっと考えあぐねていた。
その辺も含めてネットで情報を探すと、ZOOMのG3をArduinoでコントロールしているという情報を見つけた。
これが大正解で、コードのコメントにリンクされているUSBH_MIDIのライブラリを使用したところ、USBホストシールドがうまく動いた。
後は、DIN5ピンで受信したプログラムチェンジをUSBに出力するスケッチを書いて、MIDI受信回路を作るだけ。
出来上がってみれば、しごくシンプルな構成だけれども、ここにたどり着くまでの情報探索の時間の方が実際に手を動かしている時間よりはるかに長い。
実際に作成し、その情報を公開して下さっている皆さん、また各種ライブラリを公開して下さっている皆さんに感謝を申し上げたい。
見よう見まねで作っている者にとっては、それがまさに道標そのものだ。
コードも色々と使わせて頂いている。むしろ、切り貼りに近い。
また、実際に使ってはいないけれども色んなサイトの情報で学んだことは多い。
さて、実際の動作の様子。
配線図。
USBホストシールドは都合上省略してあるが、単純に上に重ねている。

スケッチ
受信したプログラムチェンジナンバーをそのまま出力している。
MS-50Gのパッチは1~50なので、51以上は無視される。
LEDはパイロットランプ代わり。動作中はずっと付きっぱなし。
MIDI受信回路に付けてあるスライドスイッチは、スケッチ書き込み時には切断しておき、動作時にはつなぐ形になる。
動作チェックだが、ArduinoをPCとつないだ状態だとそのままMS-50GにもUSBから給電される。が、これだとPCのデジタルノイズが遠慮なく乗って来る。
PCとのUSBは抜いて、Arduinoの外部電源端子に9Vのアダプターをつなぐと、これはこれでいける。但し、MS-50Gの消費電流が500mAだということを考えると、Arduinoのレギュレーターがきついのではないかと思う。
MS-50Gに外部電源アダプターをつなぐと、USBからの給電は切れるようである。この状態だと、ArduinoがPCとつながっていてもノイズは出なくなる。
最終的にどういう構成にしようかと考えている。
いずれにせよ、これを単体で動かすとなるとなにがしかの電源は必要だ。
あまり大掛かりなものは作りたくないので、それぞれに電源アダプターを用意する方向かな。
しかし、USBへの給電を止めるにはどうするんだろう。
そもそもこの構成だとケースに実装するにしても、USBホストシールドの長さが足りなくてツラが合わせられない。
ちょっと面倒だ。
*参考にさせて頂いたサイト
https://github.com/vegos/ArduinoMIDI/blob/master/ArduinoMIDI.ino
https://github.com/YuuichiAkagawa/USBH_MIDI
http://blog.goo.ne.jp/sequence_2006/e/eddeef3b6d255b625ee8661eb10cdc0e
http://qiita.com/emahub/items/8209b5606934ab60cc6f
http://spinelify.blog.fc2.com/blog-entry-10.html
http://www.dm9records.com/index.php/tips/arduino/moco/
http://garagestylemsc.blog.jp/archives/20767328.html
http://lawrencedoss.blogspot.jp/2014/08/my-tryst-with-hacking-zoom-ms-70cdr.html
http://ichirowo.com/2011/05/arduino-midi-library/
載せきれませんが、この他にも学ばせて頂いたサイトはたくさんあります。
*SUBホストシールドにはいくつかタイプがあるようです。
私が使用したのはこちら。Arduinoも互換機を使いました。
USBホストシールド 2.0 for Arduino (compatible with Goo.../梅本有限責任事業組合

¥価格不明
Amazon.co.jp
サインスマート(SainSmart)UNO R3 互換ボード SMD ATmega328P搭載.../サインスマート(SainSmart)

¥価格不明
Amazon.co.jp

Arduino ブログランキングへ

エフェクター ブログランキングへ
結果的にはUSBホストシールドを使ってうまくいった。
経過を説明しておくと、まず前回から、ArduinoをUSBMIDIホストにしてしまうファーム書き換えにチャレンジしてみた。
http://morecatlab.akiba.coocan.jp/lab/index.php/aruino/midi-firmware-for-arduino-uno-moco/
Macでは難しそうだったのでWindowsPCにて作業。
作業自体はうまくいって、つなぎ直したMacからもちゃんと認識された。
スケッチも一応作ってMS-50Gにつないでみたが、残念ながら反応なし。
MacでPdにてMIDI受信させてみると、これはちゃんとプログラムチェンジを認識する。
Pdで、受信のプログラムチェンジをMIDI OUTにつなぎ、MacとMS-50Gをつないだ状態でArduinoからプログラムチェンジを送信すると、これはちゃんとパッチが切り替わる。
こんな感じ。

Pd側では、設定としてMIDI INとMIDI OUTをZOOM MS-50Gとしている。
また、PCとつなぐとMS-50Gは電源が入るが、ArduinoからUSB接続した状態では電源は入らない。
もうひとつ何か足りない感じ。
どうにもこの壁が超えられず、Raspberry PiにPd乗っければできるかななどと思ってもみたが、あまり実用的ではないしと、ちょっと考えあぐねていた。
その辺も含めてネットで情報を探すと、ZOOMのG3をArduinoでコントロールしているという情報を見つけた。
これが大正解で、コードのコメントにリンクされているUSBH_MIDIのライブラリを使用したところ、USBホストシールドがうまく動いた。
後は、DIN5ピンで受信したプログラムチェンジをUSBに出力するスケッチを書いて、MIDI受信回路を作るだけ。
出来上がってみれば、しごくシンプルな構成だけれども、ここにたどり着くまでの情報探索の時間の方が実際に手を動かしている時間よりはるかに長い。
実際に作成し、その情報を公開して下さっている皆さん、また各種ライブラリを公開して下さっている皆さんに感謝を申し上げたい。
見よう見まねで作っている者にとっては、それがまさに道標そのものだ。
コードも色々と使わせて頂いている。むしろ、切り貼りに近い。
また、実際に使ってはいないけれども色んなサイトの情報で学んだことは多い。
さて、実際の動作の様子。
配線図。
USBホストシールドは都合上省略してあるが、単純に上に重ねている。

スケッチ
//MIDI ProgramChange Converter
#include <Usb.h>
#include <usbh_midi.h>
#include <MIDI.h>
#define LED_PIN1 2
MIDI_CREATE_DEFAULT_INSTANCE();
USB Usb;
USBH_MIDI Midi(&Usb);
void SendMIDI(int number)
{
Usb.Task();
byte Message[2];
Message[0]=0xC0;
Message[1]=number;
Midi.SendData(Message);
delay(10);
}
void setup(){
MIDI.begin();
Usb.Init();
pinMode(LED_PIN1, OUTPUT); //LED
digitalWrite(LED_PIN1, HIGH);
}
void loop(){
Usb.Task();
uint8_t data1,data2;
if (MIDI.read()) //MIDI受信
{
switch(MIDI.getType())
{
case midi::ProgramChange:
data1 = MIDI.getData1(); //プログラムチェンジナンバー取得
SendMIDI(data1); //MIDI送信
}
}
}
受信したプログラムチェンジナンバーをそのまま出力している。
MS-50Gのパッチは1~50なので、51以上は無視される。
LEDはパイロットランプ代わり。動作中はずっと付きっぱなし。
MIDI受信回路に付けてあるスライドスイッチは、スケッチ書き込み時には切断しておき、動作時にはつなぐ形になる。
動作チェックだが、ArduinoをPCとつないだ状態だとそのままMS-50GにもUSBから給電される。が、これだとPCのデジタルノイズが遠慮なく乗って来る。
PCとのUSBは抜いて、Arduinoの外部電源端子に9Vのアダプターをつなぐと、これはこれでいける。但し、MS-50Gの消費電流が500mAだということを考えると、Arduinoのレギュレーターがきついのではないかと思う。
MS-50Gに外部電源アダプターをつなぐと、USBからの給電は切れるようである。この状態だと、ArduinoがPCとつながっていてもノイズは出なくなる。
最終的にどういう構成にしようかと考えている。
いずれにせよ、これを単体で動かすとなるとなにがしかの電源は必要だ。
あまり大掛かりなものは作りたくないので、それぞれに電源アダプターを用意する方向かな。
しかし、USBへの給電を止めるにはどうするんだろう。
そもそもこの構成だとケースに実装するにしても、USBホストシールドの長さが足りなくてツラが合わせられない。
ちょっと面倒だ。
*参考にさせて頂いたサイト
https://github.com/vegos/ArduinoMIDI/blob/master/ArduinoMIDI.ino
https://github.com/YuuichiAkagawa/USBH_MIDI
http://blog.goo.ne.jp/sequence_2006/e/eddeef3b6d255b625ee8661eb10cdc0e
http://qiita.com/emahub/items/8209b5606934ab60cc6f
http://spinelify.blog.fc2.com/blog-entry-10.html
http://www.dm9records.com/index.php/tips/arduino/moco/
http://garagestylemsc.blog.jp/archives/20767328.html
http://lawrencedoss.blogspot.jp/2014/08/my-tryst-with-hacking-zoom-ms-70cdr.html
http://ichirowo.com/2011/05/arduino-midi-library/
載せきれませんが、この他にも学ばせて頂いたサイトはたくさんあります。
*SUBホストシールドにはいくつかタイプがあるようです。
私が使用したのはこちら。Arduinoも互換機を使いました。
USBホストシールド 2.0 for Arduino (compatible with Goo.../梅本有限責任事業組合

¥価格不明
Amazon.co.jp
サインスマート(SainSmart)UNO R3 互換ボード SMD ATmega328P搭載.../サインスマート(SainSmart)

¥価格不明
Amazon.co.jp
Arduino ブログランキングへ
エフェクター ブログランキングへ
長らく続いて来たこのプロジェクトも、ようやく終わりを迎えた。
デバッグ作業、配線のやり直しを経て、ようやく完成。
ノイズ対策は、とりあえず信号線のシールド化でほぼ解決した。
最初の配線時はリレー基板にやはり変な接続があり、これが一番の原因だったようだ。
配線自体も流れを変え、リレー基板上でつなげるものはつなげ、配線をなるべく短くなるように変更した。また、信号線の近くを通るLCDに行く配線には台所用のアルミテープを貼ってみた。
ただ、結果としてやはりノイズは乗る。
ギターを直結するとやはりノイズを拾ってしまう。
しかし、ループセレクターの手前に一つエフェクターをかませると、気にならないほどになる。
要するに低インピーダンスにすればOKのようだ。
動作について説明しておくと、
まず、一つあるつまみでMIDIのプログラムナンバーを選ぶ。
そして、ONにしたいループのスイッチを押すとLEDが点灯する。この状態で選択したループに信号が流れる。
それを、つまみの横にあるボタンを押す事でEEPROMに書き込む。
後は、MIDIフットコントローラーからプログラムチェンジを送る。
そうすると、そのナンバーに応じて、EEPROMに書き込んであるデータを読み取って、その設定を再現する。
デモでは、ギター、BOSS BD-2、ループセレクター、見えないけどZOOM MS-50G、PCという順番で接続してある。
切替時のノイズは結構出てしまっている。
これで使えるか、使えないかの判断はお任せしたい。
対策もないではないが、これはこれで完成としたい。
反省点はいくつもあって、まずは基板の構成。もう少し小さくできた。
ケースが小さかった。なんとか納まっているが、蓋を閉めるのに結構圧がかかっている。要するに押し込んでいる。
MIDI端子とINPUT,OUTPUT端子は逆の方が良かった。そうすれば、信号ラインはケースの上下に分かれる事はなかった。そうすれば配線ももう少し短く出来た。
パネルのボリューム、スイッチ、LEDのラインの間隔が狭過ぎた。実用では問題ないが、見た目はせせこましくなってしまった。また、MIDI受信を示すグリーンのLEDは無用だった。かえってうるさい感じがする。
電源基盤とマイコン基板を接続するコネクターの選択が良くなかった。
後は基板の配置である。なかなか決められず、結構な数のバカ穴を開けてしまった。
技術的なハードルは随分あった。
3線でのLCD表示、外部EEPROMの読み書き、データ変換のロジック、MIDI受信コードと受信回路、リレードライバ回路、5V降圧電源回路、ケースの角穴あけ、ノイズ対策等々。
ほとんどネットの情報で乗り越える事が出来た。
すべてこれ先人のおかげである。敬意を表したい。
電源部は案外安定して作動している。消費電流を測ってみると、リレーを全部動作させたところで125mA、4つともOFFで35mAであった。
電源用のスイッチはサイズ、感触ともいい感じのものが見つけられた。
いい部品を見つけるのも楽しみのひとつ。
しかし、見切り発車的なところが多く、結構な無駄も発生している。
久しぶりに作るにしては、ハンダの数も含めて結構な大作になってしまった。
次回、スケッチの解説をしたいと思う。

Arduino ブログランキングへ

エフェクター ブログランキングへ
デバッグ作業、配線のやり直しを経て、ようやく完成。
ノイズ対策は、とりあえず信号線のシールド化でほぼ解決した。
最初の配線時はリレー基板にやはり変な接続があり、これが一番の原因だったようだ。
配線自体も流れを変え、リレー基板上でつなげるものはつなげ、配線をなるべく短くなるように変更した。また、信号線の近くを通るLCDに行く配線には台所用のアルミテープを貼ってみた。
ただ、結果としてやはりノイズは乗る。
ギターを直結するとやはりノイズを拾ってしまう。
しかし、ループセレクターの手前に一つエフェクターをかませると、気にならないほどになる。
要するに低インピーダンスにすればOKのようだ。
動作について説明しておくと、
まず、一つあるつまみでMIDIのプログラムナンバーを選ぶ。
そして、ONにしたいループのスイッチを押すとLEDが点灯する。この状態で選択したループに信号が流れる。
それを、つまみの横にあるボタンを押す事でEEPROMに書き込む。
後は、MIDIフットコントローラーからプログラムチェンジを送る。
そうすると、そのナンバーに応じて、EEPROMに書き込んであるデータを読み取って、その設定を再現する。
デモでは、ギター、BOSS BD-2、ループセレクター、見えないけどZOOM MS-50G、PCという順番で接続してある。
切替時のノイズは結構出てしまっている。
これで使えるか、使えないかの判断はお任せしたい。
対策もないではないが、これはこれで完成としたい。
反省点はいくつもあって、まずは基板の構成。もう少し小さくできた。
ケースが小さかった。なんとか納まっているが、蓋を閉めるのに結構圧がかかっている。要するに押し込んでいる。
MIDI端子とINPUT,OUTPUT端子は逆の方が良かった。そうすれば、信号ラインはケースの上下に分かれる事はなかった。そうすれば配線ももう少し短く出来た。
パネルのボリューム、スイッチ、LEDのラインの間隔が狭過ぎた。実用では問題ないが、見た目はせせこましくなってしまった。また、MIDI受信を示すグリーンのLEDは無用だった。かえってうるさい感じがする。
電源基盤とマイコン基板を接続するコネクターの選択が良くなかった。
後は基板の配置である。なかなか決められず、結構な数のバカ穴を開けてしまった。
技術的なハードルは随分あった。
3線でのLCD表示、外部EEPROMの読み書き、データ変換のロジック、MIDI受信コードと受信回路、リレードライバ回路、5V降圧電源回路、ケースの角穴あけ、ノイズ対策等々。
ほとんどネットの情報で乗り越える事が出来た。
すべてこれ先人のおかげである。敬意を表したい。
電源部は案外安定して作動している。消費電流を測ってみると、リレーを全部動作させたところで125mA、4つともOFFで35mAであった。
電源用のスイッチはサイズ、感触ともいい感じのものが見つけられた。
いい部品を見つけるのも楽しみのひとつ。
しかし、見切り発車的なところが多く、結構な無駄も発生している。
久しぶりに作るにしては、ハンダの数も含めて結構な大作になってしまった。
次回、スケッチの解説をしたいと思う。
Arduino ブログランキングへ
エフェクター ブログランキングへ
ようやく週末で、やっと作業再開。
ZOOMのMS-50GをMIDIでパッチを切り替えることについては色々手探り。
Arduinoで制御するのが最終目標だが、どうもうまくUSBホストシールドが動かない。
他にもいくつか実験してみたのだがうまくいかず。今のところ、以前に書いた通りGT-8FloorBoardからはパッチのチェンジが出来たということを元に探ってみることにした。
MIDIモニターで信号をモニターしてみると、メッセージはやはりプログラムチェンジに反応している。であれば、USBからプログラムチェンジさえ送信できれば切替はできるはず、なのだが、Macでは適当なソフトが見つけられなかった。
そこで、pd、いわゆるPure Dataというソフトに手を出す。
ダウンロードしてインストールから始める。
まったくの初めてなので初心者向けのチュートリアルを読み、後は必要な機能を作る方法をウェブで探す。
で、作ったのがこれ。

PCのキーボードのS,D,F,Gキーを押すとプログラムチェンジを送信する。
MacとMS-50GをUSBケーブルでつないだだけだが、これでちゃんとパッチが切り替わる。
色々試してみたが、エディット画面にしていても切り変わるのはパッチメモリーのようだ。
パッチメモリーのナンバーがプログラムチェンジナンバーに一致する。
さて、動作の確認はできた。
但し、この状態では以前にも書いたがPCからのデジタルノイズが乗ってしまって、使い物にならない。なんとかマイコン制御まで持っていきたいのだが、これならUSBホストシールドを使わずに、USBチップを書き換える方が手っ取り早いのではないかと思えて来た。
ちなみに、MS-50GのUSB給電は、iPhoneのUSB電源アダプタを使うとそこそこいける。
やはり電池と比べて少しノイズは増えるのだが、家で練習するには使えるレベル。元々そんなに気にしない方だ。
9Vの電源アダプタもBOSSのを試してみたが、これが電池よりもノイズが少なかった。
ただ、容量が足りないので常時使う訳にはいかない。
USB-MIDIのインターフェイスを作る時に、USBにきれいな電流を載せる方策が取れるといいのだが。
PureDataはなかなか面白そうだ。
初めて使って、ここまでできるのだからそう難しいものではないという印象。
プログラムは一行も書いていない。
画像に示したパッチだけで構成されている。
当然エフェクトも作れる訳で、ラズベリーパイに載せれば色々できる。
この辺はまあ先々のお楽しみ。
明日はループセレクターを仕上げたい。
ノイズの原因は、電源やデジタルノイズというよりは、アースまわりにありそうだ。
とりあえずシールドケーブルに変更し、結線も一部変更して配線をやり直す予定。
今持っているMIDIフットコントローラーMFC-1はやたらと大きいので、小型のフットコントローラーも作ってしまおうかと思っている。その前に手元コントローラーか。
自作ものが増えて、電源をどうするかも課題になりそうだ。

エフェクター ブログランキングへ
ZOOMのMS-50GをMIDIでパッチを切り替えることについては色々手探り。
Arduinoで制御するのが最終目標だが、どうもうまくUSBホストシールドが動かない。
他にもいくつか実験してみたのだがうまくいかず。今のところ、以前に書いた通りGT-8FloorBoardからはパッチのチェンジが出来たということを元に探ってみることにした。
MIDIモニターで信号をモニターしてみると、メッセージはやはりプログラムチェンジに反応している。であれば、USBからプログラムチェンジさえ送信できれば切替はできるはず、なのだが、Macでは適当なソフトが見つけられなかった。
そこで、pd、いわゆるPure Dataというソフトに手を出す。
ダウンロードしてインストールから始める。
まったくの初めてなので初心者向けのチュートリアルを読み、後は必要な機能を作る方法をウェブで探す。
で、作ったのがこれ。

PCのキーボードのS,D,F,Gキーを押すとプログラムチェンジを送信する。
MacとMS-50GをUSBケーブルでつないだだけだが、これでちゃんとパッチが切り替わる。
色々試してみたが、エディット画面にしていても切り変わるのはパッチメモリーのようだ。
パッチメモリーのナンバーがプログラムチェンジナンバーに一致する。
さて、動作の確認はできた。
但し、この状態では以前にも書いたがPCからのデジタルノイズが乗ってしまって、使い物にならない。なんとかマイコン制御まで持っていきたいのだが、これならUSBホストシールドを使わずに、USBチップを書き換える方が手っ取り早いのではないかと思えて来た。
ちなみに、MS-50GのUSB給電は、iPhoneのUSB電源アダプタを使うとそこそこいける。
やはり電池と比べて少しノイズは増えるのだが、家で練習するには使えるレベル。元々そんなに気にしない方だ。
9Vの電源アダプタもBOSSのを試してみたが、これが電池よりもノイズが少なかった。
ただ、容量が足りないので常時使う訳にはいかない。
USB-MIDIのインターフェイスを作る時に、USBにきれいな電流を載せる方策が取れるといいのだが。
PureDataはなかなか面白そうだ。
初めて使って、ここまでできるのだからそう難しいものではないという印象。
プログラムは一行も書いていない。
画像に示したパッチだけで構成されている。
当然エフェクトも作れる訳で、ラズベリーパイに載せれば色々できる。
この辺はまあ先々のお楽しみ。
明日はループセレクターを仕上げたい。
ノイズの原因は、電源やデジタルノイズというよりは、アースまわりにありそうだ。
とりあえずシールドケーブルに変更し、結線も一部変更して配線をやり直す予定。
今持っているMIDIフットコントローラーMFC-1はやたらと大きいので、小型のフットコントローラーも作ってしまおうかと思っている。その前に手元コントローラーか。
自作ものが増えて、電源をどうするかも課題になりそうだ。
エフェクター ブログランキングへ
一旦配線して組み上げたものの、LCD表示がまったくうまくいかなかった。
そこで、デバッグをしていた。
基板を切り離し、基板ごとに動作チェック。
まず、誤配線。
ATmega328のリセットに使うタクトスイッチの配線を間違えていて、ずっとリセットになりっぱなしの状態であった。これを修正。
LCDまわりでは、シフトレジスタからの配線の一つが、基板にちゃんとついていなかった。
ハンダもれという感じである。
ここまでで、一旦検証用のブレッドボードと配線を切り替えながら検証。
どうもシフトレジスタへの配線の組み合わせが合っていないようで、スケッチの方のピン設定を変え、それに合わせて実配線をやり直す。
これで一応スケッチ通りの表示が出せるようになった。
しかし、基板を動かしたりすると、LCDが訳のわからない表示になったり、暴走状態になる。
何かリークがあるようだ。
基板のパターンをドライバーでトレースしてゆくと、途中でなにかハンダクズのようなものが落ちる。
これが原因で変な接触部があったようだ。
ここを修正すると表示は安定した。
ここまでで、基板上の問題は解決、再度配線をやり直す。
しかし、配線と配線をつなぐちょっとみっともない状態に。
それでもなんとか組み上げ、蓋を閉めようとするのだが、配線材がやはり結構な量で、蓋をしめるのがぎりぎりであった。

さて、ようやくギターをつないで動作チェック。
ギターから直結し、それにZOOMのMS-50Gをつないでパソコンでモニター。
電源を入れていない状態でも内部配線はつながるようになっているので音は出る。
そこまではOKだったのだが、残念なことに電源を入れると、結構なノイズが入る。
スケッチで見ると、セットアップのところではそうでもないが、ループのところに入ると、ノイズが入って来る。
このままではちょっと実用には使えない。
ある程度予想はしていたのだが、ちょっとめげる。
対策はいくつか考えられるので、やれるだけやってみようと思う。
ケースは、やはり少し小さかったようだ。
配線にちょっと無理がでている。
しかし、リレー、LED、MIDI受信やEEPROMあたりの動作は目論見通りの動きをする。
ひとまず成功といっていいかも知れない。
再度材料を調達してもう少し頑張ってみる。


Arduino ブログランキングへ

エフェクター ブログランキングへ
そこで、デバッグをしていた。
基板を切り離し、基板ごとに動作チェック。
まず、誤配線。
ATmega328のリセットに使うタクトスイッチの配線を間違えていて、ずっとリセットになりっぱなしの状態であった。これを修正。
LCDまわりでは、シフトレジスタからの配線の一つが、基板にちゃんとついていなかった。
ハンダもれという感じである。
ここまでで、一旦検証用のブレッドボードと配線を切り替えながら検証。
どうもシフトレジスタへの配線の組み合わせが合っていないようで、スケッチの方のピン設定を変え、それに合わせて実配線をやり直す。
これで一応スケッチ通りの表示が出せるようになった。
しかし、基板を動かしたりすると、LCDが訳のわからない表示になったり、暴走状態になる。
何かリークがあるようだ。
基板のパターンをドライバーでトレースしてゆくと、途中でなにかハンダクズのようなものが落ちる。
これが原因で変な接触部があったようだ。
ここを修正すると表示は安定した。
ここまでで、基板上の問題は解決、再度配線をやり直す。
しかし、配線と配線をつなぐちょっとみっともない状態に。
それでもなんとか組み上げ、蓋を閉めようとするのだが、配線材がやはり結構な量で、蓋をしめるのがぎりぎりであった。

さて、ようやくギターをつないで動作チェック。
ギターから直結し、それにZOOMのMS-50Gをつないでパソコンでモニター。
電源を入れていない状態でも内部配線はつながるようになっているので音は出る。
そこまではOKだったのだが、残念なことに電源を入れると、結構なノイズが入る。
スケッチで見ると、セットアップのところではそうでもないが、ループのところに入ると、ノイズが入って来る。
このままではちょっと実用には使えない。
ある程度予想はしていたのだが、ちょっとめげる。
対策はいくつか考えられるので、やれるだけやってみようと思う。
ケースは、やはり少し小さかったようだ。
配線にちょっと無理がでている。
しかし、リレー、LED、MIDI受信やEEPROMあたりの動作は目論見通りの動きをする。
ひとまず成功といっていいかも知れない。
再度材料を調達してもう少し頑張ってみる。

Arduino ブログランキングへ
エフェクター ブログランキングへ
MIDIループセレクターの方は、先週末に実は配線を終えたのだが、動作に至らず、現在デバック中である。
配線間違いや接続違いもあり、ちょっとめげている。
ということで、完成はちょっとお預け。
ZOOMのMS-50Gを購入した事は前回書いたけれど、実際使ってみて、これがなかなかいい。
音作りはまだ途上なのでひとまず置くとして、操作性には正直感心した。
マルチエフェクターにありがちな見通しの悪さが、よく設計されたUIで苦痛に感じる事が無い。
ボタンの配置さえ分かれば、かなり直感的に操作できる。
3つのつまみがポイントかな。
パラメータを3つ並べて動かせるというのがいいのかも知れない。
各エフェクターのエディット画面では、LCDにエフェクターの図柄が表示されるのだが、そこに描かれているつまみが、ちゃんと実際の値を反映しているあたり、芸が細かい。
さて、肝心の音の方だが、アンプシュミレーターの選択でかなり音が変わってしまう。
歪み系の音では、アンプとペダルの組み合わせで、かなり狙った音に近い音が作れるという印象。
ただ、GT-8では出せていたウォームな歪みはまだ作れていない。
あと、アンプの位置でかなり音が変わってしまうので、パッチを組む場合は、まずそこをきちんと決めてからかかる方がいい。
一応、スタジオ練習用ということで、1台で完結するという目標で音を作っているのだが、6種類のエフェクターが使えると言っても、アンプ、ノイズリダクション、コンプを常にONと考えると、これに残響系を加えると、実際に”エフェクト”として使えるのは1台~3台ということになってしまう。
そこで音作りにEQをうまく使いたいのだが、どうも入っているグライコはバンドもちょっと使い慣れたものと違うし、これだけは操作性も悪い。うまく使えていない。
パライコの方が使いやすい感じだが、バンドが2つしかないのがちょっと残念。
いずれにせよまだ音作りの途上なので、なんとも言えない。
歪み系はアンプにせよペダルにせよそれなりに種類はあるので、新しい音にチャレンジするにはいい機材だと思う。
クリーン系の音も、立つ音が作れる。
コーラスも特にデチューンというのが気に入った。
あと、モジュレーションのかかるディレイもあり、狙っていた音は十分に作れる。
ディレイ系は種類もあり、2台3台と使う事が可能なので、そこはポイントが高い。
ただ、リバーブ系は粗い感じで、パラメータも何かひとつ足りない気がする。
密度の高いリバーブもあるのだが、アンプシュミレータを使うと、大抵プロセッサを使い切ってしまってスルーモードになってしまい、使うことができない。
歪み系の音では、今までBOSSのBD-2を基本に音作りをしてきたので、MS-50Gにそれがないのが残念。OD-1やDS-1はあるのだから、是非載せて欲しかった。
これは、実機を併用する方がいいかも知れない。
ノイズリダクションはなんかいい感じだ。
ノイズゲートのような違和感がなく、また効果も高い。
フェイザー、フランジャーなどもデジタル臭さを感じさせない。
空間系のもう一台としても十分使い出がある。
4日ほど弾き込んでみたが、早速バッテリーがなくなってしまった。
専用の電源アダプターは買っていなかったので、さてどうしようかと思って、PCからUSBをつないでみると、給電はできるのだが、ノイズが乗って来てしまう。
消費電力が500mAと、エフェクターとしては高めなので、手持ちのBOSSのアダプターは使えない。
やはり専用が必要かも知れない。
こたつでギターを弾く私にとっては、これは卓上に置けるマルチエフェクターという点で、大変使い勝手がいい。
エディットはし易いので、日々色んな音を楽しむのがいいのではないだろうか。
使い倒すのが面白いエフェクターなのではないかと思う。
これだけの音を作るのには、今まではかなり大掛かりなシステムが必要だった。
それが卓上に乗るというのだから、考えてみればこれは凄いことなんだろうと思う。
さて、表題のGT Fx FloorBoardだが、以前紹介したGT-8 FxFloorBoardがバージョンアップしてBOSS GT-3, GT-5, GT-6, GT-8, GT-Pro, GT-10 and GT-100に対応ということらしい。
*使ってみたところ、GT-8ではつなげない事がわかった。各機種別のFx FloorBoardはこちら
http://fxfloorboard.sourceforge.net/
http://sourceforge.net/projects/fxfloorboard/
エディット画面も例えばイコライザーなどはアナライザー表示もあったり、使いやすくなっているようだ。
似たようなプロジェクトはいくつかあって、こちらも非常に面白い。
日テレプラスで菰口雄矢氏のライブを見る。
どこかで聞いた曲だと思ったら、楽器フェアで見たんだった。
いや、なかなかいいです。
ZOOM MULTI STOMP MS-50G/ZOOM(ズーム)

¥10,800
Amazon.co.jp
ZOOM 驚異のマルチ・ストンプ 空間系エフェクト MS-70CDR/ZOOM(ズーム)

¥12,960
Amazon.co.jp

エフェクター ブログランキングへ
配線間違いや接続違いもあり、ちょっとめげている。
ということで、完成はちょっとお預け。
ZOOMのMS-50Gを購入した事は前回書いたけれど、実際使ってみて、これがなかなかいい。
音作りはまだ途上なのでひとまず置くとして、操作性には正直感心した。
マルチエフェクターにありがちな見通しの悪さが、よく設計されたUIで苦痛に感じる事が無い。
ボタンの配置さえ分かれば、かなり直感的に操作できる。
3つのつまみがポイントかな。
パラメータを3つ並べて動かせるというのがいいのかも知れない。
各エフェクターのエディット画面では、LCDにエフェクターの図柄が表示されるのだが、そこに描かれているつまみが、ちゃんと実際の値を反映しているあたり、芸が細かい。
さて、肝心の音の方だが、アンプシュミレーターの選択でかなり音が変わってしまう。
歪み系の音では、アンプとペダルの組み合わせで、かなり狙った音に近い音が作れるという印象。
ただ、GT-8では出せていたウォームな歪みはまだ作れていない。
あと、アンプの位置でかなり音が変わってしまうので、パッチを組む場合は、まずそこをきちんと決めてからかかる方がいい。
一応、スタジオ練習用ということで、1台で完結するという目標で音を作っているのだが、6種類のエフェクターが使えると言っても、アンプ、ノイズリダクション、コンプを常にONと考えると、これに残響系を加えると、実際に”エフェクト”として使えるのは1台~3台ということになってしまう。
そこで音作りにEQをうまく使いたいのだが、どうも入っているグライコはバンドもちょっと使い慣れたものと違うし、これだけは操作性も悪い。うまく使えていない。
パライコの方が使いやすい感じだが、バンドが2つしかないのがちょっと残念。
いずれにせよまだ音作りの途上なので、なんとも言えない。
歪み系はアンプにせよペダルにせよそれなりに種類はあるので、新しい音にチャレンジするにはいい機材だと思う。
クリーン系の音も、立つ音が作れる。
コーラスも特にデチューンというのが気に入った。
あと、モジュレーションのかかるディレイもあり、狙っていた音は十分に作れる。
ディレイ系は種類もあり、2台3台と使う事が可能なので、そこはポイントが高い。
ただ、リバーブ系は粗い感じで、パラメータも何かひとつ足りない気がする。
密度の高いリバーブもあるのだが、アンプシュミレータを使うと、大抵プロセッサを使い切ってしまってスルーモードになってしまい、使うことができない。
歪み系の音では、今までBOSSのBD-2を基本に音作りをしてきたので、MS-50Gにそれがないのが残念。OD-1やDS-1はあるのだから、是非載せて欲しかった。
これは、実機を併用する方がいいかも知れない。
ノイズリダクションはなんかいい感じだ。
ノイズゲートのような違和感がなく、また効果も高い。
フェイザー、フランジャーなどもデジタル臭さを感じさせない。
空間系のもう一台としても十分使い出がある。
4日ほど弾き込んでみたが、早速バッテリーがなくなってしまった。
専用の電源アダプターは買っていなかったので、さてどうしようかと思って、PCからUSBをつないでみると、給電はできるのだが、ノイズが乗って来てしまう。
消費電力が500mAと、エフェクターとしては高めなので、手持ちのBOSSのアダプターは使えない。
やはり専用が必要かも知れない。
こたつでギターを弾く私にとっては、これは卓上に置けるマルチエフェクターという点で、大変使い勝手がいい。
エディットはし易いので、日々色んな音を楽しむのがいいのではないだろうか。
使い倒すのが面白いエフェクターなのではないかと思う。
これだけの音を作るのには、今まではかなり大掛かりなシステムが必要だった。
それが卓上に乗るというのだから、考えてみればこれは凄いことなんだろうと思う。
さて、表題のGT Fx FloorBoardだが、以前紹介したGT-8 FxFloorBoard
*使ってみたところ、GT-8ではつなげない事がわかった。各機種別のFx FloorBoardはこちら
http://fxfloorboard.sourceforge.net/
http://sourceforge.net/projects/fxfloorboard/
エディット画面も例えばイコライザーなどはアナライザー表示もあったり、使いやすくなっているようだ。
似たようなプロジェクトはいくつかあって、こちらも非常に面白い。
日テレプラスで菰口雄矢氏のライブを見る。
どこかで聞いた曲だと思ったら、楽器フェアで見たんだった。
いや、なかなかいいです。
ZOOM MULTI STOMP MS-50G/ZOOM(ズーム)

¥10,800
Amazon.co.jp
ZOOM 驚異のマルチ・ストンプ 空間系エフェクト MS-70CDR/ZOOM(ズーム)

¥12,960
Amazon.co.jp
エフェクター ブログランキングへ
ループセレクターは週末では完成に至らず。
ZOOMのマルチエフェクターMS-50Gを買ってしまって、そちらの試奏などをしていたら、作業が追いつかなくなってしまった。
なんでまたMS-50Gなのかというと、コンパクトサイズということと、空間系のエフェクトが充実していること。あと値段。
スタジオに行く時の機材として、BOSSのGT-8はさすがにかさばるし、自宅のセッティングを崩すのも効率が悪い。
ということで、とりあえず一台でなんとかなる機材としてのチョイス。
こういうものが出ていた事すら知らなかった。
ここ数年は、ほんと何も見ていなかった。
ただ、目論見はあって、製作中のループセレクターと組み合わせることで、かなり使い勝手が良くなる。
MS-50Gは、公式にはMIDI対応は謳っていないが、以前紹介したGT-8FxFloorBoardというGT-8の非公式エディットソフトでUSBから接続すると、パッチのチェンジができるのである。
MSシリーズをMIDIで動かすことはネットでも少し情報はあって、今度はこれに挑戦してみるつもり。
これがうまくいけば、ループセレクターとの組み合わせでかなりのことができる。
その後製作予定のオーバードライブ/ディストーションモジュールとの組み合わせが当面の目標。
MS-50Gのレビューはまた改めて。
ループセレクターの製作も進んでいる。
思わぬトラブルの連続ながら、それをひとつひとつ乗り越えていく過程も勉強だ。
それもまた楽しい。
部品の実装もしてみたが、思ったより見た目もいい。
基板レイアウトも解決した。
あとは結線あるのみ。
ZOOMのマルチエフェクターMS-50Gを買ってしまって、そちらの試奏などをしていたら、作業が追いつかなくなってしまった。
なんでまたMS-50Gなのかというと、コンパクトサイズということと、空間系のエフェクトが充実していること。あと値段。
スタジオに行く時の機材として、BOSSのGT-8はさすがにかさばるし、自宅のセッティングを崩すのも効率が悪い。
ということで、とりあえず一台でなんとかなる機材としてのチョイス。
こういうものが出ていた事すら知らなかった。
ここ数年は、ほんと何も見ていなかった。
ただ、目論見はあって、製作中のループセレクターと組み合わせることで、かなり使い勝手が良くなる。
MS-50Gは、公式にはMIDI対応は謳っていないが、以前紹介したGT-8FxFloorBoardというGT-8の非公式エディットソフトでUSBから接続すると、パッチのチェンジができるのである。
MSシリーズをMIDIで動かすことはネットでも少し情報はあって、今度はこれに挑戦してみるつもり。
これがうまくいけば、ループセレクターとの組み合わせでかなりのことができる。
その後製作予定のオーバードライブ/ディストーションモジュールとの組み合わせが当面の目標。
MS-50Gのレビューはまた改めて。
ループセレクターの製作も進んでいる。
思わぬトラブルの連続ながら、それをひとつひとつ乗り越えていく過程も勉強だ。
それもまた楽しい。
部品の実装もしてみたが、思ったより見た目もいい。
基板レイアウトも解決した。
あとは結線あるのみ。
とうとうその8まで来てしまった。連載というか、随分長く引っ張るなと思われるかも知れないけれど、仕事の合間の実際の製作の進行に沿っているので、もう少しご辛抱願いたい。
さて、ATmega328へのスケッチの書き込みはできたので、これを基板に実装する。
ケースへの配置が厳しいので、なるべく小さく作る。
完成品がこれ。

ユニバーサル基板を2/3ほどで切って使っている。
これで多少ケース内のレイアウトに余裕が出そうだ。
色々と試してみて、うまく行けばMIDI THRU端子も付けられそうな感じ。
で、再びケース加工だが、それは週末に回して、その前にリレー基板から各ジャックへの配線を図に書く。
CADでも使っていれば公開してもいいのだが、私はノートに手書きが標準なので、ちょっと見せられない。
特段難しいことをしている訳でもないのだが、一応トゥルーバイパス仕様にしたり、ループのジャックに何も刺さない時はループのインーアウトを直結するためにスイッチ付きのジャックを使っている関係で、結構頭を悩ます。
配線が決まったので、リレー基板とジャックに配線を施す。
リレー基板には配線用のコネクタを取り付けたのだが、L型にしたのは配置的に失敗だった。
それと、コネクタに使うピンヘッダを調達するのを忘れていて、というか、コネクタの種類もいくつかあって、それに合うピンヘッダがまったくわからない。
共立エレショップのサイトでようやく見つけて注文したが、まだ届かない。
これは、しかし今回勉強になった。
ということで、作業はここまで。
明日は再び秋葉原へ。
スペーサーと、そろそろ配線材が尽きて来た。
それから、次の作品の部品を見つくろう予定。
週末で完成まで持ち込めるかな。

Arduino ブログランキングへ

エフェクター ブログランキングへ
さて、ATmega328へのスケッチの書き込みはできたので、これを基板に実装する。
ケースへの配置が厳しいので、なるべく小さく作る。
完成品がこれ。

ユニバーサル基板を2/3ほどで切って使っている。
これで多少ケース内のレイアウトに余裕が出そうだ。
色々と試してみて、うまく行けばMIDI THRU端子も付けられそうな感じ。
で、再びケース加工だが、それは週末に回して、その前にリレー基板から各ジャックへの配線を図に書く。
CADでも使っていれば公開してもいいのだが、私はノートに手書きが標準なので、ちょっと見せられない。
特段難しいことをしている訳でもないのだが、一応トゥルーバイパス仕様にしたり、ループのジャックに何も刺さない時はループのインーアウトを直結するためにスイッチ付きのジャックを使っている関係で、結構頭を悩ます。
配線が決まったので、リレー基板とジャックに配線を施す。
リレー基板には配線用のコネクタを取り付けたのだが、L型にしたのは配置的に失敗だった。
それと、コネクタに使うピンヘッダを調達するのを忘れていて、というか、コネクタの種類もいくつかあって、それに合うピンヘッダがまったくわからない。
共立エレショップのサイトでようやく見つけて注文したが、まだ届かない。
これは、しかし今回勉強になった。
ということで、作業はここまで。
明日は再び秋葉原へ。
スペーサーと、そろそろ配線材が尽きて来た。
それから、次の作品の部品を見つくろう予定。
週末で完成まで持ち込めるかな。
Arduino ブログランキングへ
エフェクター ブログランキングへ