マイク 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 を返します。 was_event() は戻る前にサウンドイベントの履歴をクリアします。
microbit.microphone.is_event(event)
  • event: サウンドイベント。 SoundEvent.LOUD または SoundEvent.QUIET
  • 戻り値: 直前の呼出しから発生した最新のサウンドイベントが指定のものであれば true 、さもなければ false を返します。サウンドイベントの履歴はクリアしません。
microbit.microphone.get_events()
  • 戻り値: サウンドイベント履歴のタプル。最新のものが最後にリストされます。 get_events() は戻る前にサウンドイベント履歴をクリアします。
microbit.microphone.set_threshold(event, value)
  • event: サウンドイベント。 SoundEvent.LOUD または SoundEvent.QUIET
  • value: 0-255 の範囲の閾値レベル。たとえば set_threshold(SoundEvent.LOUD, 250) は音が非常に大きい場合にのみトリガされます(>= 250)。
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)