Ok, here's one little thing I came to spend time on and turned out to be quite funny, so for the musician, here you go:
I wanted an easy-er way to create tunes with the sound command, else than testing/programming over 40 times to get the notes right.
Initial plan was to create everything from a windows apps, then output notes to pic, but finally I was tempted to use the PIC as a sound card...
Result is, a small application running under windows, showing you a virtual music keyboard and notes supported by the PB sound command.(I did my best to match the real frequencies with the ones emitted by a PIC, but they are not all 100% accurate).
You can clic the keyboard, and notes will be sent on the serial port to the PIC for playback.
Of course you can record/delete clicked notes to a list, and in the end ask the software to output a PBasic command line to put into a program.

not 100% bulletproof tested, but functionnal over here.
Made at least 6 tunes in less than 15 minutes with it.
It come pre-loaded with JS Bach Minuet =)
program EXE is here:
http://www.flipperdesign.com/BeepMaster.rar
Code required in the PIC to get the notes is here:
Code:
; sound generator PIC12F683, @20Mhz
; testing Sounds, and they wait for Data from seial to play more..
; For use with BEEPMaster.exe Program to create tunes
'-------------------------------------------------------------------
' PIC12F683
'-------------------------------------------------------------------
' PIN NAME USE/CONNECTION
' 1 Vdd +5VDC
' 2 GPIO.5 XT
' 3 GPIO.4 XT
' 4 GPIO.3 N/C, MCLR
' 5 GPIO.2 LED OUTPUT
' 6 GPIO.1 SERIAL INPUT
' 7 GPIO.0 SPEAKER OUTPUT, with a small caps
' 8 VSS GROUND
'-------------------------------------------------------------------
DEFINE DEBUG_REG GPIO
DEFINE DEBUG_BIT 1 ' GPIO.1
DEFINE DEBUG_MODE 0 ' 1 = inverted, 0 = true
DEFINE DEBUG_BAUD 38400 ' test 38400(fonctionne pas toujours sur le INTOSC)
DEFINE DEBUGIN_REG GPIO
DEFINE DEBUGIN_BIT 2 ' GPIO.2
DEFINE DEBUGIN_MODE 0 ' 1 = inverted, 0 = true
DEFINE OSC 20
CMCON0 = 7 'Analog Comparators OFF
ANSEL = %00000000 ' Set A/D OFF, necessaire pour SOUND!
ADCON0 = %00000000 'Analog converter OFF(test)
WPU = 0 ' Internal pull-ups = off, maybe REQUIRED for MCLR_OFF
INPUT GPIO.2
OUTPUT GPIO.1
Speaker var GPIO.0
output Speaker
Freqtest var Word
Duration var byte
curNote var byte
;LedPort var GPIO.2
;Output Speaker
dlzic var byte
curNote=0
;High LedPort
Pause 200
dlzic=40
pause 100
sound Speaker,[105,dlzic,99,dlzic,102,dlzic,90,dlzic*2,0,15,90,dlzic,102,dlzic,105,dlzic,99,dlzic ]
; Super Cool warp!
for Freqtest= 200 to 600
FREQOUT Speaker,10,Freqtest
next Freqtest
;High LedPort
; NOW that fun is over, lets wait for client input
waitforkeydata:
pause 1
DEBUGIN [WAIT("DT")]
DEBUGIN [HEX2 curnote]
DEBUGIN [WAIT(",")]
DEBUGIN [HEX2 duration]
DEBUGIN [WAIT(13)] ; wait carriage return
pause 2
sound Speaker,[curnote,duration ]
;High LedPort
GOTO waitforkeydata
END
note: The windows BEEP option to have sounds played under windows does not work with all computers... here.
Bookmarks