User Tools

Site Tools

한국어

cubloc:sound_bytes:index

Sound Bytes

This application note will demonstrate a few examples that generate sound with the Cubloc. Sound can be generated using the Cubloc's I/O port or PWM channel. With a PWM channel, sounds of varying frequency can be generated.

Const Device = CB220
Dim PLAYSTR As String
Low 5
Freqout 0,5236 'Create a sound with frequency of 440Hz
Delay 500 'Delay
Pwmoff 0 'Stop Sound by turning off PWM

The example above shows the CB220's PWM channel 0 of CB220 being used with the FreqOut command to produce a sound.

With commands like FreqOut and Delay, simple sounds can be created.

Const Device = CB220
Low 5
FreqOut 0,4403
Delay 200
FreqOut 0,3703
Delay 200
FreqOut 0,3114
Delay 200
FreqOut 0,2202
Delay 200
PwmOff 0

By changing the frequencies, a simple program can be made that plays musical notes.

Octave 4 Octave 5
A B C D E F G A B C D E F G
A B C D E F G H I J K L M N

To express one note, 2 characters are used: the first character is for the frequency of the note and second character is for the length of the note.

Const Device = CB220
Dim PLAYSTR As String
Low 5
PLAYSTR = "G5E3E3G3E3C5"
PLAY 0,PLAYSTR
Do
Loop
End
 
Sub PLAY(CH As Byte,NOTE As String)
  Dim PL As Byte
  Dim CHAR As Byte
  Const Integer PLAYTABLE = (5236,4665,4403,3923,3495,3299,2939,2618,2333,2202,1961,1747,1649,1469,0)
  For PL=1 To Len(NOTE) Step 2
    CHAR = Asc(Mid(NOTE,PL,1)) - &H41
    FreqOut CH,PLAYTABLE(CHAR)
    CHAR = Asc(Mid(NOTE,PL+1,1)) - &H30
    Delay CHAR*100
  Next
  PwmOff CH
End Sub

When using the PWM port for other purposes, the FreqOut command cannot be used. To get around this limitation, any regular I/O port can be used to create sound. The following example shows how to make an alert sound with I/O port P4. This program uses the Reverse and UDelay commands to alternate the I/O port between logic-high and logic-low

Const Device = CB220
Low 4
Do
  SOUND 4,110,60
  SOUND 4,80,60
  SOUND 4,40,160
Loop
End
 
Sub SOUND(PN As Byte,FR As Byte,LN As Byte)
  Dim SI As Byte,SJ As Byte
  For SJ = 0 To LN
    Reverse PN
    UDelay FR
    Reverse PN
    UDelay FR
  Next
End Sub
cubloc/sound_bytes/index.txt · Last modified: 2016/04/14 11:07 (external edit)