Piano Hat & Rosegarden
2020.02.13
YouTubeでポイントを説明しています。画像をクリックすると再生できます。
今回は、Pimoroni Piano Hat を DAWソフトウェア Rosegarden の音符入力に利用します。

Pimoroni Piano HAT FramboiseDorf for Raspberry Pi
Piano Hat は、MIDI経由でソフトウェア/ハードウェアシンセサイザーの制御が可能な、Raspberry Piの拡張基板です。
【特徴】
・タッチセンサボタン:16個(各ボタンの機能はPythonで割り当て可能)
・ピアノ鍵盤:13個(フルオクターブ)
・オクターブ アップ/ダウンボタン
・楽器選択タッチパッド:シンセサイザーと高相性
・白色LED:16個(自動点滅、Pythonで制御可能)
・Microchip CAP1188静電容量式タッチドライバチップを二つ搭載
・MIDI経由でソフトウェア/ハードウェアシンセの制御が可能
・Raspberry Pi 3、2、B+、A+、およびZeroで利用可能
・ピンソケット実装済み
・Pythonライブラリあり

Rosegarden
RosegardenはLinuxで動作するMIDIシーケンス機能を備えた、DAW(Digital Audio Workstation)ソフトです。GPLライセンスでリリースされています。
■Piano Hat と Raspberry Pi の結線
Ref.https://pinout.xyz/pinout/piano_hat
普通はラズパイに被せてしまうので、意識する必要はありませんが、一応結線を確認しておきます。
Piano HatとラズパイはI2C接続(BCM2,3)ピンの他に、BCM4,17,27,22のGPIOピンを使用しています。
また、3.3V(Pin:17と5V(Pin:2)およびPin:30,34のGroudを使用しているようです。

Piano Hat に限らず、拡張基盤(Hat)を被せてしまうと、他のGPIOピンが使えなくなってしまいます。
Raspberry Pi と Hat の間に GPIOアダプタ を挟むことで、他のデバイスも利用できます。
WINOGNEER ラズベリーパイ3モデルB、モデルB、A +、B +、Zero Transfer GPIO用の未組み立てのダブルGPIOアダプタ

私の愛用しているガス式のコードレスはんだコテなので使いやすいです。コテ先の加熱も早いです。
goot ガス式はんだこてセット GP-510SET

ガシガシ、はんだ付けをすると、こうなります。
L字型ヘッダピン、次に普通のヘッダーソケットの順番で取り付けないと、はんだ付けに苦労します。

これをRaspberry Pi 2 Model BのGPIOに被せてみました。ラズパイ2にはネットワーク接続用にUSB WiFiアダプタが取り付けられています。

その上に、Piano Hat を被せると、こうなります。

ここからは、SSH接続でパソコンから操作します。ラズパイのOSは Raspbian Stretch です。
■Piano Hat サンプルコードおよび実行環境のインストール
Ref.https://github.com/pimoroni/Piano-HAT/blob/master/README.md
$ curl -sS https://get.pimoroni.com/pianohat | bash
This script will install everything needed to use
Piano HAT
Always be careful when running scripts and commands copied
from the internet. Ensure they are from a trusted source.
If you want to see what this script does before running it,
you should run: 'curl https://get.pimoroni.com/pianohat'
Note: Piano HAT requires I2C communication
Do you wish to continue? [y/N] y
Checking environment...
Updating apt indexes...
..................
Checking hardware requirements...
Checking for packages required for GPIO control...
...raspi-gpio is already installed
.....................RPi.GPIO installed and up-to-date
I2C must be enabled for Piano HAT to work
I2C is now enabled
Checking packages required by I2C interface...
Python 2 smbus installed and up-to-date
Python 3 smbus installed and up-to-date
Piano HAT comes with examples and documentation that you may wish to install.
Performing a full install will ensure those resources are installed,
along with all required dependencies. It may however take a while!
Do you wish to perform a full install? [y/N] y
Checking for dependencies...
python-cap1xxx is already installed
python3-cap1xxx is already installed
Installing python-pianohat...
install ok installed
Installing python3-pianohat...
install ok installed
Checking for additional software...
python-numpy is already installed
python3-numpy is already installed
python-pygame is already installed
python3-pygame is already installed
Downloading examples and documentation...
Resources for your Piano HAT were copied to
/home/pi/Pimoroni/pianohat
All done. Enjoy your Piano HAT!
インストールが完了すると、/boot/config.txt が
dtparam=i2c_arm=off
↓
dtparam=i2c_arm=on
に書き換わっています。
$ cd ~/Pimoroni/pianohat/examples
$ ./simple-piano.py
鍵盤に触ると、鍵盤上のLEDが光るとともに、ピアノの音がなります。
コードを編集する際には下記を参考にしてください。
セットアップガイド(英文)
■Python MIDI インストール
Piano Hat をMIDI入力機器として利用します。
Ref.https://github.com/pimoroni/Piano-HAT/tree/master/examples
$ sudo apt-get install python-dev libasound2-dev swig
$ cd ~/Pimoroni/pianohat
$ git clone https://github.com/vishnubob/python-midi
$ cd python-midi && sudo ./setup.py install
copying build/scripts-2.7/mididumphw.py -> /usr/local/bin
copying build/scripts-2.7/mididump.py -> /usr/local/bin
copying build/scripts-2.7/midiplay.py -> /usr/local/bin
changing mode of /usr/local/bin/mididumphw.py to 755
changing mode of /usr/local/bin/mididump.py to 755
changing mode of /usr/local/bin/midiplay.py to 755
If it installs properly, you should get a handy new tool `mididumphw.py` which will tell you
what MIDI-compatible synths you've got running and what Client/Port IDs you'll need to connect to to use them.
### Using `midi-piano.py`
You'll find the MIDI Piano example in the examples folder of this repository, or in `~/Pimoroni/piano-hat`
if you used our installer script. By default it supports SunVox and yoshimi:
Run either of these synths first,
and then run
$ sudo ./midi-piano.py
and start playing. For best results, you should use a Pi 2- especially
with Yoshimi which can be a bit taxing on the older models.
■Rosegarden インストール
Ref.https://www.rosegardenmusic.com/
$ apt-cache search rosegarden | grep rosegarden
rosegarden - music editor and MIDI/audio sequencer
$ sudo apt-get install rosegarden
Rosegarden を実際に使用する際には、ラズパイにモニター、キーボード、マウスを接続しますが、
環境設定ですので、ノートパソコンからVNC接続して、Rosegarden を起動します。

デバイスリストを表示して確認します。
$ cd ~/Pimoroni/pianohat/python-midi/scripts
$ mididumphw.py
] client(128) "rosegarden"
] port(2) [r, w, sender, receiver] "external controller"
] port(1) [r, sender] "sync out"
] port(3) [r, sender] "out 1 - General MIDI Device"
] port(0) [w, receiver] "record in"
] client(129) "__sequencer__"
] client(14) "Midi Through"
] port(0) [r, w, sender, receiver] "Midi Through Port-0"
] client(0) "System"
] port(1) [r, sender] "Announce"
] port(0) [r, w, sender] "Timer"
一旦、Rosegardenを終了します。
midi-piano.py に 'rosegarden' を追記します。
$ cd ~/Pimoroni/pianohat/examples
$ vi ./midi-piano.py
......
supported = ['yoshimi','SunVox','rosegarden']
......
jackd の起動
Rosegardenは、同じコンピューター上の他のJACKアプリケーションとトランスポートを同期するためのJACKトランスポートメカニズムをサポートしています。
jackd をバックグランドで起動します。
$ jackd -dalsa -n4 -r44100 -p512 &
一応、jackdのパラメータをみてみましょう。
$ jack -d alsa --help
jackdmp 1.9.11
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2014 Grame.
jackdmp comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
-d, --device ALSA device name (default: hw:0)
-C, --capture Provide capture ports. Optionally set device (default: none)
-P, --playback Provide playback ports. Optionally set device (default: none)
-r, --rate Sample rate (default: 48000)
-p, --period Frames per period (default: 1024)
-n, --nperiods Number of periods of playback latency (default: 2)
-H, --hwmon Hardware monitoring, if available (default: false)
-M, --hwmeter Hardware metering, if available (default: false)
-D, --duplex Provide both capture and playback ports (default: true)
-s, --softmode Soft-mode, no xrun handling (default: false)
-m, --monitor Provide monitor ports for the output (default: false)
-z, --dither Dithering mode (default: n)
-i, --inchannels Number of capture channels (defaults to hardware max)
-o, --outchannels Number of playback channels (defaults to hardware max)
-S, --shorts Try 16-bit samples before 32-bit (default: false)
-I, --input-latency Extra input latency (frames) (default: 0)
-O, --output-latency Extra output latency (frames) (default: 0)
-X, --midi-driver ALSA MIDI driver (default: none)
再度、rosegarden を起動します。
Piano Hat のサンプルコード midi-piano.py を起動します。
$ ./midi-piano.py
Rosegarden のスタジオ(S)→MIDIデバイスの管理(D)を開きます。

MIDI入力の有効な入力にある、130.0 __sequencer__:__port__(read)が Piano Hat です。
Piano Hat のラの鍵盤を押して、Rosegardenトランスポート(表示されていない場合は、表示→トランスポートの表示)画面をみてみると
IN に「A3 100」と表示され、ラ(A)の音が押されたのがわかります。

メイン画面でトラックを選択して右クリック→[マトリクスエディタを開く]で画面が開いたら、[ステップ録音]ボタンを押します。
Piano Hat の鍵盤を押すと、マトリクス上に音が追加されます。

音符を入力して、[巻き戻し]→[再生]を実行しても音は鳴りません。MIDI音源が必要です。
プラグイン音源の利用
Rosegardenではハードウェア/ソフトウェアMIDI音源の他に,DSSIのプラグイン音源を利用することができます。
一旦、rosegarden を終了します。
DSSI(Disposable Soft Synth Interface)は,LADSPAを利用して作られたプラグイン音源です。
このLADSPA(Linux Audio Developers Simple Plugin API)はLinuxにおけるサウンド合成のためのフレームワークです。
ここでは、fluidsynth-dssi を利用します。fluidsynth-dssiはサウンドフォントを利用するタイプのシンセサイザーです。
$ apt-cache search fluidsynth-dssi | grep fluidsynth-dssi
fluidsynth-dssi - DSSI wrapper for the FluidSynth SoundFont-playing synthesizer
$ sudo apt-get install fluidsynth-dssi
DSSIによるプラグイン音源をトラックに適用するには,トラックを選択して,
メイン画面左の「特別パラメータ」中段の「トラックパラメータ」で,
「再生パラメータ」の「デバイス」を「シンセサイザープラグイン」にします。
その下の「楽器」では1番から16番のチャンネルからひとつを指定します。

プラグイン音源の割り当ては「特別パラメータ」下段の「インストゥルメントパラメータ」で行います。
「シンセサイザー無し」と表示されているボタンをクリックすると,プラグインを指定するウィンドウが開きますので、
プラグインに「FluidSynth DSSI plugin」を指定します。

次に、fluid-soundfont をインストールします。
$ sudo apt-get install freepats fluid-soundfont-gm fluid-soundfont-gs
freepats はすでに最新バージョン (20060219-1) です。
freepats は手動でインストールしたと設定されました。
提案パッケージ:
fluidsynth
以下のパッケージが新たにインストールされます:
fluid-soundfont-gm fluid-soundfont-gs
サウンドフォントの読込みは,
「インストゥルメントパラメータ」の「エディタ」をクリック、「Load SoundFont...」をクリックして、
ファイル「/usr/share/sounds/sf2/FluidR3_GM.sf2」を指定します。

サウンドフォントがロードされるとウィンドウにサンプリングされたインストルメントの一覧が表示されます。

音色を選択して「Send Test Note」ボタンを押すと、音がでます。
マトリックスエディタで音符を打ち込んだ状態で[最初に戻す]→[再生]またはメイン画面の[表示]→[最初まで巻き戻し]→[再生/一時停止]で再生してみてください。
また、ひとつのプラグインチャンネルにはひとつのプラグイン音源を割り当てることができるため,全部で16のプラグインを同時に使うことができます。
JACK Audio Connection kit
イヤホンジャックからではなく、外部のDACなどから音を鳴らしたい場合には設定が必要です。
設定ファイルを直接操作するにはかなりの知識が必要になりますので、Jack Audio Connection Kit を使うと便利です。
Raspbian Stretch では標準でインストールされているようです。必要な場合はインストールしてください。
$ sudo apt-get install qjackctl
一応、ログインユーザを audio グループに追加しておきます。
$ sudo gpasswd -a pi audio
LXTerminal を開きます。
$ /usr/bin/qjackctl

[設定]→[Advanced]

「出力デバイス」は通常 (default) になっています。GPIOアダプタなどを使って、I2SでDACなどが接続されていると、それを選択することができます。
例) hw:sendrpihifiberry,0 (hw:1,0)
設定完了後、次回の手順で利用できます。
1. $ jackd -dalsa -n4 -r44100 -p512 &
2. rosegarden を起動
3. $ cd ~/Pimoroni/pianohat/examples
$ ./midi-piano.py
MIDI音源の利用
MIDI音源を利用するには、メイン画面の「スタジオ」→「MIDIデバイスの管理」をクリックして,MIDIポートを設定します。

ここでは、バックグランドで、ttymidi を動かしています。
$ ttymidi -s /dev/ttyUSB0 -b 38400 &
MIDI出力に、「ttymidi」が現れます。
USBでMIDI対応機器につなぐと利用できると思います。
ttymidi に関しては、「MIDI再生:FM音源YMF825+Arduino編」をご覧ください。
また、Piano Hat の鍵盤を押すと同時にイヤホンジャックから音を出したいときは、
Piano Hat のサンプルコード simple-piano.py と midi-piano.py をうまく合体させると実現できます。
【補足】
fluidsynth-dssiインストール後に、~/Pimoroni/pianohat/examples/simple-piano.py を実行してみると、音が汚れます。
下記のように、simple-piano.py を変更すると元に戻りました。
$ vi simple-piano.py
pygame.mixer.pre_init(44100, -16, 1, 512)
↓変更
pygame.mixer.pre_init(44100)
【参考資料】
・pimoroni/Piano-HAT
・第176回 Rosegardenで作曲する
・Rosegarden Wiki
|

【深層学習関連】
【画像処理関連】

【音楽関連】

【WEBサイト構築関連】

【開発環境関連】

【SNS関連】

【周辺機器関連】

【その他】

トランジスタ技術 2021年1月号
特集: アナログ回路はノイズと闘う ~システムの性能を維持して安定な動作を実現するために~
Interface 2021年1月号
☆特集 Jetson/ラズパイ/PCで自習 Python画像処理100
☆特別付録:コンピュータ手帳2021
日経Linux 2021年 1月号
★超保存版・冊子付録 Ubuntu完全対応 Linuxコマンド逆引き大辞典 264項目
★付録DVD 特集連動2本入り「Ubuntu 20.10 日本語Remix」「Ubuntu Server20.10」
ラズパイマガジン2020年12月号
温度、距離、におい、圧力など、さまざまな種類のセンサー350種類を一挙に紹介します。特性や価格を示した一覧表を用意したので、用途に合った適切な製品を選べます。そのうちの34種類のセンサーは、仕組みから配線図まで図解で分かりやすく解説します。
15Stepで踏破 自然言語処理アプリケーション開発入門
エンジニアの実務に役立つ知識に絞り、独自に15の学習ステップを体系化しました。
数値計算にNumPy、形態素解析にMeCab、機械学習にscikit-learn、ディープラーニングに
Keras等を使い、Pythonのコードを記述し動かしていきます。
プログラミング・ビットコイン ―ゼロからビットコインをプログラムする方法
Linuxサーバーがゼロから作れる本
このLinuxを使いこなす上で一番手っ取り早いのが自分でLinuxサーバーを構築してみることです。
WindowsやMacのパソコンしか使ったことが無い人でも理解できるよう、
しくみや手順の解説を丁寧にまとめ上げた、ゼロからのサーバー入門ガイドです。
Raspberry Pi 3 Model B V1.2 (日本製) 国内正規代理店品
【仕様概要】CPU:ARM 1.2GHz 4コア、GPU:2コア 3D・動画支援、RAM:1GB、ネットワーク:LAN/Wi-Fi/Bluetooth、インターフェース:USB/HDMI/オーディオ/GPIO(UART/I2C/I2S/SPI...)。
Arduino Nano
ATmega328搭載/
動作電圧: 5V/
入力電源電圧(推奨):7~12V/
デジタル入出力ピン: 14本/
PWMチャンネル: 6本/
アナログ入力チャンネル: 8本/
直流電流(1ピン当り最大): 40 mA/
直流電流(3.3Vピン、1ピン当り最大): 50 mA/
Flashメモリ: 32 KB (ATmega328) 内2KBはブートローダーで使用/
SRAM: 2 KB (ATmega328)/
EEPROM: 1 KB (ATmega328)/
Clock Speed: 16 MHz
逆引き PIC電子工作 やりたいこと事典
機能が豊富で、速度・アナログ制御・省電力性・コストの面でもアドバンテージをもつPICマイコン。そんなPICマイコンの使い方を、目的別にやりたいことから引ける、逆引きタイプのガイドブックです。
C言語による PICプログラミング大全
2002年に初版、2009年に第2版を発売した名著『C言語によるPICプログラミング入門』
が大幅リニューアルし「大全」として生まれ変わりました。
本書では、機能豊富なPIC16F1シリーズを使いこなすために、統合開発環境を
MPLAB X IDEに、CコンパイラはMicrochip Technology社純正のXC8に、それぞれ変更しました。
C言語でPICマイコンのプログラミングを始めたい方から、最新のPICマイコンの機能をとことん使い倒したい方まで、必ず役に立つ1冊です。
PICと楽しむRaspberry Pi活用ガイドブック
「PICマイコン+Raspberry Pi3B」という組み合わせで、高機能な電子工作を簡単に実現し、電子工作を各段に高度化する方法について解説していきます。
ESP32&Arduino 電子工作 プログラミング入門
電子工作ファンに人気のマイコンArduino、そしてWiFiとBluetooth内蔵でネットワーク接続しやすいESP32。それらのマイコンでプログラムを組む際に使うのが「Arduino言語」です。
超特急Web接続!ESPマイコン・プログラム全集
IoT技術の回路とプログラムを解説しました.
トランジスタ技術2016年9月号と2017年3月号の特集に
最新の情報を加筆して一冊に仕上げました.
回路とプログラムのサンプル資料として最適です.
ラズベリー・パイやIchigoJamを連動させた例も紹介しています
M5Stack用カード型キーボードユニット
M5Stackにフル機能のQWERTY配列キーボードを実装できるユニットです。複数のボタンの組み合わせ(Sym + Key、Shift + Key、Fn + Key)や豊富なキーの値を出力することが可能です。
Ubuntu サーバー徹底構築
サーバー用UbuntuでLinuxサーバーを構築しよう!
導入からLinuxやコマンドの基本、各種サーバー構築、バックアップやストレージ管理まで!
サーバー用Linuxディストリビューションとして定評のあるUbuntu Serverの中でも、
10年長期サポート版であるUbuntu Server 18.04 LTSに対応!
[改訂第3版]Linuxコマンドポケットリファレンス
本書はLinux操作に必要なコマンドを収録したポケットリファレンスです。機能別にコマンドを分類し、各コマンドページでは書式/使用例などをコンパクトにまとめています。またアルファベット順索引も用意しており、名前しかわからなくてもすぐに目的のコマンドを探すことができます。今回の改訂では仮想化、データベース、クラウド時代に対応したネットワークコマンドなどを追加しています。おもなLinuxディストリビューションのCentOS、Fedora、Debian GNU/Linux、Ubuntuに対応し、初心者から上級者まで必携の1冊です。
できるPRO Apache Webサーバー 改訂版 Version 2.4/2.2/2.0対応
番のApache独学書を改訂しました!
CentOS、Ubuntu、Windows、Mac OS Xに対応しています。できるPROシリーズは、実際の画面や詳細なイラスト、概念図などで構成。
はじめての方でも理解しやすくなっています。
インストール、アクセス制限、CGI、モジュール拡張、ログ管理など、基本的なことから実践的なことまでていねいに解説しています。
[改訂第3版]PHPポケットリファレンス
PHPを利用したいすべての方必携の「PHPポケットリファレンス」最新版がついに登場! PHP 5/4による開発の際によく利用される機能を集約し、必要な知識を目的別、逆引きでまとめました。PHP5.3以降を対象とし、PHP4からある機能はPHP4でも利用できることがわかるようになっています。またオブジェクト指向型のAPI解説を大幅に強化。開発の現場には1冊置いておきたい書籍です。
MySQL ポケットリファレンス
MySQLはさまざまなWebサービスの中核を担うデータベースです。本書はMySQLの基礎的な内容を中心に、日常的によく使うちょっとしたコマンドや、外部管理ツールとの連携など、MySQLの管理/運用にあたって便利な情報を素早く探し出すことができます。MySQL自体の操作、MySQL特有のコマンド、MySQL専用管理ツール、PHPからの操作など、MySQLを実際に使っているユーザーに役立つ内容となっています。
Postfix詳解―MTAの理解とメールサーバの構築・運用
電子メールの配送システムの中核を担うプログラム「MTA」(Message Transfer Agent)のひとつが、「Postfix」です。 この全容を記した本です。
すところなく解説していきます。
DNSがよくわかる教科書
本書では、DNSの仕組みから、ドメイン名のルール、主なリソースレコードの内容、コマンドによる動作確認、DNSの運用ノウハウ、DNSSECの基礎知識まで、順を追ってやさしく解説します。
|