2015年3月22日日曜日

ZYBO 21 ( I2S コントローラの作成 12 )

今月は本業が忙しく怒涛の3月だ。

I2SコントローラIPだが、割り込み機能は確認できたので、2週間前にここまでのsnapshotをGitHubにアップした。

my_I2S_20150307.zip

さて、今日はI2Sコントローラに追加してみたいなぁ−と思いながら忙しくて出来なかった機能を追加してみた。その機能とは逆再生機能だ。このI2SコントローラIPのAXI DMACはDRAMからシングルアクセスでデータを1サンプルずつ読んでくる。つまり、ポインタは+1づつしか更新されないので、これを-1にするモードを追加すれば容易に逆再生機能を追加できる。逆再生機能を追加して何がしたいかというと、ターンテーブルにのったレコードを指で前後に擦ってつくる音楽があるが、その再生モードを実現してみたいなと思ったからだ。スクラッチミュージックとか言ったっけ?

シャッシャカ、シャッシャッシャー
Hey!  Yo !
俺はオキナワうまれー、オキナワ育ちー
地元のオタクはだいたいトモダチ! (*1)
シャッシャカ、シャッシャッシャー

*1 ウソです。 -_-;;

・・・見たいな。
そんなプレイが楽しめるかな?なんて思った。
でも、よく考えてみると逆再生だけでは実現できないようにも思える。再生速度も変調できる必要があるかも知れないのだが、まずは逆再生機能を入れてみた。

RTLの方はI2S_pb_dma.vのポインタ操作部を以下のように変更した。
pb_rvsは追加した再生方向を制御するポートで、これが0の時に逆再生モードになる。
再生方向はスイッチ等で動的に変更できる必要がある。
今回はZYBOのPMOD(JE)の10番品に押しボタンスイッチを接続し、それで操作できるようにした。

で、動かしてみた。

うーむ。。やはり、速度変調も必要かな。

現行デザインにもDFT IPは組み込まれているので、逆再生時のスペクトルも見ることができる。
例えば、この曲の場合は・・・
スペクトル表示はこんなふうになる。
これはこれで、面白い・・・気がする。


0 件のコメント:

コメントを投稿

自作CPUで遊ぶ 25

まだ制御ソフトが完成していないので今まではスピンドルを移動するために一々簡単なプログラムを書いて移動させていたのだが、非常に面倒なのでCNCペンダント的なものを作ることにした。 右側の縦に2つ並んでいるスイッチ...