29
29
"""
30
30
import time
31
31
import sys
32
- try :
33
- import audioio
34
- except ImportError :
35
- pass # not always supported by every board!
36
32
import array
37
33
import digitalio
38
34
import pulseio
35
+ try :
36
+ # RawSample was moved in CircuitPython 5.x.
37
+ if sys .implementation .version [0 ] >= 5 :
38
+ import audiocore
39
+ else :
40
+ import audioio as audiocore
41
+ # Some boards have AudioOut (true DAC), others have PWMAudioOut.
42
+ try :
43
+ from audioio import AudioOut
44
+ except ImportError :
45
+ from audiopwmio import PWMAudioOut as AudioOut
46
+ except ImportError :
47
+ pass # not always supported by every board!
39
48
40
49
def tone (pin , frequency , duration = 1 , length = 100 ):
41
50
"""
@@ -61,21 +70,13 @@ def tone(pin, frequency, duration=1, length=100):
61
70
square_wave = array .array ("H" , [0 ] * sample_length )
62
71
for i in range (sample_length / 2 ):
63
72
square_wave [i ] = 0xFFFF
64
- if sys .implementation .version [0 ] >= 3 :
65
- square_wave_sample = audioio .RawSample (square_wave )
66
- square_wave_sample .sample_rate = int (len (square_wave ) * frequency )
67
- with audioio .AudioOut (pin ) as dac :
68
- if not dac .playing :
69
- dac .play (square_wave_sample , loop = True )
70
- time .sleep (duration )
71
- dac .stop ()
72
- else :
73
- sample_tone = audioio .AudioOut (pin , square_wave )
74
- sample_tone .frequency = int (len (square_wave ) * frequency )
75
- if not sample_tone .playing :
76
- sample_tone .play (loop = True )
73
+ square_wave_sample = audiocore .RawSample (square_wave )
74
+ square_wave_sample .sample_rate = int (len (square_wave ) * frequency )
75
+ with AudioOut (pin ) as dac :
76
+ if not dac .playing :
77
+ dac .play (square_wave_sample , loop = True )
77
78
time .sleep (duration )
78
- sample_tone .stop ()
79
+ dac .stop ()
79
80
80
81
81
82
0 commit comments