Praatのスクリプト機能を使って簡単な音楽を流す方法
概要
音声分析ソフトPraatのスクリプト機能を使い、簡単な音楽を合成して、再生する方法を紹介する。
説明
音声分析ソフトの Praat では、簡単な音を合成する機能が付いている。また、簡単なスクリプト機能もあるので、これらの機能を組み合わせて簡単な音楽を流すことができる。
後述のスクリプトの1行目においては、文字で音譜を示してある。ここを変えれば別の音楽にすることも可能だ。
スクリプト
以下のスクリプトを実行すると「きらきら星」の音楽が流れる(実際に流れる音声は以下を参照)。
なお、このスクリプトの仕様上、実行し終わったときに、合成された音楽以外の Praat Object はすべて消えるので注意されたい。
musicNotes$ = "ccggaagxffeeddcxggffeedxggffeedxccggaagxffeeddcx"
# Create a mute sound
do("Create Sound from formula...", "x", 1, 0.0, 0.5, 44100, "0")
# Create sounds (c-b)
@makeSound: 262, "c"
@makeSound: 290, "d"
@makeSound: 330, "e"
@makeSound: 349, "f"
@makeSound: 392, "g"
@makeSound: 440, "a"
@makeSound: 494, "b"
musicLength = length(musicNotes$)
# Copy sounds to create the music
for i from 1 to musicLength
note$ = mid$(musicNotes$, i, 1)
selectObject: "Sound " + note$
do("Copy...", "note" + string$(i))
endfor
# Concatenate sounds
for i from 1 to musicLength
if i== 1
selectObject: "Sound note" + string$(i)
else
plusObject: "Sound note" + string$(i)
endif
endfor
do("Concatenate")
do("Rename...", "result")
# Play the music
do("Play")
# Remove work files
select all
minusObject: "Sound result"
do("Remove")
# Subroutine
procedure makeSound: frequency, soundName$
do("Create Sound as pure tone...", soundName$, 1, 0.0, 0.5, 44100, frequency, 0.2, 0.01, 0.01)
endproc