編集履歴一覧に戻る
Hyodotのアイコン画像

Hyodot が 2025年11月30日19時31分40秒 に編集

初版

タイトルの変更

+

タッチパネルを利用したFMシンセサイザーのADSR入力方法

タグの変更

+

PimoroniPicoPlus2

+

RaspberryPiPico2

+

Pico-ResTouch-LCD

+

ILI9488

+

XPT2046

+

ADSR

+

FM音源

+

YMF825

+

PICO

+

Pimoroni

メイン画像の変更

メイン画像が設定されました

記事種類の変更

+

製作品

本文の変更

+

外観: ![全体図](https://camo.elchika.com/11255ceb1f04090d7b248e8edb51918ba928d890/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62663065396663652d373837332d343266652d623963322d3363666339616236313062612f31383036616437642d666233352d346134642d616461642d386633366463383234323264/) ADSR入力例の動画 Facebookに紹介動画があります。(Facebookへのログインが必要です) https://www.facebook.com/toshikazu.hyodo/videos/1216092900384973?idorvanity=247733226639836 用途(課題) この作品は、FM音源IC(YMF825)のパラメータをグラフィックに編集するための作品です。 FM音源のパラメータは、数値だけではイメージがつかみにくいものです。 ADSRパラメータの編集は、ADSRの折れ線グラフのようなものを表示して、グラフの偏移点をつまんで操作できれば全体のイメージがつかみやすくなります。 音源のパラメータの選択肢もパラメータの番号ではなく、HzやdBなどで表されるパラメータを表示して選択できれば分かりやすくなります。 ここでは、FM音源のパラメータ編集方法ですが、相互に関連するパラメータを設定する場面では他の用途にも応用できると思います。 編集画面の構成方法について FM音源IC YMF825 には、16種類の楽器に相当する音源の設定ができます。 各音源にはBO、LFO、ALGという3つのパラメータと、17種類のパラメータをもつ4オペレータがあります。 4オペレータには、それぞれ SR、LOF、KSR、RR、DR、AR、SL、TL、KSL、DAM、EAM、DVB、EVB、MUL、DT、WS、FBという17種類のパラメータがあります。 すなわち、1つの音源には、3 + 17 * 4 = 71のパラメータがあります。 パソコンであれば、大きな画面で、すべてのパラメータを表示して操作することが可能だと思いますが、今回利用したタッチパネル付きLCDは、画面が小さいので、4つのオペレータ別にパラメータを編集しています。 シンセサイザーの中核の部分は、いわゆるADSR(AR,DR,SR,RR)のパラメータですが、一つの画面で折れ線グラフを操作するようなイメージで編集します。YMF825には、SLというパラメータもありますので加えています。また、KSL、KSRというパラメータも含めました。 WS(Wave Shapes):音源の波形の選択では、29の波形のイメージ表示してそれをタッチ選択するようにしました。 ALG(Algorithm):アルゴリズムは、4つのオペレータをどのような組み合わせるかの選択ですが、これも7つのアルゴリズムのイメージを表示して、タッチ選択できるようにしました。 なお、素人の理解で作ったFM音源パラメータ編集プログラムです。間違いや勘違いがあると思います。ご利用される場合は自己責任でお願いします。 概要(作品全体の説明) 2つのPicoが連携して動作します。PicoMainとPicoSubと呼びます。 PicoMainは音源編集用、PicoSubはYMF825を接続してMIDI再生(発音)用です。 PicoMainには、パラメータをグラフィックに編集するためにタッチパネル付き液晶(Waveshare 3.5型静電容量式タッチスクリーンディスプレイ 320 x 480 SPI接続)を接続しました。Waveshare社の商品名は、Pico-ResTouch-LCD-3.5です。 PicoMainとPicoSubは、シリアル通信し、PicoMainで編集した音源のパラメータや発音のモードなどをPicoSubに送信します。 PicoSubは、PicoMainから受信がないときは、MIDI端子から受信してYMF825で演奏するとともに、MIDI-OUT端子にも出力します。 紹介動画では、MIDI-OUT端子にポケット・ミクを接続しています。ポケット・ミクは、USB端子ですので変換アダプタを挟んでいます。 ポケット・ミクは、チャンネル0にミクの音声が固定されています、チャンネル0を出力しないでポケット・ミクが持つGM音源を伴奏に利用できるように工夫しました。   主要部品: ![](https://camo.elchika.com/93b0c1aa6944ea09e3a406c038489da909c2c31e/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62663065396663652d373837332d343266652d623963322d3363666339616236313062612f36343764386461382d366331622d346236302d613764362d636163663938386337333033/) Waveshare 3.5型静電容量式タッチパネルLCD Waveshare Pico-ResTouch-LCD-3.5 https://www.waveshare.com/wiki/Pico-ResTouch-LCD-3.5 Pimoroni Pico Plus 2 https://www.switch-science.com/products/9906 実体配線図: ![作品全体図](https://camo.elchika.com/576e246c417b22bed0a081606b5151dbd0a474be/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62663065396663652d373837332d343266652d623963322d3363666339616236313062612f32353665666334352d353564322d343737372d613433372d636462613733303737643433/) PicoMain側は、Pico-ResTouch-LCD-3.5の背面にある40PinのPico用のソケットにPimoroni Pico Plus2を装着するだけです。ソケットに差し込めるよう、予めPimoroni Pico Plus2にヘッダーピンを半田付けする必要があるのと、PicoSub側とのシリアル通信の配線はありますが、追加したハードウェアはありません。 PicoMainとPicoSubは、5Vの電源ラインも接続して、どちらかのUSB端子に電源供給されれば、PicoMainとPicoSub両方が動作します。 Pico-ResTouch-LCD-3.5には、SDカードインターフェースも付属しています。編集した音源のパラメータをSD-Cardに保存・読み出しに利用しました。提供されているサンプルプログラムを参考にすると簡単に繋げました。   PicoMain とLCD、タッチパネル、SDカードとのSPIデバイス接続 Pico-ResTouch-LCD-3.5の背面にある40PinのソケットにPicoMain(Pimoroni Pico Plus2)を装着すると、次の通りSPI接続されます。 このSPI接続では、同じMOSI、MISO、SCKを使って、CS端子の仕様を、LCDの場合はLCD_CS、タッチパネルの場合はTP_CS、SD-Cardの場合はSD_CSに切り替えて使用する仕組みなっています。 信号名 gpio番号(Pimoroni Pico Plus2) LCD_DC = Pin(8, Pin.OUT) LCD_CS = Pin(9, Pin.OUT) LCD_SCK = Pin(10) LCD_MOSI = Pin(11) LCD_MISO = Pin(12) LCD_BL = Pin(13, Pin.OUT) LCD_RST = Pin(15, Pin.OUT) TP_CS = Pin(16, Pin.OUT) TP_IRQ = Pin(17, Pin.IN) SD_CS = Pin(22, Pin.OUT) **PicoSub とYMF825、MIDI端子との接続** PicoSub(Raspberry Pi Pico)側では、FM音源IC(YMF825)をSPI接続して、MIDI端子をシリアル接続しています。 ![PicoSub とYMF825の実体配線の様子](https://camo.elchika.com/281ad87bb9f08104734ac94bd1e4a47da45f2c8f/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62663065396663652d373837332d343266652d623963322d3363666339616236313062612f65316362663339322d343463302d343738622d616638302d663864323430303831393431/) FM音源IC(YMF825)とのSPI接続 PicoSub gpio name (pin) (pin) YMF825 gpio-17 SPI CS (22) ----白---- (1) SS gpio-19 SPI MOSI (25) ----青---- (2) MOSI gpio-16 SPI MISO (21) ----緑---- (3) MISO gpio-18 SPI CLK (24) ----黄---- (4) CLK GND -----------白---- (5) GND 5V -----------橙---- (6) VCC gpio-22 RESET (29) ----紫---- (7) RST No Connect (8) Audio Jack YMF825 Monitor LED-BLUE(Note Onの期間中点灯) gpio-28 (34) --- BLUE-LED Anode --->|--- Cathode (GND) **PicoSub とMIDI端子の接続** MIDI端子とのシリアル接続 PicoSub gpio name (pin) MIDI i/f モジュール gpio-1 UART0 TxD (22) ----黄---- (15) RXD gpio-2 UART0 RxD (25) ----緑---- (16) TXD MIDI の受信(RXD)と送信(TXD)の信号波形改善のため、受信回路には2つのトランジスタでカレントミラー回路構成し、送信回路にはドライバーとして74HC04(インバータ)を入れました。 ![キャプションを入力できます](https://camo.elchika.com/308faeb751f9cd32144631f57511f6959e43e742/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62663065396663652d373837332d343266652d623963322d3363666339616236313062612f33336265613537652d663162632d346466332d386433302d383761383964626362336534/) ![キャプションを入力できます](https://camo.elchika.com/7bd7ee5f2a4ad50cf3fac1de7ed81519584ed2df/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62663065396663652d373837332d343266652d623963322d3363666339616236313062612f33643561326336342d636335632d343639332d613561632d653137383539636239386431/) **PicoMainとPicoSub とは、シリアル接続します** PicoMain と PicoSub との接続 <<< PicoMain >>> Low True <<< PicoSub >>> gpio-2 respT (4) --紫-- --黄-- (4) respT gpio-2 X(ここでクロスさせる) gpio-3 respR (5) --黄-- --紫-- (5) respR gpio-3 gpio-4 TX (6) --緑-- --青-- (6) TX gpio-4 X(ここでクロスさせる) gpio-5 RX (7) --青-- --緑-- (7) RX gpio-5 画像を参照してください。 ![キャプションを入力できます](https://camo.elchika.com/33145b076f7ea0cd24b3009fbb7bcee49f6cfdfb/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62663065396663652d373837332d343266652d623963322d3363666339616236313062612f32663839356130642d393831322d346364302d386665372d616432613932376465646663/) ![キャプションを入力できます](https://camo.elchika.com/7582edc0940e4ea4b6765aa9fb7a7b7cf03cc0aa/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62663065396663652d373837332d343266652d623963322d3363666339616236313062612f61613964633833662d356363642d343134662d613463642d646561333739376134376431/) PicoMainからPicoSubへの送信手順 PicoSubは通常、MIDI信号を受信して再生(音出し)処理をしています。突然、PicoMainからデータが送られてきても対応できませんので、次のような手順で通信するようにプログラムしてします。 ① PicoMainは、PicoSubへの送信データがあるなら、respTをLowにしてPicoSubに受信を要求します。 ② PicoSubは、処理の合間にrespRをポーリングして、Lowを検知したら、受信モードに移行してrespTをLowにして、受信体制が整ったことをPicoMainに知らせます。 ③ PicoMainは、PicoSubからrespRが返ってきたら、TXを使って115200Kbpsでデータ送信し、PicoSubは受信します。 ④ 送信が終わったらPicoMainは、respTをHighにし、PicoSubも、respTをHighにして通信は終了します。