製作品 Lチカ 588
【SPRESENSE2023】SoundSerenityを作ったよっ【環境音を8Trackで】
はじめに
こんにちわっ
リナちゃん X@chrmlinux03 です
このページは SPRESENSE2023コンテストで作った製品を紹介するものです
最初に 開発まとめ をお読みいただければ幸いです
ベッドに入って眠れない日々があった
TVを付けて寝てしまう事も多々あり
でも静かな曲を聴きながら寝入る事もある
って言うかガッツリ寝てるぢゃん
フェーダー状のポテンショメータとの出会い
お仕事(センサ屋)でミキサー卓のようなポテンショメータを貰った ポテンショメータ
「おおっ」これは沢山あればミキサーっぽいのが創れる
で、あればこれを複数まとめれば沢山の音がならせるぢゃん
液晶でフェーダー出せるぢゃん
数日後 液晶でフェーダーを作る事に成功 タッチパネルにバーチャルフェーダーを載せたよ
今までの苦労は何だったのだろうか。。。。
まぁ他にも作りたいものはあるし(と言う現実逃避発動:逃げ)tinyMixer
さまざまな制約
シン・プログラマだからなんとかする
Audio DSP はステレオ x 2(4Track)までの制約
前回のコンテストからAudioについてしばらく考えた事がある
-
どうやって音がなるのか?(まずはそこから)
-
一体何音まで同時出力出来るのか?
-
ミキサー構造は一体どうなっているのか?
-
Audio0 / Audio1 って何?
何もわからないまま無駄に時間だけが経過する
何もわからないまま無駄に sample.ino だけが SSD を圧迫する
ある日突然 自分の理論で音が鳴った
全てはここから始まった
記念すべき日
何かを決意した
ヒントはここにあった
用意するもの
部品名 | 販売先 | 価格 | 御提供品 |
---|---|---|---|
根性 | 誰にでも | プライスレス | ー |
ライブラリ等
何故これで音がなるか?に関しては以下を参照
筐体
最初に軽く打ち出し穴位置を修正
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
さんが
2024/01/26
に
編集
をしました。
(メッセージ: 初版)
-
chrmlinux03
さんが
2024/01/27
に
編集
をしました。
(メッセージ: 画像/X 掲載)
-
chrmlinux03
さんが
2024/01/31
に
編集
をしました。
-
chrmlinux03
さんが
2024/01/31
に
編集
をしました。
(メッセージ: ソース抜けてた(汗)
-
chrmlinux03
さんが
2024/02/29
に
編集
をしました。
ログインしてコメントを投稿する