上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.-- -- l スポンサー広告 l top
(Faebookでのご指摘によると、PWM機能が搭載されているのは1.0.2 beta11から1.1.0 beta1ということです。この記事ではichigojam-1.1b5_jpmnをFacebook ichigojamグループからダウンロードして使っています。)

PWMのパルス幅の方を制御してエンベロープ的な強弱制御を追加してみました。

ハードは前回と同じで、OUT3、OUT5に圧電スピーカを繋ぎます。


原理は簡単で、いままではPWM命令を発行する際にPWM周期の1/2または1/4を固定として与えていたところを、変動させるようにしただけです。

エンベロープ有る無しで違いが分かる動画にしましたのでご覧ください。
違いが分かるように曲は打楽器系のリズムが入るボレロにして見ました。主旋律は強弱を微妙に振るようにし、リズムは急激に弱くなるように設定しました。



ぽこぽこ音がするのは多分PWM周期切り替えのところで中途半端なパルスが出ているのではないかと思いますが、対処方法が思いつきません。多分フィルタをかければ消えるのでしょうが、できればハードは追加したくないし。。。。

「スポンサードリンク」

style="display:block"
data-ad-client="ca-pub-0620260288102702"
data-ad-slot="9773401572"
data-ad-format="auto">




プログラムは以下の通りです。まずは曲データ。
リズムパートについては、データ254を検出するとデータの頭に戻るようにしました。
これで同じリズムを繰り返しますので、メモリを節約できます。

10 let[0],1,909,858,810,764,722,681,643,607,573,541
20 LET [11],510,482,455,429,405,382,361,341,321,303
30 LET [21],286,270,255,241,227,215,202,191,180,170
40 LET [31],161,152,143,135,128,120,114,107,101,96
50 LET [41],90,85,80,76,72,68,64,60,57,54,51,48
60 POKE #700,0,72,0,72,28,36,27,6,28,6,30,6,28,6,27,6,25,6,28,12
70 POKE #714,28,6,25,6,28,36,27,6,28,6,25,6,23,6,20,6
80 POKE #724,21,6,23,54,21,6,20,6,18,6,20,6,21,6,23,6
90 POKE #734,25,6,23,54,25,6,27,6,25,6,23,6,21,6,20,6
100 POKE #744,18,6,20,6,18,6,16,24,16,6,18,6,20,12,21,12
110 POKE #754,18,24,23,48,255,255
200 POKE #780,23,12,23,4,23,4,23,4,23,12,23,4,23,4,23,4,23,12,23,12,254,255


次が演奏プログラム。演奏中はVideo0で表示を止めるようにしました。
これで数倍速くなりますのでエンベロープ制御がスムーズになります。

5 CLS:?"*** ボレロ ***":?" ":?" 1:フツウ":?" 2:エンベロープ・":?""
6 INPUT " ドチラ??カ ? ",P
7 IF P=1 P=60 ELSE P=50
10 A=#700:B=#780:C=0:D=0:E=0:F=0:V=1:VIDEO 0
15 '********* PART1******
20 IF A=0 GOTO 120
30 IF D>0 GOTO P
40 C=PEEK(A):D=PEEK(A+1):A=A+2
50 IF C=255 A=0:PWM 3,1,1:PWM5,1,1:GOTO210 ELSE PWM3,[C]/2+1+V,[C]:V=-V
60 D=D-1:IF D=1 :PWM 3,1,1
115 '********* PART2 **********
120 IF B=0 GOTO 200
130 IF F>0 GOTO P+100
140 E=PEEK(B):F=PEEK(B+1):B=B+2:IF E<100 G=[E]/4
150 IF E=254 B=#780:GOTO 140 ELSE PWM5,G,[E]:G=G/10
160 F=F-1:IF F=1 :PWM 5,1,1
200 WAIT 2:IF A>0 OR B>0 GOTO 20
210 VIDEO 1:GOTO 5



和音、エンベロープができたら、音色制御もやってみたいところですが、さすがにソフトだけでは難しいですね。


2015.10.09 Fri l ICHIGOJAM l コメント (0) l top

コメント

コメントの投稿












上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。