今更ながらNetBootの導入

はじめに

 今回はMacでNetBootを利用できるようにする方法を紹介します。NetBootを利用することにより、過去のOSでしか動かせないソフトをさくっと使ったり、古い骨董OSを動かしてニヤニヤしたり...なんてことができます。個人的にはClassic Mac大好きなマカーさんにとってはかなり便利な機能だと思います。

 以後、このリンクにあるように説明の際OSバージョンを置き換えて説明します。

support.apple.com

こちらは個人でソフトの互換性を手軽に確認したり、古いOSを楽しむためだけに利用しており、この方法が専門的な利用に耐えうるかどうかは保証しかねます。このブログを見てNetBootを実行される際は必ず自己責任でお願いします。

続きを読む

礬物の逆旅・衝撃のライブレポート!

先日11月6日に京都市立芸術大学文化祭・メインステージにて行いました「礬物の逆旅」にお越しくださった皆様、配信を見てくださった皆様、気に留めていただいた皆様ありがとうございました。

この記事では礬物の逆旅で使用した機材を紹介します。

続きを読む

LR Baggs Control-Xの配線

先日ヤフオクにてジャンクのピエゾブリッジを購入した際、LR BaggsのControl-XというピエゾPU用プリアンプも同梱されていたため折角なので使ってみようとしましたが、ジャック部分が切られていてどう配線すれば良いか分からなかったため備忘録としてこの記事を書いています。

続きを読む

Sustainiac"擬似"コイルタップ化

SustainiacのドライバはSustainiacオフ時でもアクティブピックアップとして機能しますが、通常ではドライバからはハムバッカーサウンドが出るようなセッティングになされています。しかし、このようなドライバをSustainiacの配線次第で擬似的にコイルタップできることが判明したため、備忘録としてここにまとめておきます。

続きを読む

レーザーハープのコードBeta2

#include <LiquidCrystal.h>

#define NOTE_ON 144       
#define CONTROLCHANGE 176 
#define ALLSOUNDOFF 120 
#define SensorsNumber 6 //number of photo sensor
#define Legato 10
#define Limit 710

LiquidCrystal lcd(0, 1, 2, 3, 4, 5);

const int RightSW=13, LeftSW=10, ToggleDown=12, ToggleUp=11;
int nLB=0,nLM=1,nLT=2,nRB=3,nRM=4,nRT=5,vLB=1,vLM=1,vLT=1,vRB=1,vRM=1,vRT=1; //n=note,v=velocity
int Input[SensorsNumber] = {0,1,2,4,5,3};
int Note[SensorsNumber] = {nRT,nRM,nRB,nLT,nLM,nLB};
int Velocity[SensorsNumber] = {vRT,vRM,vRB,vLT,vLM,vLB};
short Counter[Sensorsnumber]; //change to int

void sendMidi(int cmd, int pitch, int velocity);
void Evaluate(int Value, int Note, int State, int Velocity);

//LB=LeftBottom(pin3),LM=LeftMiddle(pin5),LT=LeftTop(pin4),RB=RightBottom(pin2),RM=RightMiddle(pin1),RT=RightTop(pin0)

void sendMidi(int cmd, int pitch, int velocity) {
  Serial.write(cmd);
  Serial.write(pitch);
  Serial.write(velocity);
}

int Evaluate(int Pin){
   int Status = 0;
//thanks to developer who establish this function:https://jumbleat.com/2016/12/01/revision_of_avoiding_chatter/  
   if(1000 < analogRead(Input[Pin])){
     Counter[Pin]++;  //increase number
     if(Counter[Pin] > Limit){ //when count get limitance
       Counter[Pin] = Limit;
     }
   }else{
     if(Counter[Pin] > Legato){
       Status = 3; //stop shading 
     }
     Counter[Pin] = 0;
   }

   if(Counter[Pin] > Legato){
     Status = 2; //while shading
   }
   else if(Counter[Pin] == Legato){
     Status = 1; //start shading
   }

   return Status;
}

void setup() {  //setting up pinmode, LCD and MIDI
  Serial.begin(31250);
  pinMode(RightSW,INPUT);  //now developing laser harp systems with switches
  pinMode(LeftSW,INPUT);
  pinMode(ToggleDown,INPUT);
  pinMode(ToggleUp,INPUT);
  lcd.begin(16, 2);
  sendMidi(CONTROLCHANGE, ALLSOUNDOFF, 0); 
}

void loop(){
  for(int n = 0; n < SensorsNumber; n++){
    int Status = Evaluate(n);
    if(Status == 1){
      sendMidi(NOTE_ON, Note[n], Velocity[n]);
    }
    else if(Status == 3){
      sendMidi(NOTE_ON, Note[n], 0);  //velocity 0 means note off
    }
  }
}

レーザーハープのコードBeta

#include <LiquidCrystal.h>

#define NOTE_ON 144
#define CONTROLCHANGE 176
#define ALLSOUNDOFF 120
#define SensorsNumber 6 //number of photo sensor
#define Legato 10
#define Limit 710

LiquidCrystal lcd(0, 1, 2, 3, 4, 5);

const int RightSW=13, LeftSW=10, ToggleDown=12, ToggleUp=11;
int nLB=0,nLM=1,nLT=2,nRB=3,nRM=4,nRT=5,vLB=1,vLM=1,vLT=1,vRB=1,vRM=1,vRT=1; //n=note,v=velocity
int Input[SensorsNumber] = {0,1,2,4,5,3};
int Note[SensorsNumber] = {nRT,nRM,nRB,nLT,nLM,nLB};
int Velocity[SensorsNumber] = {vRT,vRM,vRB,vLT,vLM,vLB};
short Counter[Sensorsnumber]; //change to int

void sendMidi(int cmd, int pitch, int velocity);
void Evaluate(int Value, int Note, int State, int Velocity);

//LB=LeftBottom(pin3),LM=LeftMiddle(pin5),LT=LeftTop(pin4),RB=RightBottom(pin2),RM=RightMiddle(pin1),RT=RightTop(pin0)

void sendMidi(int cmd, int pitch, int velocity) {
Serial.write(cmd);
Serial.write(pitch);
Serial.write(velocity);
}

int Evaluate(int Pin){
int Status = 0;
//thanks to developer who establish this function:https://jumbleat.com/2016/12/01/revision_of_avoiding_chatter/
if(1000 < analogRead(Input[Pin])){
Counter[Pin]++; //increase number
if(Counter[Pin] > Limit){ //when count get limitance
Counter[Pin] = Limit;
}
}else{
if(Counter[Pin] > Legato){
Status = 3; //stop shading
}
Counter[Pin] = 0;
}

if(Counter[Pin] > Legato){
Status = 2; //while shading
}
else if(Counter[Pin] == Legato){
Status = 1; //start shading
}

return Status;
}

void setup() { //setting up pinmode, LCD and MIDI
Serial.begin(31250);
pinMode(RightSW,INPUT); //now developing laser harp systems with switches
pinMode(LeftSW,INPUT);
pinMode(ToggleDown,INPUT);
pinMode(ToggleUp,INPUT);
lcd.begin(16, 2);
sendMidi(CONTROLCHANGE, ALLSOUNDOFF, 0);
}

void loop(){
for(int n = 0; n < SensorsNumber; n++){
int Status = Evaluate(n);
if(Status == 1){
sendMidi(NOTE_ON, Note[n], Velocity[n]);
}
else if(Status == 3){
sendMidi(NOTE_ON, Note[n], 0); //velocity 0 means note off
}
}
}

各種ギターシンセの今後の展望

 そもそもギターシンセとは何かを振り返る。ギターシンセとは、ギターに搭載されたピックアップ(以下PU)からの電気信号を元に波形を変化させることで音色に特色を加えるエフェクターとは異なる。ギターシンセは基本的には次のうちどちらかを用いて、波形を変化させて得られる音とは程遠い音を発生させるものである。

続きを読む