マイク V2

このオブジェクトを使うと、micro:bit V2 に内蔵のマイクにアクセスできます。マイクは音に反応するために使えます。マイク入力は、マイクを使っているときに点灯するボードの前面のマイクアクティビティ LED の横にあります。

micro:bit with microphone LED on

サウンドイベント

マイクは、音の振幅と波長に基づいて事前定義されたサウンドイベントに応答できます。

これらのサウンドイベントは 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)