目次

音楽再生, USB, C言語, 自作

+
その他

C言語 | 仕組み

ここでは, C言語に関する詳細を説明します.

マクロの機能 | C言語

C言語には, マクロと呼ばれるものがあります. マクロとは, コンパイル前にある規則に従って文字を置き換える機能を持ちます[1].

ここでは, マクロの詳しい機能の説明を行います.

タスクコントロールブロック(TCB) | タスク管理

タスクを管理するにあたり, 各タスクの情報を保持しておく必要があります. このような情報の塊をタスクコントロールブロック(TCB)と呼びます.

ライブラリ, Arduino
Arduinoでメロディーを鳴らす | Arduino

Arduinoで何か作品を作っているとき, その作品に音を鳴らせたい時があります. 本格的に音楽を鳴らすのではなく, 効果音としてちょこっと入れたいという意味です. 例えば, 簡単な早押しゲームを作るとして, ボタンを押したときの効果音を入れたいという時です. ですが, この効果音を入れたいために別のArduinoを用意するのはコストの点で好ましくありません. -オーディオプレイヤーのように音楽を鳴らしたい時は[Arduino/Arduinoで音楽を鳴らす]を参照してください.-

ここで, このMelodyPlayerがあります. このMelodyPlayerは新たにArduinoを用意する必要はありません. また, 音楽再生処理はバックグラウンドで行っているためメインプログラムに何も影響を与えません. メロディーを流しながら何か他の処理―LED点灯, ボタン入力など―をすることができます. あなたがすでに書いたスケッチのコードに一行"Play(’Melody名’)"と入れるだけでメロディーが再生されます.

MelodyPlayerができるのは以下の通りです.

  • インクルードするだけで簡単にメロディー再生
  • 簡単にメロディーを追加

ただしMelodyPlayerはピン3,9,10,11のPWM出力を妨げます.

Arduinoで音楽を鳴らす | Arduino

Arduinoで電子工作をしていると音を鳴らしたくなります. その鳴る音は電子音のようなピーピー音ではなく, ゲーム機でなっているような音―むしろ音楽といった方がいいでしょう―にしたいです.

このページではArduinoを用いて音楽を鳴らすことができる’MediaPalyer’を紹介します. 外部シールドを使わないで音楽を鳴らすことができます.

ただし以下の環境が必要です.

対応環境

メインのArduino

下の音楽再生用のArduinoをコントロールするためのものです.

音楽を再生するためのArduino

MediaPlayerは音楽を再生するためのArduinoを必要とします. これはつまり音楽を再生する処理とそのほかのメイン処理を分けるということになります. こうすることで, Arduinoは音楽を再生するための処理に集中することができます.

対応しているArduinoについて

  • 動作周波数: 8MHz, 16MHz

microSD

音楽ファイルを保存するために必要です

音楽ファイル

  • 対応ファイル形式: Wave
  • サンプリング周波数: 32KHz, 16KHz, 8KHz
  • 量子化精度: 8bit
クラウドミュージックプレイヤー, Web, アプリ, PWA
Cloud Music Box - クラウドストレージからの音楽再生Webアプリ(PWA) | アプリケーション一覧
Cloud Music Box
Cloud Music Box

Cloud Music Boxは、クラウドストレージ(現在はOneDriveのみ)から音楽を再生するPWA音楽プレイヤーです。

以下の特徴を持ちます。

  • PWAとして、多くのプラットフォーム(Windows, macOS, iOS, Android)上で同様のユーザ体験を実現します。
  • 一元管理されたクラウドストレージからの再生で、プレイヤーごとに音楽を同期する必要がありません。
  • オフラインでも、ダウンロード済みの音楽は再生可能です。
  • アプリがバックグラウンドにある場合でも、音楽の連続再生が可能です(iOSのみ動作しないことがある)。
  • 音楽に合わせて、動的にアプリのスタイルやアニメーションが変化します。
音楽
Cloud Music Box - クラウドストレージからの音楽再生Webアプリ(PWA) | アプリケーション一覧
Cloud Music Box
Cloud Music Box

Cloud Music Boxは、クラウドストレージ(現在はOneDriveのみ)から音楽を再生するPWA音楽プレイヤーです。

以下の特徴を持ちます。

  • PWAとして、多くのプラットフォーム(Windows, macOS, iOS, Android)上で同様のユーザ体験を実現します。
  • 一元管理されたクラウドストレージからの再生で、プレイヤーごとに音楽を同期する必要がありません。
  • オフラインでも、ダウンロード済みの音楽は再生可能です。
  • アプリがバックグラウンドにある場合でも、音楽の連続再生が可能です(iOSのみ動作しないことがある)。
  • 音楽に合わせて、動的にアプリのスタイルやアニメーションが変化します。
Arduinoで音楽を鳴らす | Arduino

Arduinoで電子工作をしていると音を鳴らしたくなります. その鳴る音は電子音のようなピーピー音ではなく, ゲーム機でなっているような音―むしろ音楽といった方がいいでしょう―にしたいです.

このページではArduinoを用いて音楽を鳴らすことができる’MediaPalyer’を紹介します. 外部シールドを使わないで音楽を鳴らすことができます.

ただし以下の環境が必要です.

対応環境

メインのArduino

下の音楽再生用のArduinoをコントロールするためのものです.

音楽を再生するためのArduino

MediaPlayerは音楽を再生するためのArduinoを必要とします. これはつまり音楽を再生する処理とそのほかのメイン処理を分けるということになります. こうすることで, Arduinoは音楽を再生するための処理に集中することができます.

対応しているArduinoについて

  • 動作周波数: 8MHz, 16MHz

microSD

音楽ファイルを保存するために必要です

音楽ファイル

  • 対応ファイル形式: Wave
  • サンプリング周波数: 32KHz, 16KHz, 8KHz
  • 量子化精度: 8bit
WSL, WSL2, Tips
WSL2でUSBデバイスを認識させる | Tips
この方法は古い可能性があります

2021年12月現在, この記事で紹介している方法は古い可能性があります.

最新の方法について, microsoft 公式の以下のページか, 他の最新情報サイトをご覧ください.

WSL2上でUSBデバイスを認識させるために, VirtualHereを用いた方法を, Linux側でUSB/IPの機能を有効にする方法も含めて, 説明します.

WSL2上でArduino UNO が認識されている
WSL2上でArduino UNO が認識されている
タイマ
システム割り込み | タスク管理

OSがタスクの切り替えを行うためには, 定期的にOSが現在実行中のタスクの処理を中断してタスク切り替え処理を行う必要があります.

ここでは, このようなOSが定期的に割り込み処理を行う方法を説明します. また, 割り込み時の処理について説明します.

編集中
Port.c | スクリプティング

PortMacro.hで宣言されているOSコア部分の関数をここで定義します. このファイルはAVRマイコン専用です.

OS, メモリ
メモリ管理 | 仕組み

OSはタスクごとにメモリを動的に割り当てる必要があります(タスクが保有するメモリに関することはのちに説明します). というのも, これらのタスクはアプリケーション実行中に生成, 削除される可能性があるからです.

今回では, このメモリ管理をOSが行うことにします. OSがメモリ管理を行うことで, OS動作の理解がしやすくなるからです.

このページでは, OSによるメモリ管理をどのように実装するのか説明します.

メモリの構造 | タスク管理

ここでは, 実際にタスクが作成されたときのメモリの構造を示していきたいと思います. メモリでの各領域の説明, この構造によるmallocの問題を示します.

メモリ管理
メモリ管理 | 仕組み

OSはタスクごとにメモリを動的に割り当てる必要があります(タスクが保有するメモリに関することはのちに説明します). というのも, これらのタスクはアプリケーション実行中に生成, 削除される可能性があるからです.

今回では, このメモリ管理をOSが行うことにします. OSがメモリ管理を行うことで, OS動作の理解がしやすくなるからです.

このページでは, OSによるメモリ管理をどのように実装するのか説明します.

Stack
メモリの構造 | タスク管理

ここでは, 実際にタスクが作成されたときのメモリの構造を示していきたいと思います. メモリでの各領域の説明, この構造によるmallocの問題を示します.

作品
端末第四世代(TerminalPro4) | 作品例
本体外観
本体外観

TerminalPro4とはSDカードに保存されている任意のプログラムを選択, 実行することができるものです. また外部のマイコン(optibootのみ対応)に対してプログラムを書き込むことも可能です. プログラマはTerminalPro4が備えている液晶, 音楽再生機, ボタンを自由に使用することができます. TerminalPro4が音楽プレイヤーからゲーム機まで様々なものになるのは, プログラマ次第です.

このページでは, TerminalPro4のハードウェア製作方法, TerminalPro4用のソフトウェア(アプリケーション)作製方法を説明していきます.

大まかな仕様は次のようになっています.

  • マイコン数: 3(ArduinoUno)
  • 入出力デバイス: 白黒ディスプレイ, スイッチ, 音声, SD
  • 音声出力法: PWM方式

TerminalPro4は次のライブラリを使用します.

「https://contentsviewer.work/Master/:tagmap/音楽再生,USB,C言語,自作?layer=ja」から取得