MEL PICBASIC Forum - comp music with pic Sounds - Aka BeepMaster

  • comp music with pic Sounds - Aka BeepMaster

    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:

    Code required in the PIC to get the notes is here:

    ; 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 
    '  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_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_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
    Speaker var GPIO.0
    output Speaker
    Freqtest var Word
    Duration var byte
    curNote var byte
    ;LedPort var GPIO.2
    ;Output Speaker
    dlzic var byte
    ;High LedPort
    Pause 200
    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
    pause 1
    DEBUGIN [HEX2 curnote]
    DEBUGIN [WAIT(",")]
    DEBUGIN [HEX2 duration]
    DEBUGIN [WAIT(13)]  ; wait carriage return
    pause 2
    sound Speaker,[curnote,duration ]
    ;High LedPort
    GOTO waitforkeydata
    note: The windows BEEP option to have sounds played under windows does not work with all computers... here.
    This article was originally published in forum thread: comp music with pic Sounds - Aka BeepMaster started by flipper_md View original post