Author
ã³ã¤ãããµãã
Raspberry Pi Zero(RPi Zero)ã«ã¯ãUSBã¯ã©ã¤ã¢ã³ãæ©å¨ã¨ãã¦åä½ã§ããUSB OTG(On The Go)æ©è½ãããã¾ããããã¯ãZeroã¨PCãUSBæ¥ç¶ããã¨PCããZeroãç¹å®ã®æ©è½ãæã£ããã¼ãã¦ã§ã¢ã¨ãã¦å©ç¨ã§ããã¨ãããã¨ã§ããä»åã¯ãOTGã®MIDIæ©è½ããããã¦ã¿ã¾ããããã«ã½ããã·ã³ã»ã½ãããèªåå®è¡ããããã«è¨å®ããRaspberry Pi Zeroããã½ã³ã³ã«ç¹ãã°MIDI鳿ºã¨ãã¦ä½¿ããããã«ãã¾ãã
RPi Zeroã®OTGæ©è½
MIDIã ãã§ã¯ãªããAudioãã¹ãã¬ã¼ã¸ãUSB HID(ãã¼ãã¼ãã¨ããã¦ã¹ã¨ã)ããããã¯ã¼ã¯çã®æ©è½ã使ãã¾ããåºæ¬çã«ã¯ãã©ãã1ã¤(å ´åã«ãã£ã¦ã¯2ã¤)ã®æ©è½ã使ããã ãã§ããPCçã®USBãã¹ãå´ããã¯RPi ZeroãMIDIæ©å¨ã¨ãã¦è¦ãã¾ãããRPi Zeroå´ã¯è¨å®ããOTGæ©è½ã®æ©è½ã使ããä»ã¯é常ã®åä½ã¨å¤ããããã¾ãããä¾ãã°MIDIã®å ´åã¯ãPRi Zeroå ã§ã¯PCå´ãMIDIãã¼ãã¨ãã¦è¦ããã ãã§ãããã¨ãã°é«æ©è½ãªMIDIã³ã³ããã¼ã©ãä½ã£ã¦ãé¢ç½ãããããã¾ãããRPi Zeroã«ãããããªã»ã³ãµã¼ãç¹ãã¦MIDIåããã®ãé¢ç½ããã§ãã ãªããOTGã¢ã¼ãæã®USBæ¥ç¶ã®ã±ã¼ãã«ã¯æ®éã®ã±ã¼ãã«ã§æ§ãã¾ããã
RPi Zeroã®OTGæ©è½ã®å¼±ç¹ï¼å¶é
OTGæ©è½ã¯ãé常ã®USBãã¹ãã¨ãã¦å©ç¨ãã¦ãããã¼ãã使ãã¾ãããã¹ãæ©è½ã¨ã¯ã©ã¤ã¢ã³ãæ©è½ã®ä¸¡æ¹åæã«ä½¿ããã¨ããããã§ã¯ãªãã®ã§ãOTGã¢ã¼ãã§åä½ãã¦ããå ´åã¯RPi Zeroã«ãã¦ã¹ããã¼ãã¼ããæ¥ç¶ã§ãã¾ããã®ã§æ³¨æãå¿
è¦ã§ããUSBã¯ã©ã¤ã¢ã³ãæ©å¨ã¨ãã¦RPi Zeroãåä½ããã¦ããã¨ãã«ãä½ãåé¡ããã£ããè¨å®ã夿´ãããã¨ãã£ããã¨ããã£ã¦ãã§ããªãã®ã§ããPRi Zero Wããããã¯ã¼ã¯ã«ã¼ããæããRPi Zeroã§ããã°ãããã¯ã¼ã¯çµç±ã§Zeroã®ä¸ã«sshã§å
¥ããã¨ãã§ãã¾ããOTGã¢ã¼ãã§ãHDMIåºåã¯ã§ãã¾ãã®ã§ã¿ããããã«ä»ãã®ãã£ã¹ãã¬ã¤ã使ãã®ãããããããã¾ããã
æ¬è¨äºã§ã¯ãOTGå使ã§ããããã¯ã¼ã¯ãæ¥ç¶ã§ããsshã§RPi Zeroã«å
¥ããã¨ããåæã§é²ãã¾ãã
ä»å試ããã¨
- PRi ZeroãOTGã®MIDIã¢ã¼ãã§åä½ãããã
- RPi ZeroãMIDI 鳿ºã¨ãã¦åä½ããPCããMIDIãéã£ã¦RPi Zeroããé³ãåºãããã«ãã¾ãã
å ·ä½çã«ã¯ã
ã»Fluidsynth(Soundfont対å¿MIDI鳿º)ãèªåèµ·åã
ã»RPi Zeroå ã§ã¯PCãMIDIãã¼ããã¦è¦ããã®ã§ãFluidsysnthã¨èªåæ¥ç¶ã
ã¨ãã£ãè¨å®ãè¡ãã¾ã
OTGãè¨å®ãã
é常ã®èµ·åã®ä»æ¹ã§RPiãç«ã¡ä¸ããã¿ã¼ããã«ã§è¨å®ä½æ¥ãè¡ãã¾ãã
èµ·åè¨å®ã®ãã¡ã¤ã«ãç·¨éãã¾ãã
$ sudo nano /boot/config.txt
æå¾ã®æ¹ã«ãâdtoverlay=dwc2
ã追å ãã¾ãã
$ sudo nano /boot/cmdline.txt
ä¸è¡ç®ã®æå¾ã®ãããã®rootwait
ã¨ããè¨è¿°ãããã®ã§ãã以éã« âmodules-load=dwc2,g_midi
ã¨ããè¨è¿°ã追å ãã¾ãã
ããã§åèµ·åãã¦USBãã¼ãï¼é»æºã§ã¯ç¡ãæ¹ï¼ã§PCã¨æ¥ç¶ããã°PCå´ããã¯MIDIãã¼ãã¨ãã¦è¦ããã¯ãã§ãã
ãã®è¨å®ãè¡ã£ã¦ããã¼ãã«ã®ï¼OTGã§ã¯ãªãï¼æ¹æ³ã§èµ·åããã°USBãã¼ãã¼ããªã©ãæ¥ç¶ãã¦é常éãèµ·åããã¯ãã§ãã
OTGã¢ã¼ãã§åä½ãã¦ãããã®ç¢ºèª
OTGã¢ã¼ãæã¯ãâmac/Windowsããã¯MIDI Gadgetã¨ããMIDIãã¼ãã¨ãã¦RPi Zerogãè¦ããããã«ãªãã¾ããRPiå´ã§ã¯f_midiã¨ãããã¼ãã§PCå´ãè¦ãã¾ãã
(macOSä¸ããè¦ãRaspberry Pi Zero)
RPi Zeroå´ã®ã¿ã¼ããã«ã§
$ amidi --dump
ã¨ããPCå´ããMIDIãéã£ã¦ããã¨ã¿ã¼ããã«ã«MIDIæ å ±ããã³ãããã¾ãã ããamidiãåããªãå ´åã¯ã
$ sudo apt-get install alsa-utils
ã§ã¤ã³ã¹ãã¼ã«ã§ãã¾ãã ãã ããMIDIããã³ãã§ããã°è¨å®ã¯æ£å¸¸ã«è¡ããã¦ããã¯ãã§ãã
FruidSynthçã®èªåèµ·åè¨å®
RPi Zeroãèµ·åããã¨ãã«èªåçã«FruidSynthãèµ·åãf_midiãã¼ãï¼PCã表ãã½ã¼ã¨ï¼ã¨æ¥ç¶ããããã«ãã¾ãã
ããããã°ãRPi Zeroãæ¥ç¶ããã ãã§MIDI鳿ºã¨ãã¦å©ç¨ã§ãã¾ãã
FruidSynthããµã¼ãã¹ã¨ãã¦èµ·åããããã«è¨å®ãã¾ãã
FruidSynthã¯ãµã¦ã³ããã©ã³ãã鳿ºã¨ããã½ããã·ã³ã»ã§ãããµã³ãã©ã¼ã¨è¨ã£ã¦è¯ãã§ãããããã¼ããããµã¦ã³ããã©ã³ãã¯ä»»æã®ãã®ãå©ç¨ã§ãã¾ããã¾ããã®FruidSynthãã¤ã³ã¹ãã¼ã«ãã¾ããããã©ã«ãã§GMã®ãµã¦ã³ããã©ã³ããä¸ç·ã«ã¤ã³ã¹ãã¼ã«ããã¾ãã
$ sudo apt-get install fluidsynth
ã¨ãã£ã¿ãèµ·åããèªåèµ·åã®ããã®è¨å®ãã¡ã¤ã«ã使ãã¾ãã
$ sudo nano /etc/systemd/system/fluidsynth.service
以ä¸ã®å 容ãã³ãã¼ãã¦ãã ããã
[Unit] Description=FluidSynth Daemon After=sound.target [Service] ExecStart=/usr/bin/fluidsynth -is -a alsa -m alsa_seq /usr/share/sounds/sf2/FluidR3_GM.sf2 EnvironmentFile=/etc/conf.d/fluidsynth [Install] WantedBy=multi-user.target
èªåçã«ããã©ã«ãã®Alsaããã¤ã¹ãåçããã¤ã¹ã¨ããããã«FruidSyntã¨ä¸ç·ã«ã¤ã³ã¹ãã¼ã«ããããµã¦ã³ããã©ã³ãããã¼ãããããã«ãã¾ãããã®fluidsynth.serviceã¨ãããã¡ã¤ã«ãèµ·åæã«èªã¿è¾¼ã¾ãã¦ExecStartã®ã³ãã³ããå®è¡ããã¾ãã
è¨å®ãã¡ã¤ã«ãä¿åããã
$ sudo systemctl start fluidsynth
ã¨ããã¨FruidSynthãèµ·åããã¯ãã§ãã®ã§ã
$ aplaymidi -l
ã¨ããã¨ãæ£ããè¨å®ã§ãã¦ããã°ã
Port Client name Port name 14:0 Midi Through Midi Through Port-0 16:0 f_midi f_midi 128:0 FLUID Synth (1048) Synth input port (1048:0)
ã¨MIDIãã¼ãä¸è¦§ã表示ãããã¯ãã§ããFruidSynthã®èµ·åã«ã¯å°ãæéããããããã®ã§ãããã«è¡¨ç¤ºãããªããã°ä½åº¦ã試ãã¦ã¿ã¦ãã ãããf_midiã¯OTGã¢ã¼ãæã®MIDIãã¼ãã§ãããé常起åæã§ãå©ç¨ã¯ãã¼ãã¯å©ç¨ã§ããªããã®ã®ãªã¹ãã¢ããã¯ãããããã«ãªãã¾ãã
sudo systemctl stop fluidsynth
ã§FruidSynthã¯çµäºã§ãã¾ãã
次ã«ãFruidSynthã¨f_midiãã¼ããæ¥ç¶ããè¨å®ãè¡ãã¾ããæ°ããªè¨å®ãã¡ã¤ã«ã使ãã¾ãã
$ sudo nano /etc/systemd/system/midiconnect.service
ã¨ãã£ã¿ãèµ·åããã®ã§ä»¥ä¸ã®å 容ãã³ãã¼ãã¾ãã
[Unit] Description=Midi Connection After=fluidsynth.service [Service] ExecStart=/home/pi/midiconnect.sh Type = simple [Install] WantedBy=multi-user.target
ããã¯fruidsynth.serviceãå®è¡ãããå¾ã«ã/home/pi/midiconnect.sh
ãå®è¡ããã¨ããè¨å®ã§ãã
FruidSynthã¨f_midiãã¼ãã®æ¥ç¶ã¯ã/home/pi/
ã«ç½®ãããmidiconnect.sh
ã«æ¸ãã¾ãã
ãã®midiconnect.sh
ã使ãã¾ãã
$ sudo nano /home/pi/midiconnect.sh
ã¨ãã¦ã¨ãã£ã¿ãéãã
#!/bin/bash sleep 30 aconnect 20:0 128:0
ãã®ã¹ã¯ãªãããå®è¡ãããã¨30ç§ã¾ã£ã¦ãããaconnect 20:0 128:0
ã§FruidSynthã¨f_midiãMIDIæ¥ç¶ãã¾ãã30ç§ã®ã¦ã§ã¤ããå
¥ããã®ã¯ãFruidSynthãèµ·åãçµãããªãã¨MIDIæ¥ç¶ã§ããªãã®ã§ãä½è£ãæããã¦ãã¾ãããããã試ããã¨ããOSèµ·åã«ãããã¦FruidSynthãèµ·åããããæéããããããã§ããRaspbianããããã¬ã¹è¨å®ï¼Xwindowãèµ·åããªãï¼ãã¦ããã°ããå°ãçãæéã«ã§ããã¨æãã¾ãã
MIDIãã¼ãã®æå®ã«ã¤ãã¦
MIDIã®ãã¼ãçªå·ã¯ç°å¢ã«ãã£ã¦å¤ãã£ã¦ãã¾ããåã®ç°å¢ã§ã¯ãFruidSynthã128:0 ã§f_midiã¯20:0ã§ããã ããã¯ä¸åº¦OTGã¢ã¼ãã§èµ·åãã¦ç¢ºèªããã®ã確å®ã§ãããä»ã«MIDIã½ãããããã¤ã¹ãèªåèµ·åãããªãã®ã§ããã°ãOTGã¢ã¼ãã§èµ·åãã¦ãããããåããã¼ãçªå·ã®ã¯ãã§ããMIDIæ©å¨ãæ¥ç¶ãã¦ããªãç¶æ ã§ãå ç¨ã®ããã«ã
$ aplaymidi -l
ã¨ãã¦ãã¼ãã調ã¹ã¦ãmidiconnect.shã«ã»ãããã¾ãã
è¨å®è£è¶³
åã¯ãMM-5102ã使ã£ãèªä½ã®I2Sã®ãªã¼ãã£ãªã¤ã³ã¿ãã§ã¼ã¹ãããã©ã«ãããã¤ã¹ã¨ãã¦è¨å®ãã¦ãã¾ããããã¤ã¹ãå©ç¨ããªãå ´åã¯HDMIçµç±ã®åºåã¨ãªãã¯ãã§ãã試ãã¦ãã¾ããã®ã§äºããäºæ¿ãã ããã
å ¨ã¦è¨å®ãå®äºãããOTGæ¥ç¶ããã¦åèµ·åãã¾ããPCå´ããMIDIãéä¿¡ãã¦é³ãåºãã°åé¡ãªãã§ããããé³ãã§ãªãå ´åã¯æ¥ç¶ã確èªãã¾ãããã
ãããã«
ä»åã®ãã¤ã³ãã¯OTGæ¥ç¶ã¨èªåèµ·åã«ã¤ãã¦ã§ããã©ã¡ãããããããªå¿ç¨ãèãããã¾ããä¾ãã°MIDIã¤ã³ã¿ãã§ã¼ã¹ãæ¥ç¶ãã¦èªåèµ·åããããã«ãããå®å ¨ã«ã¹ã¿ã³ãã¢ãã³ãªé³æºããã¯ã¹ã¨ãããã¨ãã§ãã¾ããOTGæ¥ç¶ã¯ãªã¼ãã£ãªãå¯è½ãªã®ã§Raspberry Piã®åºåããã½ã³ã³ã§ãã¸ã¿ã«é²é³ããã¨ããç¨éã§ã使ãã¾ããä¸çªä¾¿å©ãªã®ã¯ããç´¹ä»ããã¦ãã¾ããããã½ã³ã³ã¨ãããã¯ã¼ã¯æ¥ç¶ããè¨å®ã§ããããããã§ããã°Raspberry Pi Zeroã¨PCã ãã§éçºãã§ãã¾ãã
Â
ã³ã¤ãããµãã
ãã£ã¬ã¯ã¿ã¼ããããã¥ã¼ãµã¼ãã®ã¿ãªã¹ããmimiCopyãã¯ããå¼ç¤¾ãªãªã¼ã¹ã®å ¨ã¦ã½ããã¦ã§ã¢è£½åã®ä¼ç»ãæ å½ããã¤ãã£ãã¢ããªéçºãã¡ã¤ã³ã§OSåãã対å¿å¯ãdubãã³ãã®ã®ã¿ãªã¹ãã¨ãã¦ãæ´»åä¸ã