マイク V2
このオブジェクトを使うと、micro:bit V2 に内蔵のマイクにアクセスできます。マイクは音に反応するために使えます。マイク入力は、マイクを使っているときに点灯するボードの前面のマイクアクティビティ LED の横にあります。
サウンドイベント
マイクは、音の振幅と波長に基づいて事前定義されたサウンドイベントに応答できます。
これらのサウンドイベントは SoundEvent クラスのインスタンスによって表され、次の microbit.SoundEvent 変数を介してアクセスできます。
microbit.SoundEvent.QUIET: 発話やBGMのように「うるさくなった」(loud)から「静かになった」(quiet)への変化を表します。microbit.SoundEvent.LOUD: 拍手や叫び声のように「静かになった」(quiet)から「うるさくなった」(loud)への変化を表します。
関数
- microbit.microphone.current_event()
記録されている最新のサウンドイベントを取得します。
- 戻り値:
サウンドイベント。
SoundEvent('loud')またはSoundEvent('quiet')が返ります。
- microbit.microphone.was_event(event)
直前の呼出しから少なくとも一度は指定のサウンドイベントが発生したかをチェックします。
これは戻る前にサウンドイベントの履歴をクリアします。"
- パラメータ:
event -- チェックするサウンドイベント。
SoundEvent.LOUDまたはSoundEvent.QUIETを指定します。- 戻り値:
直前の呼出しから少なくとも一度は指定のサウンドイベントが発生した場合は
True、さもなければFalseを返します。
- microbit.microphone.is_event(event)
直近にサウンドイベントが発生したかをチェックします。
これはサウンドイベントの履歴をクリアしません。
- パラメータ:
event -- チェックするサウンドイベント。
SoundEvent.LOUDまたはSoundEvent.QUIETを指定します。- 戻り値:
指定のサウンドイベントが直近に発生した場合は
True、さもなければFalseを返します。
- microbit.microphone.get_events()
サウンドイベントの履歴をタプルで取得します。
これは戻る前にサウンドイベントの履歴をクリアします。"
- 戻り値:
イベント履歴のタプル。直近のイベントが最後尾になっています。
- microbit.microphone.set_threshold(event, value)
サウンドイベントの閾値を設定します。
音量が(「静か: quiet」から「大きい: loud」へ)指定の閾値を上回ると、イベント
SoundEvent.LOUDが発生し、(「大きい: loud」から「静か: quiet」へ)閾値を下回ると、イベントSoundEvent.QUIETが発生します。SoundEvent.LOUD値がSoundEvent.QUIET``よりも低く設定されている場合、「静か」の閾値は「大きい」の閾値より1ユニット低く設定されます。 ``SoundEvent.QUIETの値がSoundEvent.LOUDよりも高く設定されている場合、「大きい」のしきい値は「静か」のしきい値より1ユニット高く設定されます。- パラメータ:
event --
SoundEvent.LOUDまたはSoundEvent.QUIETなどのサウンドイベント。value -- 0 から 255 の範囲の閾値レベル。範囲外の値を指定しても範囲内に制限されます。
- microbit.microphone.sound_level()
音圧レベルを取得します。"
- 戻り値:
音圧レベルを 0 から 255 までの範囲で返します。"
サンプルコード
マイクAPIのいくつかの機能を実行するサンプルコード:
# マイクの基本テストです。このテストは、ボタンAが押され、「うるさくなった」や
# 「静かになった」 *ときに* 表示を更新し、結果を表示します。ボタンBでは、
# 「うるさくなった」や「静かになった」 *ことがあれば* 表示を更新し、結果を表示します。
# ゆさぶった時には、最後に発生したサウンドイベントを表示します。シェイクする前に、
# 「うるさくなった」や「静かになった」を起こしながらこのテストを試してください。\m
from microbit import *
display.clear()
sound = microphone.current_event()
while True:
if button_a.is_pressed():
if microphone.current_event() == SoundEvent.LOUD:
display.show(Image.SQUARE)
uart.write('isLoud\n')
elif microphone.current_event() == SoundEvent.QUIET:
display.show(Image.SQUARE_SMALL)
uart.write('isQuiet\n')
sleep(500)
display.clear()
if button_b.is_pressed():
if microphone.was_event(SoundEvent.LOUD):
display.show(Image.SQUARE)
uart.write('wasLoud\n')
elif microphone.was_event(SoundEvent.QUIET):
display.show(Image.SQUARE_SMALL)
uart.write('wasQuiet\n')
else:
display.clear()
sleep(500)
display.clear()
if accelerometer.was_gesture('shake'):
sounds = microphone.get_events()
soundLevel = microphone.sound_level()
print(soundLevel)
for sound in sounds:
if sound == SoundEvent.LOUD:
display.show(Image.SQUARE)
elif sound == SoundEvent.QUIET:
display.show(Image.SQUARE_SMALL)
else:
display.clear()
print(sound)
sleep(500)