Discuss Scratch

neko_remi
Scratcher
26 posts

オーディオスペクトラムについて

質問です。
scratchでオーディオスペクトラムを使う方法ってありますか?
yuzupon1133-sub
Scratcher
1000+ posts

オーディオスペクトラムについて

検索してみると色々出てくるのでこれを参考にすればできるかもしれません。

Last edited by yuzupon1133-sub (Nov. 4, 2021 23:01:03)

Poteto143
Scratcher
1000+ posts

オーディオスペクトラムについて

Scratchでオーディオスペクトラムを作る方法はありません。
ただ、ブロックの「調べる」カテゴリに、今流れている音の大きさを取得する「音量」というブロックはあるので、「それっぽいもの」を作ることはできます。
neko_remi
Scratcher
26 posts

オーディオスペクトラムについて

gifでできますか?
yuzupon1133-sub
Scratcher
1000+ posts

オーディオスペクトラムについて

gifでオーディオスペクトラムとはどういうことですか?
neko_remi
Scratcher
26 posts

オーディオスペクトラムについて

AviUtlとかでつくったオーディオスペクトラムの動画をgifに変換して読み込ませるという方法です
yuzupon1133-sub
Scratcher
1000+ posts

オーディオスペクトラムについて

gifは読み込めなかったと思います。読み込めました。しかし、フレームごとにpngなどの画像で分ければ読み込めると思いますが、10MBを超えると保存できなくなります。(オフラインエディタのほうがいいかも)

数値化させてリストに入れたほうがいいかもしれません。

Last edited by yuzupon1133-sub (Nov. 5, 2021 00:58:23)

Poteto143
Scratcher
1000+ posts

オーディオスペクトラムについて

アニメーションgifはScratchでも読み込みできます。
アップロードするとそのgifを作る画像がそれぞれ別々のコスチュームとなって読み込めます。
neko_remi
Scratcher
26 posts

オーディオスペクトラムについて

gifの数値化ってどうやってやるんですか?
YM358
Scratcher
78 posts

オーディオスペクトラムについて

gifの数値化とは具体的にどのようなものですか?
neko_remi
Scratcher
26 posts

オーディオスペクトラムについて

#7
で「数値化させてリストに入れたほうがいいかもしれません。」とあったのでやってみようと思いました
yuzupon1133-sub
Scratcher
1000+ posts

オーディオスペクトラムについて

neko_remi
Scratcher
26 posts

オーディオスペクトラムについて

googleアカウントを持っていない場合はどうするんですか?
abee
Scratcher
1000+ posts

オーディオスペクトラムについて

#3
「それっぽいやつ」の一例です。
Audio Level on Scratch
これは、わざとリストを使っていますが、もちろんグラフィックでも作れます。
なにがそれっぽいだけかというと、素のScratchでは周波数スペクトルの解析ができないので、単純にマイクの音量をみているだけになっているところです。

Last edited by abee (Nov. 5, 2021 10:42:28)

KimiruHamiru
New Scratcher
500+ posts

オーディオスペクトラムについて

(以下は、多分トピックとか質問の趣旨とは違うと思うのですが)

Scratchはオーディオスペクトラムを作るのに必要な要素のうち

「音源(音声ファイルやマイクからの音声)」
の、
低い音の音量と、高い音の音量(と中ぐらいの何段階かの周波数帯域の音量)
を、
それぞれ独立した数値として取り出すこと

できない「だけ」=他の要素は、やろうと思えば全てできる

と思われるので、「その部分」だけScratchの外でやって、Scratchに結果を持ち込めれば
Scratchでオーディオスペクトラムを表示することはできて、実際そういうプロジェクトもあるようです。

https://scratch.mit.edu/projects/472178490/
とか「周波数帯」どころか「サイン波」まで分解したデータを使って
・元音声ファイルを持つのではなく、サイン波の合成として元の音声を再現しつつ
・各サイン波の再生音量をグラフィカルにモニタしてる
ようです(ごめんなさい。あまりちゃんと読んでません)。

解析自体の実装は既にあるので、
https://scratch.mit.edu/projects/37759604/
「wavの生データ(PCM?)を数値としてプロジェクトから見える状態にする」ことさえできれば、
(あと扱えるデータ総量とか度外視すれば)
多分「高い音と低い音に分ける」部分も外部でやるのは必須ではないです。

Scratchに「音声ファイルの再生中の音量」を「数値としてモニタする機能」
でもあれば
「ピッチを変化させて差分を拾って各帯域の音量を取れる、かも?」
などと考えたこともあったのですが、その方法は現実的にはなさそうです
(スピーカー出力をマイクへ入れる小細工はOS側でできなくもない気はしますが試したことはないです)。
KimiruHamiru
New Scratcher
500+ posts

オーディオスペクトラムについて

neko_remi wrote:

gifの数値化ってどうやってやるんですか?
多分元の意味は
音声ファイル->gif化->数値化
という話じゃなくて
音声ファイル->数値化
つまりは、
「どうせ最終的に数値にするのであれば、gifを読み込んでScratchで数値化するより、最初から数値データにしてScratchに読み込めばいい」という話をしてるのかなと思います。

音声データを数値化する」については、

yuzupon1133-sub wrote:

https://scratch.mit.edu/projects/582679277/
でやってることがそれかなと思います(ちゃんと読んでませんが説明を見る限り音声ファイルをPCMデータとして取り出してるしてると思います)。
そういういことは
Scratchの機能ではできない
から
「Scratchじゃないところで、音声ファイルを、数値化(Scratchでリストに読み込めるようなデータに)する」
という話と思います(外部スクリプト利用の紹介の是非とかいった話題もありますが)。

gifの数値化
については、(上で書いた通り、必要があるかどうかはべつにして)
それ自体はScratchでやるのはそれほど難しい話じゃなくて
「色に触れた」ブロックとかを使って
「画像中」の「ある座標」に「点が描かれているかいないか」を「たくさん調べる」(そして結果をリストに書きだす)だけで、できるはずです。
具体的には
■□□□□□□□
■■■■■□□□
■■■■■□□□
■■□□□□□□
■■■■■□□□
■■■□□□□□
みたいな画像を表示させるとかスタンプするとかして、
その上に横8縦6の48か所の座標に小さいスプライトを表示して、
その小さいスプライトが「黒に触れたかどうか」を調べて
その結果を8つ分あつめて、計算で1から8のデータを得て、
リストにデータを書き込む。たとえば上の例なら「155253」とか書く。
みたいなコードです。
画像によっては数値として取り出すのが難しい場合もあると思いますが、
そこは、AviUtlを使えるような人であれば
「映像の方を、この方法でデータを取り出しやすいようにする」のは難しくないはずです。

データ量節約のためにはgifよりも数値化した方が」という話題は、
・音楽再生時にはGIFは表示しない(プロジェクト中の、リストを作るために使ったGIFデータは削除する)
・リストに書いたデータを使ってペンなどで描画するように作る
そうすれば、GIFを使う場合よりもプロジェクトサイズを小さくできる。
小さくしないと保存できなくなったりする。
という話と思います。
yuzupon1133-sub
Scratcher
1000+ posts

オーディオスペクトラムについて

#16
そうです。そういうことです。説明が足りてませんでした。
neko_remi
Scratcher
26 posts

オーディオスペクトラムについて

そうゆうことですか…
KimiruHamiru
New Scratcher
500+ posts

オーディオスペクトラムについて

neko_remi wrote:

そうゆうことですか…
どういう理解をされたかはよくわからなかったのですが、

neko_remiさんが「AviUtlでオーディオスペクトラムの動画出力は、既にできる」
のであれば、

AviUtlで、音声ファイルから動画出力
=>gif化してScratchに画像取り込み
=>画像を、Scratchでコスチューム切り替えでアニメーションしてみる

といった、

neko_remiさんにとって、やり方がイメージしやすい方法
で、
実際にやってみる、
それによって、手順が分からない所、うまく行かない所がないか確認する

のが最初にすべきことかなと思います。
ほかのやり方とか効率の話とかは、ぜんぶ、「最初の方法が問題なくうまく行ったら、考える必要がない話」と思います。
KimiruHamiru
New Scratcher
500+ posts

オーディオスペクトラムについて

放りっぱなしもアレなので具体的には、

neko_remi wrote:

scratchでオーディオスペクトラムを使う方法ってありますか?
あります。
トピックで既に紹介されているように、実例が多数あります。
Scratchの標準機能では恐らくできないので、何らかの形で、
オーディオスペクトラムの映像か数値データを外で作る必要がある、と思われます。

neko_remi wrote:

gifでできますか?
できます。
Scratchには静止画GIFやアニメーションGIFを読み込む機能があります。

neko_remi wrote:

AviUtlとかでつくったオーディオスペクトラムの動画をgifに変換して読み込ませるという方法です
AviUtlは拡張機能などもあるようなので、何ができるのか私はよくわかってないのですが、
私が慣れたツールでやるなら

「動画をgifに変換」は、
フリーソフトのffmpegで、コマンドラインから「ffmpeg -i poler.mp4 poler.gif」等として「アニメーションgif」として出力します。

「gifに変換して読み込ませる」は、
「アニメーションgifを、Scratchで取り込む」のは標準機能でできるので簡単です。

Scratchで新規スプライトを「スプライトをアップロード」で作成。
アニメーションgifを選択してアップロードすると、
アニメーションの各フレームが1枚ずつコスチュームとして展開されて、連続する番号が自動的に振られます。

再生するのは、以下のようなプログラムで再生できます。
@greenFlagがクリックされたとき
(poler v)の音を鳴らす // Scratchで使える.wavか.mp3で出力しておく。
x座標を(0)、y座標を(0)にする
コスチュームを(poler v)にする // 展開された一枚目の画像の名前を指定する。
(443)回繰り返す // 画像の枚数を指定する
次のコスチュームにする
実際やってみましたが「この程度の枚数」であれば保存なども問題なさそうです。

Powered by DjangoBB