Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1724
次のページ(過去)
返信[12]
親投稿
みなつ tksm372
最初はどんな機能があるのか分からないので、どこから覚えたらいいのかもわからないですよね~(´・ω・`) しょぼーんさんも書かれていますが、インターネットブラウザで「プチコン3号初心者講座」を検索して、見てみるといいかも(*´▽`*) あと、「smilebasic非公式マニュアル」で検索して出てくるページに、すごく分かりやすい命令の説明があるので、どんな機能や命令があるのか一通り眺めてみると、「あ、この機能使ってみたい!」ってなるのでオススメです(≧∇≦)b 命令表を
3そうだね
プレイ済み
返信[14]
親投稿
みなつ tksm372
あ、重要なことを忘れてました・・・ プチコンBIGだけだと思いますが、MICSTARTしたまま「作品公開とダウンロード」に行くとすっごく遅くなるので、そういうときは「MICSTOP」を実行しましょう(・'ω'・)
2そうだね
プレイ済み
返信[13]
親投稿
みなつ tksm372
ところが、もし、調べたい元データの周波数と、検出したい周波数がぴったり同じだと・・・ 両者の正/負は常に一致するので、掛け算しても正の値にしかならないんですよー(ナ・・・ナンダッテー! そうすると、灰色の部分は常に正なので、これを積分していくとどんどん大きくなり、時間Tで割った値(図の黄線)も0にならず、一定の値に近づいていきます。 逆に考えると、調べたいデータに検出したい周波数の波を掛け算して、積分した値を積分時間で割り、これが0じゃなければ「調べたい周波数の成分が含まれている!」ということが分かるのですよーヽ(´▽`)ノ そして、この0じゃない値が大きいほど、調べたい周波数成分が強いというわけですにゃー! あくまで感覚的な話なので、数学的な正しさについては自信がありません(*ノノ) 図のプログラム(スクロールしてずっと表示できます): 公開キー【VZV3Y33J】
1そうだね
プレイ済み
返信[12]
親投稿
みなつ tksm372
周波数成分の抽出原理について興味があれば、フーリエ変換(基底関数はsin,cosのみ)とか、ウェーブレット変換(基底関数をsin,cosに限定しない)を調べるとよいかもです が、ぶっちゃけて「感覚的に」説明しますと。。。 例えば、1.1Hzのサイン波(調べたいデータ。図の赤線。)と1Hzのサイン波(検出したい周波数。青線。)みたいに、ちょっとだけ周波数が異なる二つのサイン波があったとします。 この二つのサイン波を、掛け算(白線)しながら積分(灰色部分がX軸より上なら面積分足す、下なら引く)していき、これを「積分した時間Tで割って」みます(黄線)。 すると、値はだんだん0に収束していきます。 何故かというと、周波数が少しでもずれてると、掛け算した曲線の灰色の部分はX軸より上と下に交互に現れるので、プラスとマイナスで打ち消し合っちゃうからです。
0そうだね
プレイ済み
返信[10]
親投稿
みなつ tksm372
周波数成分の強さによって色を変えて表示する方法ですが、強さを色相(H)としてHSVからRGBに変換するとそれっぽくなるかも! 例えば、黒~青~緑~赤みたいな色に変換する場合は、変換したいデシベル値がXに入っているとすると、 MINDB=-50 'これ以下は黒(H=0)にする MAXDB=-10 'これ以上は赤(H=5)にする RANGE=MAXDB-MINDB H=MIN(MAX(X-MINDB,0)/RANGE,1)*5 'H:0~5 R:0,0,0,0,1,1 R=255*MIN(1,MAX(0,H-3)) 'H:0~5 G:0,0,1,1,1,0 G=255*MIN(1,MAX(0,2-ABS(H-3))) 'H:0~5 B:0,1,1,0,0,0 B=255*MIN(1,MAX(0,1.5-ABS(H-1.5))) という感じでRGBに変換できます(≧∇≦)b
0そうだね
プレイ済み
返信[8]
親投稿
みなつ tksm372
周波数から音階への変換については、オクターブ4のラの音を440Hzとした場合、変換したい周波数をFとすると、 DIM NOTE$[12] COPY NOTE$,@NDAT,12 @NDAT:DATA "ラ","ラ#","シ","ド","ド#","レ","レ#","ミ","ファ#","ファ","ソ","ソ#" としておき、 N=ROUND(12*LOG(F/440,2)) N12=((N MOD 12)+12) MOD 12 '0~11の範囲に変換 ?NOTE$[N12] で、表示できるそうです(≧∇≦)b また、オクターブは、 ?FLOOR((N-3)/12)+5 で表示できるそうです!
1そうだね
プレイ済み
返信[7]
親投稿
みなつ tksm372
続いてFFTですが、ざっくり言うと、元データの周波数成分を取り出す機能です。FFTBUFに64要素の音声データが入っているとして、 'FFT DIM FR[64],FI[64],ZERO[64] FFT FR,FI,FFTBUF,ZERO 'FFT '周波数毎のパワーP(=FR^2+FI^2)を計算 DIM P[64]: ARYOP #AOPMUL,FR,FR,FR: ARYOP #AOPMAD,P,FI,FI,FR 'パワーをデシベルに変換 FOR I=0 TO 64/2-1 D=SQR(P[I])*100 DB[I]=20*LOG(MAX(D/&H8000,0.001),10) NEXT とすると、配列DB[I]に周波数fの成分(強さ)が入ります。Iとfの関係は f=I*サンプリングレート/64 (ただし、Iは0から31(=64/2-1)まで) となります(たぶん(*ノノ)
1そうだね
プレイ済み
返信[6]
親投稿
みなつ tksm372
あ、バイトじゃなくて要素でした。 今、内部バッファの0~959まで取り出し終わっているとしましょう。そうすると、次に取り出すタイミングは、MICPOSが(959+64) MOD 1000=23以上になったときです。 このとき取り出さなければいけない範囲は960...999|0...23の40要素+24要素の64要素です。 そのため2回に分けてMICSAVEして、一つの配列にまとめる必要があります。この処理は、次に取り出すべき開始位置をL、保存先配列をBUFとするとこんな感じです! '前半 SIZE=MIN(BUFSIZE-L,64) MICSAVE L,SIZE,BUF IF SIZE<64 THEN '後半 DIM TMP[0] MICSAVE 0,64-SIZE,TMP COPY BUF,SIZE,TMP,64-SIZE ENDIF L=(L+64) MOD 1000
1そうだね
プレイ済み
返信[5]
親投稿
みなつ tksm372
あとはマイクから勝手に録音されるのですが、録音されたデータは MICSAVE 取得位置,サンプル数,配列変数 で、配列変数にコピーできます。 また、現在どこまで録音されたかがMICPOSというシステム変数から得られます。 MICSTARTでループモードにしてるので、BUFSIZE分だけ録音されると、すぐ先頭から録音が繰り返されます。 いま仮にBUFSIZEが1000だとして、内部の録音バッファを直線的に表すと |0 ... 999|0 ... 999|0 ... 999| ... とつながっているような感じです。 このとき、FFTするため、仮に64バイトずつ切り出したいとすると、面倒なのはは、999|0のとこをまたぐ時です。 (つづく)
1そうだね
プレイ済み
返信[3]
親投稿
みなつ tksm372
帰省から戻ってきてPCのキーボードで書けるようになったのでちょっと解説をば(*ノノ) マイクは、3DSとWiiUでちょっと違うのですが、初期化の時 IF HARDWARE>=2 THEN 'WiiU RATE=32000 'サンプリングレート WiiUは32000Hz固定 BUFSIZE=RATE*32 'サンプリングバッファ WiiUは最大32秒 MICSTART 0,0 '0=GamePad内蔵マイク,0=ループモード ELSE RATE=32738 'サンプリングレート32768Hzに指定 BUFSIZE=RATE*32 'サンプリングバッファ最大4秒 MICSTART 3,3,0 '3=32768Hz,3=符号付16bit,0=ループモード ENDIF という感じにすれば、あとはRATEとBUFSIZEを基準に、3号とBIGで共通に処理できます!
1そうだね
プレイ済み
返信[3]
親投稿
みなつ tksm372
ピアさんありがとうございますっ(*´▽`*) 帰省したついでにちびっこにやらせてみたら、最初はどうも「押してる間だけ上にあがる」と思ってしまうようで「木が越えられない!難しい!」とのことでした。。。うん、そうですよね。。。 やはりドウクツジマのようになるには、名監督が必要なようですw
1そうだね
プレイ済み
返信[1]
親投稿
みなつ tksm372
スミマセンスミマセン(/。\) わたしは、公式ページにあるFFTのさんぷるの可視化プログラムを参考にしました! FFTのマニュアルでは分からなかった部分もかなりあったので、公式サンプルお勧めです( ・∇・)
0そうだね
プレイ済み
返信[11]
親投稿
みなつ tksm372
参加します!(。・ω・。)ゞ
0そうだね
プレイ済み
返信[1]
親投稿
みなつ tksm372
すみません、公開ファイル差し替えにつき、公開キーが変わりました! 公開キー【VKA34EQX】 こちらをダウンロードお願いしまーす(≧∇≦)b
6そうだね
プレイ済み
プレイ日記
みなつ tksm372
VillitさんのSB2Weeksに投稿したワンボタンゲーム、フライング ハトさん に、ステージエディタやレースゲームでお馴染みのゴースト機能などを追加し、大幅パワーアップしました! 公開キー【NKSKXXLY】 ●Aボタンを押しているあいだ、ハトさんが旋回します。ケーキをたくさん取って、ゴールを目指そう! ●当たり判定はハトさん中心の1ドットだけ。背景も見た目通りの判定で、透明部分には当たりません。ぎりぎりを攻めちゃおう! ■yosさん作成の、激ムズステージを含む3つのステージを追加。挑戦者求む!(≧∇≦)b ■ベストスコアをとるとリプレイを保存でき、次回からベスト時のゴーストが表示されます! 自作ステージのファイル(STAGExx.MAP)を公開すれば、自分のステージをみんなに遊んでもらうことができます! 皆さんのオリジナルステージの公開をお待ちしております!(*´▽`*)
24そうだね
プレイ済み
プレイ日記
みなつ tksm372
VillitさんのSB2Weeksに投稿したワンボタンゲーム、フライング ハトさん に、ステージエディタやレースゲームでお馴染みのゴースト機能などが追加され、大幅ぱわーあっぷです!(≧∇≦)b 公開キー【NKSKXXLY】 ●Aボタンを押している間、ハトさんが旋回します。おやつのケーキをできるだけたくさん取って、ゴールを目指しましょう! ●当たり判定は、ハトさんの中心の1ドットだけ。背景も透明部分には当たりません。ぎりぎりを攻めちゃおう! ■yosさん作成の、激ムズステージを含む3つのステージを追加。挑戦者求む! ■内蔵ステージエディタは、yosさんのご協力で、純粋にBGエディタとしても使えるレベルになりました! ■ベストスコアをとるとリプレイを保存でき、次回からベスト時のゴーストが表示されます! 皆さんの自作ステージのステージファイル公開も大歓迎です!(*´▽`*)
13そうだね
プレイ済み
返信[1]
親投稿
みなつ tksm372
3号のほうにも書きましたが、公開ファイル差し替えにつき、公開キーが変わりました! 公開キー【VKA34EQX】 こちらをダウンロードお願いしまーす(≧∇≦)b
1そうだね
プレイ済み
返信[25]
親投稿
みなつ tksm372
3号だとDATとGRP相互読み込み可能というのは知りませんでしたー@@; もしかしたら「3号で保存したファイル」ならBIGでも相互読み出しできるのかなー? ただ、BIGではおそらく無圧縮保存は不可能なので、読み出せても一旦BIGで書き込んでしまうと読めなくなるので実用性はなさそうですが。。。
2そうだね
プレイ済み
返信[10]
親投稿
みなつ tksm372
私もGRPだけとか、DATだけFILESしたいときがありますが、現状ではできませんねー そして、GRPをDATとして読み込んだり、逆にDATをGRPとして読み込もうとするとエラーでプログラムが止まっちゃうので、画像ビューアーみたいに自動的にGRPだけ読み込んで表示するというプログラムを作るときに、ちょっと困りますね(´・ω・`)
7そうだね
プレイ済み
返信[3]
親投稿
みなつ tksm372
おっしゃる通りです
0そうだね
プレイ済み