投稿
れい rei-nntnd
【MICおよびWAVSETAの調査結果】 「PetitModem」や「プチコンでBadApple」等を作った時に調べたプチコンでの録音・再生関係の調査メモをこのトピに記す。 追加の知見や間違いは適宜追加すること。質問への回答は適宜識者が行うこと。 ★マイク・WAVSET系の説明は「ウソだらけ」なので信じてはいけない。
37そうだね
プレイ済み
返信[1]
親投稿
れい rei-nntnd
○MICに関して サンプルレートは8182Hz/10909.33..Hz/16364Hz/32728Hz。 128/32768が無音状態。 MICPOSは1点ずつではなくまとめて増える。 ○WAVSETAに関して。 エンベロープはバグありで機能しなかったりするので全て127にすること。 サンプル数の16384制限は嘘。65536以上でもいける。 「基準音程に69」を指定し「O4C」を鳴らすと、「約1秒」で全てのサンプルを消費するようなサンプルレートで再生される。 基準音程を上げるか、MML中の音符が低くなればサンプルレートは下がり、基準音程を下げるか、MML中の音符が高くなればサンプルレートは上がる。
3そうだね
プレイ済み
返信[2]
親投稿
れい rei-nntnd
式で書くと サンプルレート[Hz] = サンプル数 * 2^((音符音程-基準音程+9)/12) * 約1.023 1音の再生中にサンプル数を超えると最初からサンプルをやり直す。 1音の再生中にサンプルが終わらなくても、次の1音は最初から。 周波数が微妙にずれるので「@D-24」をつける。大体0.5%以内の誤差になる。 サンプル数を2の累乗以外にするとサンプリング定理から来る「折り返し」がのる。 折り返しノイズが嫌ならサンプル数は16384や32768を使うこと。オススメは16384。 長い時間再生したい場合は、サンプル数を増やすのではなく音符の音程を下げること(例:O4C->O3Cで2倍の長さになる)。
2そうだね
プレイ済み
返信[3]
親投稿
れい rei-nntnd
○音を継ぎたいとき 楽器番号別にサンプリングデータを登録し連続で鳴らすと音を繋げることができる。 例えば楽器番号毎に2秒登録すれば32x2=64秒の再生が可能。 ただし各音色の先頭・最後付近が「128」で終わらない場合や、うまく継げていない場合は「プチ」という音がのる。 ダブルバッファを用いるとメモリの許す限りサンプリングデータを再生できる。 ○オススメまとめ 録音は16364Hz/8bitで。 周波数ずれが気になる場合は32728Hzで録音して16384Hzサンプリングに変換する。 (周波数変換はメモリを馬鹿食いするので注意) 再生は16384サンプル/8bitで。例えば WAVSETA 224,127,127,127,127,WAVE%,69 BGMPLAY "@D-24T60 @224 O4C4"
2そうだね
プレイ済み
返信[4]
親投稿
Godot orz_127
投稿の文面を読むと この書き置きを遺して れいさんが秘密結社に追われて失踪していそう。 何となくそんなかんじがw ちなみにこの情報はどのバージョン? 3.2.0でもバグ変わらず? と聞いても内容についていけていない^^; たいぶ前サッポロシティの資料は集めたけど挫折しましたw
4そうだね
プレイ済み
返信[5]
親投稿
れい rei-nntnd
3.0で調べた。 3.2でもこれで基本問題ない。 バグに関しては多少なおってるが、相変わらずきちんとは動いてないっぽい。 報告はしてない。
0そうだね
プレイ済み
返信[6]
親投稿
MIKI ifconfig
切れ目のない正弦波を出そうとしたのですが、プチプチしてしまいます。 @D-24 が@D0でもあんまり変わらない感じ。 何か間違ってますか?
0そうだね
プレイ済み
返信[7]
親投稿
れい rei-nntnd
@Dは周波数に効く。音程の違いはわかるはず。 俺の調べた限り、きちんとプチプチを消すのは不可能。 波形データの最初と最後である程度無音領域をつくるか、 ある程度ひろい周波数スペクトルを持つ音声データでないとだめ。 あきらめるべき。 DSPは32728Hz固定サンプルレートのはずなのに16384や32768サンプルでレート変換のモアレや折り返しノイズが出ないのはおかしいし、@Dで微妙に周波数を変えられるのもおかしい。(しかも後者はモアレがのらない) 音量0の場合特殊処理してるっぽいってのもある。 3DSのDSPの仕様、伝統的なMMLやBASICの仕様、それらをうまく満たすためにかなり無理してるのではないかと思われる。 一定期間毎のプチプチがどうしても消せないので、実はPetitModemのパケットサイズはこれで決まってる。
1そうだね
プレイ済み
返信[8]
親投稿
MIKI ifconfig
デチューンで周波数が変わるのは確認しました。 デチューンのせいで波形の繋ぎ目が不連続になるのかなあと思って @D0にしたけど、プチプチは変わらなかったという意味です。 無理ということで理解しました。 DSPのレートというのは、取るのも出すのもその値なんですか?
0そうだね
プレイ済み
返信[9]
親投稿
れい rei-nntnd
うん。 仕組み上レートは整数比でしか変えられない。 無理に変えるときはオーバーサンプル+フィルタなんでいろいろ無理がくる。 不思議なことにBadAppleはプチプチ目立たないんだよね…
0そうだね
プレイ済み
返信[10]
親投稿
MIKI ifconfig
スーさんの2015/11/09の投稿をヒントに、C&で繋いだら、プチプチなしで再生できました!! 耳で確認しましたが波形レベルだとデチューン分のギャップがあるかもしれません。
0そうだね
プレイ済み
返信[11]
親投稿
MIKI ifconfig
スーさんの投稿はこちら https://miiverse.nintendo.net/posts/AYIHAAAEAAArVRTs4QUwBA 解決策を出して頂いたのは Oskar さんですね。感謝!!
0そうだね
プレイ済み
返信[12]
親投稿
れい rei-nntnd
それもやってみたんだが、ダメなんよ。 音圧0のギャップはあかないが波形がゆがむ。 なので登録する波形によってはやはりプチプチしてしまう。
2そうだね
プレイ済み