狠狠撸
Submit Search
Raspberry PiとPdでオリジナルのシンセを作る
?
23 likes
?
18,189 views
Chikashi Miyama
Follow
Raspberry PiとPdを組み合わせて、小さな自作楽器を作る方法を説明します。
Read less
Read more
1 of 24
Download now
Download to read offline
More Related Content
Raspberry PiとPdでオリジナルのシンセを作る
1.
Raspberry PiとPdでオリジナルのシンセを作る 美山千香士 ドイツ/ケルン音楽舞踏大学講師 ケルンメディア大学フェロー スイス/チューリッヒ芸術大学非常勤講師 チューリッヒICST研究員
2.
Github 本日お見せするパッチ プログラムはGitHubに公開しています。 https://github.com/chikashimiyama/pdj2
3.
Demo ! RaspberryPi+Pd+MIDIキーボード+赤外線センサー によるミニシンセ
4.
Raspberry Piとは ? Raspberry Pi
Foundationによる超小型コンピュータ ? Arm ベースのCPU (Linuxが動かせる) ? 512MB のRAM ? 1x Audio out ? HDMI/Compositeによる映像出力 ? USB x2 ? GPIOピン
5.
Raspberry PiでPd-extendedを動かすには ? Satelite CCRMAをインストールする ? Satelite
CCRMAはスタンフォード大学の開発してい るRaspberry Pi用のLinuxディストリビューション ? Pd-extended、Arduino、Faust、ChucK、Jack等のク リエーティブ?コーディング用のソフトウェアが予 めインストールされている https://ccrma.stanford.edu/~eberdahl/satellite/
6.
Xフォワーディング ? RaspberryPi本体にマウス、キーボード、ディスプレイを繋 がなくとも、他のコンピュータからRaspberryPiをEthernet 経由で操作し、Pdのプログラミングをする事が可能 Pdプログラミング 音 Ethernet
7.
MIDIも繋げるの? ? 多くのUSB-MIDI機器はRaspPiが自動的に認識する Pdパッチと組み合わせれば 自作のミニシンセが簡単に出来る! USB
8.
音質をもっと良くしたい ? USBオーディオ?インターフェースを使う Creative Media Sound Blaster
Play ?但しオーディオインターフェースを使うと、サンプル?レートが決め打ち(44.1k)になる ?USBバスパワーには限界がある
9.
MIDIだけでなくセンサーとも組み合わせて 音をコントロールしたい ? 方法1:Arduinoと組み合わせる
10.
MIDIだけでなくセンサーとも組み合わせて 音をコントロールしたい ? 方法1:Arduinoと組み合わせる ? 問題点 ? シリアル通信に時間がかかる ? システムが大きくなる ? 6コ以上センサーが繋げない、10ビット以上の解像度が 得られない ? Arduinoに電力供給 しなければならない
11.
MIDIだけでなくセンサーとも組み合わせて 音をコントロールしたい ? 方法2:Raspberry PiのGPIO (General
Propose Input Output)を使う
12.
GPIOで何ができるの? ? Arduinoで出来る事が大体できます 例えば…. LED点灯 サーボ制御 LCD表示
13.
Gertboard ? RaspberryPiのGPIOをフルに利用してハードウェアを開 発したい人のための拡張ボード https://www.sparkfun.com/products/11773
14.
GPIOで出来ない事 ? RaspPiにADC (アナログ?デジタルコンバーター)はない ため電圧を読み取る事ができない 外部ADCと接続する必要がある
15.
手に入りやすいADC ? ADC0831 MCP3208 300円(秋葉原?秋月電子通商)
16.
GPIOをプログラムするには ? GPIOに関する網羅的な情報 ? ? http://elinux.org/RPi_Low-level_peripherals C、Python、Ruby、Perl、Javaなど様々な言語でGPIO を操作するプログラムを書くことが可能
17.
SPIとは ? Serial Peripheral Interfaceの略 ? IC間の通信によく使われる規格。I2Cに比べて高速 CS CLK RaspPi MOSI DI MISO DO ADC
18.
SPIとは ? 複数のチップを繋ぐ事も可能なので、チャンネル数を 好きなだけ増やすことも可能 ADC RaspPi ADC SCL, DO, DIバスは共有可能
19.
Wiring Pi ? ArduinoライクなRaspberryPi用Cライブラリ ライブラリの提供する機能 - UART -
LCD - PWM - SPI - I2C 作者のGordon Drogon氏 ダウンロードとインストール https://projects.drogon.net/raspberry-pi/wiringpi/ バイナリは含まれないが、 コンパイルはスクリプトがあるので簡単にできる
20.
外部ADCとSPI接続する例 ADCはTIのADC0831を使用
21.
ADCの値をWiringPiを利用して取得する #include #include #include #include ! <wiringPi.h> <wiringPiSPI.h> <stdio.h> <unistd.h> adc0831.c int main(void){ int spiCh
= 1; unsigned char data[2]; int spi = wiringPiSPISetup(spiCh, 500000); ! ! ! } wiringPiSetup(); pinMode(12, OUTPUT); digitalWrite(12, HIGH); for(;;){ int res; unsigned char value; digitalWrite(12, LOW); res = wiringPiSPIDataRW(spiCh, data, 2); digitalWrite(12, HIGH); value = (data[0] << 2) + (data[1] >> 6); printf("data:%dn", value); usleep(10000); } return 0; Arduinoライクな プログラムが可能
22.
#include "m_pd.h" #include "wiringPi.h" #include
"wiringPiSPI.h" #define CS 12 ! static ! t_class *getspi_class; typedef struct _getspi { t_object x_obj; t_outlet *x_outlet; unsigned char data[2]; } t_getspi; オブジェクトの保持するデータ ! ! void getspi_bang(t_getspi *x){ int res; unsigned char value; digitalWrite(CS, LOW); res = wiringPiSPIDataRW(1, &x->data[0], 2); digitalWrite(CS, HIGH); value = (x->data[0] << 2) + (x->data[1] >> 6); outlet_float(x->x_outlet, (float)value); } bangが送られてきた時に 実行される関数 ! void *getspi_new(void){ int spi = wiringPiSPISetup(1, 500000); wiringPiSetup(); pinMode(CS, OUTPUT); digitalWrite(CS, HIGH); if(spi == -1){ post("cannot initialize SPIn"); } } オブジェクトが作られた時に 実行される関数 t_getspi *x = (t_getspi *)pd_new(getspi_class); x->x_outlet = outlet_new(&x->x_obj, gensym("float")); return (void *)x; ! void getspi_setup(void){ getspi_class = class_new(gensym("getspi"), (t_newmethod)getspi_new, 0, sizeof(t_getspi), CLASS_DEFAULT, 0); class_addbang(getspi_class, getspi_bang); } Pdにオブジェクトを登録する関数
23.
エクスターナル?オブジェクトの プログラミング方法の詳細 ? IOhannes Zm?lgnigによるチュートリアル ? ? http://pdstatic.iem.at/externals-HOWTO/ 美山千香士「Pure Dataチュートリアル&リファレンス」? 第20章
24.
まとめ ? Pdは小型低価格コンピュータRaspberryPi上で動く ? Satellite CCRMAを使うと簡単にPdをRaspPiの上で動かせる ? MIDIキーボードやArduinoとRaspberryPiの組み合わせもOK ? RaspBerryPiにはGPIOがあり、電子工作との相性も良い ? 外部ADCとGPIOをSPIで通信させて、Arduinoナシで独自楽器を作ることも可能 ? GPIOの操作にはWiringPiというライブラリがオススメ ? WiringPiを組み込んだCプログラムをPdのエクスターナルオブジェクトとして実装 することも可能
Download