chrmlinux03のアイコン画像
chrmlinux03 2024年01月26日作成 (2024年02月29日更新) © MIT
製作品 製作品 Lチカ Lチカ 閲覧数 628
chrmlinux03 2024年01月26日作成 (2024年02月29日更新) © MIT 製作品 製作品 Lチカ Lチカ 閲覧数 628

【SPRESENSE2023】SoundSerenityを作ったよっ【環境音を8Trackで】

【SPRESENSE2023】SoundSerenityを作ったよっ【環境音を8Trackで】

はじめに

こんにちわっ

リナちゃん X@chrmlinux03 です

このページは SPRESENSE2023コンテストで作った製品を紹介するものです
最初に 開発まとめ をお読みいただければ幸いです

ベッドに入って眠れない日々があった

TVを付けて寝てしまう事も多々あり

でも静かな曲を聴きながら寝入る事もある

って言うかガッツリ寝てるぢゃん💦

フェーダー状のポテンショメータとの出会い

お仕事(センサ屋)でミキサー卓のようなポテンショメータを貰った 👉ポテンショメータ

「おおっ」これは沢山あればミキサーっぽいのが創れる

で、あればこれを複数まとめれば沢山の音がならせるぢゃん💕

液晶でフェーダー出せるぢゃん

バーチャルフェーダー参
数日後 液晶でフェーダーを作る事に成功 👉タッチパネルにバーチャルフェーダーを載せたよ

今までの苦労は何だったのだろうか。。。。

まぁ他にも作りたいものはあるし(と言う現実逃避発動:逃げ)👉tinyMixer

さまざまな制約








シン・プログラマだからなんとかする

Audio DSP はステレオ x 2(4Track)までの制約

前回のコンテストからAudioについてしばらく考えた事がある

  • どうやって音がなるのか?(まずはそこから💦

  • 一体何音まで同時出力出来るのか?

  • ミキサー構造は一体どうなっているのか?

  • Audio0 / Audio1 って何?💦

何もわからないまま無駄に時間だけが経過する

何もわからないまま無駄に sample.ino だけが SSD を圧迫する

ある日突然 自分の理論で音が鳴った

全てはここから始まった

記念すべき日

何かを決意した

ヒントはここにあった


用意するもの

部品名 販売先 価格 御提供品
根性 誰にでも プライスレス

ライブラリ等

何故これで音がなるか?に関しては以下を参照

👉AudioDSPを絶妙にハックしたよ【実践編】

筐体

最初に軽く打ち出し穴位置を修正

4回くらいの設計変更

LEDリングも搭載

LEDリング

組み立て

スピーカー

仕込む

バッテリ内蔵

LEDリング

ネジで止める

コード

//============================================== // // soundSerenity.ino //---------------------------------------------- // date/author : 2024/01/20 @chrmlinux03 // update/author : 2024/01/28 @chrmlinux03 // //============================================== #define PLAYING_FILENAME "044K816.soundSerenity.raw" const uint8_t numTracks = PLAYING_FILENAME[4] - '0'; #include <spreTools.hpp> #include <spreAudioLib.hpp> #include <spreGraphics.hpp> #include <tinyTouch.hpp> #include <tinySlider.hpp> tinySlider sliders[numTracks]; #include <spreSliderSub.hpp> #include <spreNeo.hpp> SpreNeo neo; //============================================== // // setup // //============================================== void setup(void) { Serial.begin( 115200 ); int8_t rotation = ROT270; setupGraphics(rotation); setupTouch(_w, _h, rotation, false); debugAudio = false; setupAudio(AUDIO, CLOCK_NORMAL); addFile(PLAYING_FILENAME); setupSliders(numTracks, _w, _h - 24, 180, 6, 0); neo.begin(); neo.set(LEDKIND_BRESS, 255, 255, 255, 64); neo.start(); setupPlayer(AUDIO0); // setupPlayer(AUDIO1); } //============================================== // // loop // //============================================== void loop() { neo.update(); loopPlayer(AUDIO0); // loopPlayer(AUDIO1); spr.startWrite(); spr.clear(TFT_DARKSILVER); int tx, ty, tz; bool touched = isTouch(&tx, &ty, &tz); if (touched) { scanSliders(); readSliders(); } updateSliders(); static int cnt = 0; char ast[4] = "|/-\\"; spr.setTextColor(TFT_WHITE, TFT_BLACK); spr.setCursor(8, 8); spr.printf("[%c] %3d fps\n", ast[cnt], getfps()); cnt = (cnt + 1) % 4; spr.pushSprite(&lcd, 0, 0); spr.endWrite(); }

動かしてみた

残務と今後の考察

現在 Audio0 のみを使用しているので 8Track

これは Audio1 を使えば 16Track は行けるのではないか?

って言うかそこまでいるのかという話である

さいごに

ご清聴ありがとうございました

まぢでライブラリが出来るまでが長かった💦

このページは SPRESENSE2023コンテストで作った製品を紹介するものです
最初に 開発まとめ をお読みいただければ幸いです

chrmlinux03のアイコン画像
今は現場大好きセンサ屋さん C/php/SQLしか書きません https://arduinolibraries.info/authors/chrmlinux https://github.com/chrmlinux #リナちゃん食堂 店主 #シン・プログラマ
ログインしてコメントを投稿する