Hyodot が 2025年12月01日17時42分25秒 に編集
コメント無し
本文の変更
++外観++  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音源を伴奏に利用できるように工夫しました。 ++主要部品++ |デバイス名|用途|接続方法| |:-------------------------|:--------------|:-------------|:----------------| |Pimoroni Pico Plus2| PicoMain:音源編集用|PicoSubとシリアル接続| |Waveshare 3.5型静電容量式タッチパネルLCD|編集画面表示・タッチ入力用| PicoMain にSPI接続| |Raspberry Pi Pico | PicoSub:YMF825制御用| PicoMainとシリアル接続| |YMF825(YAMAHA FM音源)|設定された音源でMIDI再生| PicoSub とSPI接続| |MIDIインターフェース|PicoSubでMIDI再生|PicoSubにシリアル接続| **入手先など(ご参考)** 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 Raspberry Pi Pico https://akizukidenshi.com/catalog/g/g116132/ YMF825(YAMAHA FM音源)・・・残念ながら販売終了です。 https://akizukidenshi.com/catalog/g/g112414/ MIDIインターフェイス基板キット https://akizukidenshi.com/catalog/g/g111112/ ++実体配線図++  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に切り替えて使用する仕組みなっています。 **Pico(Pimoroni Pico Plus2)と Pico-ResTouch-LCD-3.5 との gpio接続** |信号名|Pico gpio番号| |:-------------------------|:--------------| |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端子をシリアル接続しています。  ++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) | NC | ++YMF825 Monitor LED-BLUE(Note Onの期間中点灯)++ |PicoSub gpio name| (pin) |接続部品| GND | |:--------------|:----:|:----:|:---:|:---:| |gpio-28 | (34) |BLUE-LED Anode | BLUE-LED Cathode| ++PicoSub とMIDI端子の接続++ |PicoSub gpio name| (pin) |配線色|接続先| |:--------------|:----:|:----:|:---:|:---:| |gpio-1 UART0 TxD| (1) | 黄 |TX信号ドライブ回路の入力へ| |gpio-2 UART0 RxD| (2) | 緑 |カレント・ミラー回路の出力から| MIDI の受信(RXD)と送信(TXD)の信号波形改善のため、受信回路には2つのトランジスタでカレントミラー回路構成し、送信回路にはドライバーとして74HC04(インバータ)を入れました。




**PicoMainとPicoSub とは、シリアル接続します** PicoMain と PicoSub との接続
++PicoMainとPicoSub との シリアル接続++ | PicoMain| (pin) |配線色|配線色| (pin)| PicoSub| |:---------------|:-----:|:----:|:-----:|:----:|:----------------:| |gpio-2 respT |(4)| 紫 | 黄 |(4)| respT gpio-2| | | |ここでクロス| | | | |gpio-3 respR |(5)| 黄 | 紫 |(5)| respR gpio-3| ||||||| |gpio-4 TX |(6)| 緑 | 青 |(6)| TX gpio-4| | | |ここでクロス| | | | |gpio-5 RX |(7)| 青 | 緑 |(7)| RX gpio-5|
<<< 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 画像を参照してください。   PicoMainからPicoSubへの送信手順
++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にして通信は終了します。