SPRESENSE の Qiita Advent Calendar のトリとなる記事をあげることができました。SPRESENSEと六軸センサーで傾きを検出して、音楽のボリュームと再生速度を操作するその名も「MusicGripper」です。




実は、もともとはSPRESENSEを使ったスマートグラスのようなものを作りたいと思っていましたが、0.96インチの液晶ディスプレイが、SPRESENSEで何をやっても動かない。簡単に動くと思ったのですがこれは大誤算。






レンズや鏡も準備していたのですが、これは困った。動かない原因はおいおい調べるとして、Advent Calendar のトリとしては立派なコンテンツをあげたいところ。このままでは間に合いません。

いろいろ考えた結果、前からアイディアとしてあたためていたジェスチャーで音楽を操作することを試してみることにしました。

しかし、順調にものごとが進むことは稀で、ここでもいくつかの壁がありました。一つ目はBLEと音楽再生の平行処理です。BLEの接続は前から調べていたのでなんとかなりますが、今回は音楽再生とBLE受信の平行処理をしなければなりません。

いろいろ検討したのですが、さすがPythonです。ここは ”Threading” というテクニックを使って解決しました。Pythonは正直苦手なんですが、これは直感的で使いやすいですね。



import time
import threading

n = 0
def func1():
global n
while n < 10:
print ('hello')
time.sleep(0.5)

thread1 = threading.Thread(target=func1)
thread1.start()
while n < 10:
n = n+1
print('n='+str(n))
time.sleep(1)
thread1.join()



二番目に苦労したのが、再生速度を変える方法です。これがかなり面倒くさい。再生速度を早くするには、オリジナルの音源のサンプル数を間引きしてプレーヤーに渡す必要があります。一方で、再生速度を遅くするにはサンプルの間を補間する必要があります。

聞くだけでも面倒な処理ですが、ここもPythonの数値ライブラリが活躍してくれました。これらの話を、今後このブログでしていきたいと思います。




SONY SPRESENSE メインボード CXD5602PWBMAIN1

  • 出版社/メーカー: スプレッセンス(Spresense)
  • メディア: Tools & Hardware



Prament BMI160 モジュール 6DOF 6 軸角速度ジャイロ + 重力加速度センサ IICSPI

  • 出版社/メーカー: Prament
  • メディア: エレクトロニクス