リスト

このセクションでは、非常に有用なデータ構造であるリストについて見ていきます。以前に我々はランダム化の章でリストについて簡単に触れました。音符のリストから無作為に選んで再生する次のようなコードです。

play choose([50, 55, 62])

ここでは、コードやスケールを表現するためのリストの使い方についても見ていきます。最初に、コードを演奏する方法をおさらいしてみましょう。sleepを使用しない場合、すべての音が同時に演奏されることを思い出してください。

play 52
play 55
play 59

このコードの別の表現方法を見てみましょう。

リストの演奏

1つの方法は、[52, 55, 59]のように、すべての音符をリストに配置することです。使いやすいplay関数は、リストになった音符をどのように演奏するかをすぐに理解します。次のコードを試してみてください。

play [52, 55, 59]

おー、これは読みやすいですね。音符リストの演奏は、通常のオプションのいずれも妨げになりません。

play [52, 55, 59], amp: 0.3

もちろん、MIDIの代わりに伝統的な音符の名前を使うこともできます。

play [:E3, :G3, :B3]

多少の音楽理論の知識を持っている方なら、3オクターブでEマイナーのコードが演奏されたことがわかるでしょう。

リストへのアクセス

もう1つの非常に便利なリストの機能は、リストから情報を取得する機能です。これは少し奇妙に聞こえるかもしれなませんが、本の23ページを開いてくださいと誰かに頼まれることよりも簡単なことです。リストの場合は、インデックス23の要素は何ですか? と尋ねればいいのです。唯一、奇妙なことは、プログラミングのインデックスは通常、1ではなく0から開始されることです。

リストのインデックスは1,2,3と数える代わりに、0,1,2と数えていきます。

それではもう少し詳細にみてみましょう。次のリストを見てください。

[52, 55, 59]

これは特に難しいことは何もありません。リストの2番目の要素は何でしょうか? そう、もちろん55です。簡単ですね。それでは、同様にコンピュータが答えることができるかどうかを見てみましょう。

puts [52, 55, 59][1]

以前にこのようなものを見たことがない場合、少し奇妙に見えるかもしれませんが、大丈夫。私を信頼してください。難しいことはありません。上記の行には、putsという命令、リストの52, 55, 59 、インデックスが[1]の3つの部分があります。まずはじめに、Sonic Piへログの中から答えを出力させるためputsを命令します。次にリストを与えています。そして最後に第2の要素を問い合わせています。角括弧でインデックスを囲む必要があり、カウントは0で始まるので、2番目の要素のインデックスは1となります。下記、みてみましょう。

# indexes:  0   1   2
           [52, 55, 59]

コードputs [52, 55, 59][1]を実行してみてください。ログに55と表示されるでしょう。インデックス1を別のインデックスに変えてみてください。さらに長いlistを与えて、どのように演奏で使えるのか考えてみてください。例えば、どのような音楽の構造が音符の連続として表現されるか? などです。