0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[EV3DEV Python] Soundクラス

Last updated at Posted at 2020-01-13

Sound(サウンド)

ビープ音、wavサウンドの再生、音声合成に関するクラス

ビープ

・beep()

ビープ音鳴らすだけ(Linuxのbeepコマンドと同じ動作)

Beep1.py
# !/usr/bin/env python3
# Beep1.py ビープ音鳴らすだけ

from ev3dev2.sound import Sound
# インスタンス化
my_sound = Sound()
# ビープ音を鳴らす
my_sound.beep()

・beep(args='',play_type=0)

指定したオプションでビープ音を鳴らす

引数 説明 デフォルト値
args(string) beepコマンドの引数 ''
play_type 再生方法(Sound.PLAY_WAIT_FOR_COMPLETE/Sound.PLAY_NO_WAIT_FOR_COMPLETE/Sound.PLAY_LOOP)※詳細は後述 0
Beep2.py
# !/usr/bin/env python3
# Beep2.py 音の高さを指定してビープ音を鳴らす
from ev3dev2.sound import Sound
# インスタンス化
my_sound = Sound()
# ビープ音を鳴らす(周波数10000Hzで2000ms(2秒)間)
my_sound.beep(args="-f 10000 -l 2000")

※beepコマンドの引数については各自で調べてください。

トーン

・tone([(frequency,length,duration),…],play_type=0)

指定した高さ、長さ、間隔でリストの先頭からトーン音を鳴らしていく。

引数 説明 デフォルト値
frequency(float) 音の高さ(Hz)(例 ド:523.251)
length(float) 音の長さ(ミリ秒)
duration(float) 次の音までの時間(ミリ秒)
play_type 再生方法(Sound.PLAY_WAIT_FOR_COMPLETE/Sound.PLAY_NO_WAIT_FOR_COMPLETE/Sound.PLAY_LOOP)※詳細は後述 0
Tone.py
# !/usr/bin/env python3
# Tone.py リストのトーン音を鳴らす

from ev3dev2.sound import Sound
# インスタンス化
my_sound = Sound()
# トーンを再生(ドレミファソラシドを0.1秒間隔で0.5秒ずつ流す)
my_sound.tone([(523.251,500,100),(587.330,500,100),(659.255,500,100),
(698.456,500,100),(783.991,500,100),(880.0,500,100),
(987.767,500,100),(1046.502,500,100)])

・play_tone(frequency,length,duration=0.0,volume=100,play_mode=0)

指定した周波数、長さ,音量で音を一つだけ鳴らす

引数 説明 デフォルト値
frequency(float) 音の高さ(Hz)(例 ド:523.251)
length(float) 音の長さ(秒)
duration(float) 次の音までの時間(秒) 0.0
volume(int) 音量(%) 100
play_type 再生方法(Sound.PLAY_WAIT_FOR_COMPLETE/Sound.PLAY_NO_WAIT_FOR_COMPLETE/Sound.PLAY_LOOP)※詳細は後述 0
Tone2.py
# !/usr/bin/env python3
# Sample3.py ビープ音鳴らすだけ(音の高さ,長さを指定)

from ev3dev2.sound import Sound
# サウンドクラスのインスタンス化
my_sound = Sound()
# トーンを再生(ドの音を0.5秒間再生)
my_sound.tone(523.251,500)

・play_note(note,length,volume,play_type)

指定した音階、長さ、音量、プレイタイプで音を鳴らす

引数 説明 デフォルト値
note(String) 米・英方式の音階表記(例 ド:C )
length(float) 音の長さ(秒)
volume(int) 音量(%) 100
play_type 再生方法(Sound.PLAY_WAIT_FOR_COMPLETE/Sound.PLAY_NO_WAIT_FOR_COMPLETE/Sound.PLAY_LOOP)※詳細は後述 0
play_note.py
# !/usr/bin/env python3
import time
from ev3dev2.sound import Sound

# インスタンス化
my_sound = Sound()

# ”C3"の音を30%の音量で2秒間流す
my_sound.play_note("C3",2,30)

WAVサウンドの再生

・play_file(wav_file,volume=100,play_type=0)

wav形式のサウンドファイルを指定された音量で再生する

引数 説明 デフォルト値
wav_file(string) サウンドファイルのパス
volume(int) 音量 100
play_type 再生方法(Sound.PLAY_WAIT_FOR_COMPLETE/Sound.PLAY_NO_WAIT_FOR_COMPLETE/Sound.PLAY_LOOP)※詳細は後述 0
play_wav_sound.py
# !/usr/bin/env python3
import time
from ev3dev2.sound import Sound

# インスタンス化
my_sound = Sound()

# wavサウンドを再生
my_sound.play_file("WAVファイルのパス",50)

音声合成

・speak(text,espeak_opts="-a 200 -s 130",volume=100,play_type=0)

指定されたtextを読み上げる。内部ではespeakコマンド呼び出している

引数 説明 デフォルト値
text(string) 読み上げるテキスト
espeak_opts(string) espeakコマンドに渡す引数 "-a 200 -s 130"
volume(int) 音量(%) 100
play_type 再生方法(Sound.PLAY_WAIT_FOR_COMPLETE/Sound.PLAY_NO_WAIT_FOR_COMPLETE/Sound.PLAY_LOOP)※詳細は後述 0
Speak.py
# !/usr/bin/env python3
import time
from ev3dev2.sound import Sound

# インスタンス化
my_sound = Sound()

# 話す
my_sound.speak("Hello World")

再生方法(play_type)について

再生方法 意味
Sound.PLAY_WAIT_FOR_COMPLETE 音が鳴り終わるまで待機する
Sound.PLAY_NO_WAIT_FOR_COMPLETE 音が鳴り終わるまで待機しないで、音が鳴り始めたら次の処理を行う
Sound.PLAY_LOOP プログラムが終了するまで繰り返す

デフォルトではSound.PLAY_WAIT_FOR_COMPLETEが指定されているので特にしていなければ音が鳴り終わるまで次の処理を行わない。
※リファレンス上ではbeep()でもSound.PLAY_LOOPを指定できると書かれているがソースコード上は実装されていないため実際にループできるのはplay_file()speak()のみ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?