0
0
この記事誰得? 私しか得しないニッチな技術で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

M5Stack用MIDIシンセサイザユニットで音を鳴らす:M5Stack CoreS3 SE + M5Stack CoreS3用バッテリーボトム の組み合わせ(M5StickC Plus2 でも試す)

Last updated at Posted at 2024-07-15

M5Stack用MIDIシンセサイザユニットのサンプルの 1つを使って、ピアノの音を鳴らしてみたという話です。

それを試している時の様子は以下のとおりです。

この時、デバイスは、「M5Stack CoreS3 SE + M5Stack CoreS3用バッテリーボトム の組み合わせ」を利用し、開発には Arduino IDE を使っています。

今回使うデバイス

M5Stack用MIDIシンセサイザユニット

まずは、音を鳴らすために使うデバイス「M5Stack用MIDIシンセサイザユニット」についてです。

このデバイスは、自分は以下から入手しました。

●M5Stack用MIDIシンセサイザユニット(SAM2695) — スイッチサイエンス
 https://www.switch-science.com/products/9510

以下は、公式のドキュメント・GitHub のリポジトリです。

●m5-docs
 https://docs.m5stack.com/en/unit/Unit-Synth

image.png

●m5stack/M5Unit-Synth
 https://github.com/m5stack/M5Unit-Synth/tree/main

image.png

Arduino IDE で使うライブラリ

今回の開発で使う Arduino IDE では、以下のライブラリを使います。

●M5UnitSynth - Arduino Reference
 https://www.arduino.cc/reference/en/libraries/m5unitsynth/

ライブラリの最新バージョンは「1.0.1」のようです。

image.png

利用するポート

今回使う「M5Stack用MIDIシンセサイザユニット」のポートの種類について補足しておきます。公式ドキュメントで示されているとおり「RORT.C.UART」になります。

image.png

ユニットを接続するデバイス

上記の M5Stack用MIDIシンセサイザユニットを接続するデバイスについても書いておきます。

M5Stack用MIDIシンセサイザユニットを使うには、上記のとおり「RORT.C.UART」に対応している必要があります。

自分が持っているデバイスで、これに対応したものはいくつかありますが、今回は「M5Stack CoreS3 SE + M5Stack CoreS3用バッテリーボトム の組み合わせ」を使います。

ちなみに、これらに関しても自分の入手元は上記のユニットと同じで以下です。

M5Stack CoreS3 SE は PORT.A のみしか使えませんが、M5Stack CoreS3用バッテリーボトムのほうでは以下のとおり PORT.C が使えます。

●M5GO Battery Bottom3 (for CoreS3 only) | m5stack-store
 https://shop.m5stack.com/products/m5go-battery-bottom3-for-cores3-only?variant=44174704804097

image.png

この PORT.C のコネクタに M5Stack用MIDIシンセサイザユニットをつなぎます。

プログラムについて

今回、動作させるサンプルとして、以下にある公式サンプルを使います。

●M5Unit-Synth/examples at main · m5stack/M5Unit-Synth
 https://github.com/m5stack/M5Unit-Synth/tree/main/examples

image.png

とりあえず、以下のピアノの音を鳴らすサンプルを選んでみました。

●M5Unit-Synth/examples/piano/piano.ino at main · m5stack/M5Unit-Synth
 https://github.com/m5stack/M5Unit-Synth/blob/main/examples/piano/piano.ino

基本的には上記のサンプルそのままですが、ピンの番号だけ書きかえが必要です。

以下のとおり、PORT.C は「TXC: G17、RXD: G18」となっています。

●m5-docs
 https://docs.m5stack.com/en/module/M5GO3%20Bottom

image.png

これに合わせて、サンプルの以下の部分を少し変更します。

image.png

上記に対応したプログラム全体を示します。

/**
 * @file piano.ino
 * @author SeanKwok (shaoxiang@m5stack.com)
 * @brief Unit Synth Piano Example
 * @version 0.2
 * @date 2024-04-07
 *
 *
 * @Hardwares: M5Core + Unit Synth
 * @Platform Version: Arduino M5Stack Board Manager v2.1.0
 * @Dependent Library:
 * M5UnitSynth: https://github.com/m5stack/M5Unit-Synth
 */

#include "M5UnitSynth.h"

M5UnitSynth synth;

void setup() {
    Serial.begin(115200);
    Serial.println("Unit Synth Piano");
    synth.begin(&Serial2, UNIT_SYNTH_BAUD, 18, 17);
    synth.setInstrument(0, 0, GrandPiano_1);  // synth piano 1
}

void loop() {
    synth.setNoteOn(0, NOTE_C4, 127);
    delay(1000);
    synth.setNoteOn(0, NOTE_D4, 127);
    delay(1000);
    synth.setNoteOn(0, NOTE_E4, 127);
    delay(1000);
    synth.setNoteOn(0, NOTE_F4, 127);
    delay(1000);
    synth.setNoteOn(0, NOTE_G4, 127);
    delay(1000);
    synth.setNoteOn(0, NOTE_A4, 127);
    delay(1000);
    synth.setNoteOn(0, NOTE_B4, 127);
    delay(1000);
    synth.setNoteOn(0, NOTE_C5, 127);
    delay(1000);
}

これを書きこんで音を鳴らしてみた様子は、冒頭に掲載した動画の通りです。

【追記】 M5StickC Plus2 も試す

記事を公開した後に M5StickC Plus2 でも試したので、情報を残しておきます。

GShQ01cW0AAoOy4.jpeg

プログラムで変更した部分は、以下の通りです。

    // synth.begin(&Serial2, UNIT_SYNTH_BAUD, 18, 17);
    synth.begin(&Serial2, UNIT_SYNTH_BAUD, 33, 32);

ピン番号は、本体裏の記載を参照しました。

●m5-docs
 https://docs.m5stack.com/ja/core/M5StickC%20PLUS2

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0