Skip to content

v0.4.1

Latest

Choose a tag to compare

@tarosay tarosay released this 25 Oct 06:34

圧電ブザーで音を鳴らすブロックが増えました。
手本は MakeCode(micro:bit)の「音楽」です。1 つの音、メロディ、周波数を変えながら鳴らす音が出せます。
UIAPduino と UIAPduino Remap3 の両方に入っています(Issue #4)。

Xcratch 版は、先に v0.4.0 として公開していました。v0.4.1 では、ピアノで弾いたときに
「メロディ」のリストがステージに表示されるようにしました(下の「ピアノで弾いて記録する」)。

使い方 中身
Xcratch 版 下の URL を「拡張機能を追加 → Extension Loader」に入れる インストール不要。Chrome か Edge が要る
デスクトップ版 同梱のインストーラを入れる Scratch Desktop に組み込んだもの。「UIAPduino」と「UIAPduino Remap3」の 2 枚のカードが並ぶ

UIAPduino(PWM 5 本)

https://tarosay.github.io/scratch3-uiapduino/uiapduino.mjs

👉 https://xcratch.github.io/editor/?extension=https://tarosay.github.io/scratch3-uiapduino/uiapduino.mjs

UIAPduino Remap3(PWM 8 本)

https://tarosay.github.io/scratch3-uiapduino/uiapduino-remap3.mjs

👉 https://xcratch.github.io/editor/?extension=https://tarosay.github.io/scratch3-uiapduino/uiapduino-remap3.mjs

🎵 音のブロック

ピン [2 ▼] で (60) を [1 ▼] 拍鳴らす [終わるまで ▼]
ピン [2 ▼] でメロディ [C4 D4 E4 F4 G4 A4 B4 C5] をテンポ [120] で鳴らす [終わるまで ▼]
ピン [2 ▼] で [262] Hz を鳴らし始める
ピン [2 ▼] で [3789] Hz から [3613] Hz へ [2000] ミリ秒で鳴らす [終わるまで ▼]
ピン [2 ▼] で [3789] Hz から [3613] Hz へ [2000] ミリ秒 [ビブラート ▼] で鳴らす [終わるまで ▼]
ピン [2 ▼] を [1 ▼] 拍休む
ピン [2 ▼] の音を止める
すべての音を停止する
ピン [2 ▼] の音が鳴っている
(60) の周波数
[5・A1・A2・A3 ▼] の音量を [255] にする
テンポを [120] にする / テンポを [20] ずつ変える / テンポ
  • 圧電ブザー(パッシブ型)を、PWM を出せるピンと GND の間につなぎます。
    電圧をかけるだけで鳴るアクティブ型では、音の高さは変わりません
  • (60) をクリックするとピアノが開きます。キーを押すと、その音がパソコンで鳴ります
  • 鳴らし方は「終わるまで」「バックグラウンドで一度だけ」「バックグラウンドでずっと」から選べます
  • 音の長さと切り替えは基板が受け持つので、音と音の間に隙間ができず、テンポも揺れません

メロディの書き方

MakeCode と同じ書き方です。音はスペースで区切り、C4 が真ん中のド、- が休符です。
例(チューリップ):

C4 D4 E4 - C4 D4 E4 - G4 E4 D4 C4 D4 E4 D4 -

長さは :数字 で書きます(単位は 4 分の 1 拍。:4 で 1 拍、:2 で半拍)。
くわしい決まりは README の「メロディの書き方」にあります。

ピアノで弾いて記録する

ピアノ (60) で弾いた音
ピアノで弾いた音を消す
[C4 D4 E4] でメロディを入れ替える
[C4 D4 E4] をメロディの後ろに足す
[-] をメロディの [1] 番目に入れる

ピアノ (60) で弾いた音 のピアノで押した音は、「メロディ」という名前のリストに 1 音ずつ入ります。
弾くと、「メロディ」のリストがステージに表示されます。
休符は、ステージのリストの表示で行を割り込ませて(Enter)- と書きます。
メロディ のブロックの文字の欄に「メロディ」のリストをはめれば、そのまま鳴ります。

  • 「メロディ」のリストが無ければ、拡張機能が作ります
  • オクターブを変える矢印を押したときは、記録しません

知っておいてほしいこと

  • 同時に鳴らせるのは 2 音までです。 5 / A1 / A2 / A3 が 1 組、
    2(Remap3 では 3 / 9 / TX / RX)がもう 1 組で、組ごとに 1 音です。
    和音は、組の違うピンにブザーを 1 つずつつなぐと鳴ります
  • 音のブロックと、サーボ [ ] を [ ] 度にする・ピン [ ] の出力を [ ] にする は、同時には使えません。
    後から使ったほうが動き、先のほうは止まります
  • 音量は組ごとに 1 つです。停止ボタンを押すと 255 に戻ります
  • 「バックグラウンドでずっと」で繰り返せるのは 16 音までです

📶 接続の ようす

接続の ようす

チェックを入れると、ステージに「つながっている」か「切れている」が出ます。
Xcratch 版はページを読み込み直すと基板との接続が切れるので、気づくための表示です。

🔧 書き込み直してください

プロトコルが 9 になりました。v0.3.1 までのスケッチのままでは繋がりません。
繋ぐと「書き込み直してください」の案内が出て、ブロックの代わりに書き込みのブロックが出ます。

  1. 基板のボタンを押しながら USB ケーブルを挿し、すぐにボタンを離す
  2. パレットの末尾にある スケッチ (プロトコル 9) を書き込む をクリックする

UIAPduino のカードで繋いでいれば UIAPduino の、Remap3 のカードで繋いでいれば
Remap3 のスケッチが焼かれます。

Xcratch 版の v0.4.0 で焼いた基板は、焼き直さずにそのまま繋がります。 スケッチは v0.4.0 と同じです。

Xcratch 版とデスクトップ版の両方を使う場合は、両方を v0.4.0 以降にしてください。
v0.4.0 以降で焼いた基板は v0.3.1 のデスクトップ版には繋がらず、
v0.3.1 のデスクトップ版で焼き直すとプロトコル 8 に戻ります。

⚠ デスクトップ版は入れ直してください

Xcratch 版は URL が同じなので、開き直すだけで新しくなります。
デスクトップ版は拡張機能とスケッチをアプリに組み込んであるので、同梱のインストーラで
入れ直さないと、音のブロックが出ず、古いスケッチが焼かれます。

同梱物

ファイル 内容
Scratch-UIAPduino-3.29.1-Setup.exe インストーラ
Scratch-UIAPduino-3.29.1-portable.zip インストール不要版

スケッチは同梱していません。 拡張機能がスケッチを持っていて、ブロックがそれを焼きます。

v0.3.1 からの変更

  • 音のブロックを追加(UIAPduino・Remap3 の両方。スケッチも変わった)
  • 接続の ようす を追加
  • プロトコルが 9 に(書き込み直しが要る)
  • 音のブロックと、サーボ・アナログ出力を排他に
  • カードのバージョン表示が (v0.4.1) に
  • 公開ページに「お知らせ」を追加
  • ほかのブロックの動き・名前・引数は変更なし

Xcratch 版の v0.4.0 からは、ピアノで弾いたときに「メロディ」のリストがステージに表示されるようになっただけです。

制限

  • Windows のみです。macOS / Linux 版はありません
  • Chrome か Edge が要ります。 Firefox と Safari には WebHID がありません
  • Linux で使う場合は udev のルール追加が要ります(README を参照)
  • USB を抜いても自動では再接続しません。挿し直したら「!」をクリックするか、
    「つなぐ」ブロックをもう一度実行してください

動作確認環境

Windows 11 / Node.js v16.20.0 / Electron 15.3.1 / Chrome・Edge(Xcratch 版)

ボードパッケージ UIAP_HID:ch32v 1.2.15。Flash 使用量は
UIAPduino が 14444 / 16384 バイト (88%)、Remap3 が 15048 / 16384 バイト (91%)、
RAM はどちらも 1056 / 2048 (51%) です。

Xcratch 版の UIAPduino で、音のブロックを実機で確認しています
(鳴らす・メロディ・止める・ピアノの記録・音量・エフェクト・リストの表示)。
デスクトップ版でも、音のブロックを実機で確認しています。
Remap3 は、ブロックのメニューの表示を確認しています。