いくつかプログラムを作ってみましたが、音がならないのは少し味気ないものですね。

SMILE BASICには効果音が登録されていて、命令ひとつで鳴らすことができます。

その命令はBEEPです。

BEEP [効果音番号][,周波数][,音量][,パンポット]

効果音番号は0~133で
どんな音があるかは
Image07
この画面の真ん中下にあるSMILEという部分をタッチしてみましょう。

すると
下画面に
2015010908

表示されました。

十字キーで動かして、Aボタンを押してみましょう。

いろいろな音が鳴りますね。
このとき、左に書いてある数字が効果音番号です。

周波数は、-32768~32767まで
100で半音ということなので、0が通常の高さ
ここから-100すると、半音下の効果音がなります。
+100で半音上の効果音が鳴ります。

音量は0~127
0だと無音になる感じです。

パンポットは0~127で
0だと左側、127で右側からしか聞こえなくなります。
中央が64になります。

では、サンプルを作ってみましょう。

使っている命令は、いままで学習した内容です。
数値の頭に0をつけるには? FORMAT$

プログラムの好きなところを実行させる GOTO

プログラムの好きなところを実行するその2 GOSUB RETURN

実行を終わらせるには END

ボタンの入力を受け付けるには? BUTTON VSYNC

繰り返し処理をしたいその2 WHILE~WEND

文字の表示位置を指定するには? LOCATE

' ラベル 10文字ごとに表示するように間隔をあけている
LBL$=" こうかおんNo  しゅうはすう   おんりょう     ぱん "
' 値
VAL$=""
' 効果音番号を保持する変数
BENO=0
' 周波数を保持する変数
BEHz=0
' 音量を保持する変数
BEVOL=64
' パンポットを保持する変数
BEPAN=64
' 変更位置変数 0:効果音番号 1:周波数 2:音量 3:パンポット
HENPOS=0
' 終了フラグ
ENDFLG=0
' ボタン変数
BTN=0
' カウント変数
CNT=0
' 値表示用変数
VIEW$=""
' 画面のクリア
ACLS

' 6行目に位置を変更する

LOCATE 0, 5
' LBL$の中身を表示
PRINT LBL$

WHILE ENDFLG == 0
  ' Bボタンが押されたら終わるようにする
  GOSUB @GETBTN

  ' 表示位置の設定
  LOCATE 0, 6
  ' 一旦前の表示を消す
  PRINT "                                        "
  ' 表示位置の設定
  LOCATE 0, 7
  ' 一旦前の表示を消す
  PRINT "                                        "
  
  ' 表示内容のフォーマット
  VIEW$=FORMAT$("%8D%8D%8D%8D", BENO, BEHZ, BEVOL, BEPAN)
  ' 表示位置の設定
  LOCATE 0, 6
  ' 現在の値の表示
  PRINT VIEW$
  ' 表示位置の設定
  LOCATE HENPOS * 8 + 7,  7
  ' 現在動かせる内容の位置を表示
  PRINT "↑"

  ' カウンタを1UP
  CNT = CNT + 1
  ' 60カウントしたら
  IF CNT == 60 THEN
    ' 効果音を鳴らす
    BEEP BENO, BEHz, BEVOL, BEPAN
    ' カウンタを0に戻す
    CNT = 0
  ' 判定終わり
  ENDIF

' 繰り返し終わり
WEND

' 終了処理へ
GOTO @END


' ボタン押下判定処理
@GETBTN
BTN = BUTTON()

' 上が押された場合
IF (BTN AND 1) == 1 THEN
  ' 値増加用処理
  GOSUB @VALUP
' 判定終わり
ENDIF
  
' 下が押された場合
IF (BTN AND 2) == 2 THEN
  ' 値下降用処理へ
  GOSUB @VALDOWN
' 判定終わり
ENDIF

' 左が押された場合
IF (BTN AND 4) == 4 THEN
  ' 値の変更できる項目の変更 ↑が左に1つ移動
  HENPOS = HENPOS - 1
  ' ↑が一番左にいるなら
  IF HENPOS < 0 THEN
    ' 動かさない
    HENPOS = 0
  ' 判定終わり
  ENDIF
' 判定終わり
ENDIF

' 右が押された場合
IF (BTN AND 8) == 8 THEN
  ' 値の変更できる項目の変更 ↑が右に1つ移動
  HENPOS = HENPOS + 1
  ' ↑が一番左にいるなら
  IF HENPOS > 3 THEN
    ' 動かさない
    HENPOS = 3
  ' 判定終わり
  ENDIF
' 判定終わり
ENDIF

' Bボタンが押された場合
IF (BTN AND 32) == 32 THEN
  ' 終了フラグに1を設定
  ENDFLG=1
END IF

' 垂直同期
VSYNC

' 元の位置に戻る
RETURN

' 値増加用処理
@VALUP
' 位置が効果音番号の場合
IF HENPOS == 0 THEN
  ' 効果音番号を1UP
  BENO = BENO + 1
  ' 効果音番号が133を超えていた場合
  IF BENO > 133 THEN
    ' 効果音番号を133に設定
    BENO = 133
  ' 判定終わり
  ENDIF
' 判定終わり
ENDIF

' 位置が周波数の場合
IF HENPOS == 1 THEN
  ' 周波数を100UP
  BEHz = BEHz + 100
  ' 周波数が32767を超えていた場合
  IF BEHz > 32767 THEN
    ' 周波数を32767に設定
    BEHz = 32767
  ' 判定終わり
  ENDIF
' 判定終わり
ENDIF

' 位置が音量の場合
IF HENPOS == 2 THEN
  ' 音量を1UP
  BEVOL = BEVOL + 1
  ' 音量が127を超えていた場合
  IF BEVOL > 127 THEN
    ' 音量を127に設定
    BEVOL = 127
  ' 判定終わり
  ENDIF
' 判定終わり
ENDIF

' 位置がパンの場合
IF HENPOS == 3 THEN
  ' パンを1UP
  BEPAN = BEPAN + 1
  ' パンが127を超えていた場合
  IF BEPAN > 127 THEN
    ' パンを127に設定
    BEPAN = 127
  ' 判定終わり
  ENDIF
' 判定終わり
ENDIF

' 元の位置に戻る
RETURN

' 値下降処理
@VALDOWN
' 位置が効果音番号の場合
IF HENPOS == 0 THEN
  ' 効果音番号を1UP
  BENO = BENO - 1
  ' 効果音番号が0より小さい場合
  IF BENO < 0 THEN
    ' 効果音番号を0に設定
    BENO = 0
  ' 判定終わり
  ENDIF
' 判定終わり
ENDIF

' 位置が周波数の場合
IF HENPOS == 1 THEN
  ' 周波数を100DOWN
  BEHz = BEHz - 100
  ' 周波数が-32768より小さい場合
  IF BEHz < -32768 THEN
    ' 周波数に-32768を設定
    BEHz = -32768
  ' 判定終わり
  ENDIF
' 判定終わり
ENDIF

' 位置が音量の場合
IF HENPOS == 2 THEN
  ' 音量を1DOWN
  BEVOL = BEVOL - 1
  ' 音量が0より小さい場合
  IF BEVOL < 0 THEN
    ' 音量を0に設定
    BEVOL = 0
  ' 判定終わり
  ENDIF
' 判定終わり
ENDIF

' 位置がパンの場合
IF HENPOS == 3 THEN
  ' パンを1DOWN
  BEPAN = BEPAN - 1
  IF BEPAN < 0 THEN
    BEPAN = 0
  ' 判定終わり
  ENDIF
' 判定終わり
ENDIF

' GOSUBに戻る
RETURN

' 終了処理用ラベル
@END
' 表示位置を初期化
LOCATE 0,0
' 終了
END
2015010902
2015010903
2015010904
2015010905
2015010906

かなり長くなってしまいました。
それぞれの判定部を配列にするとかなり短くなりますので、挑戦してみてはいかがですか?

配列については
配列って何?

では、実行すると
2015010907
こんな画面が表示され、音がなります。

矢印の位置がこうかおんNOなので、ここで、上下すると音の種類が変わります。

右ボタンを押すと、矢印の位置がしゅうはすうにかわります。
さらに右をおすと、音量、パン、と変わっていきます。
左を押すと左に矢印が動きます。

その位置で、上下すると、その値が変わっていきます。

Bボタンを押すと終了です。