Ok, "Dog ate my homework" might have been a "Good thing". 
Here's a simple "btc Player" that can use any bitrate/btc model.
It has an easy IMPORT function that embeds the sound in the program data.
There are 2 "PLAY" functions. PlaySound, and RepeatSound.
I've changed the format of the ASM files, so this won't be very useful without modifications to the btc encoder. Or an external program can be used to convert the existing ASM/btc files to the new format. I've knocked up a simple program to do that here, but it's really, really ugly. Works for me, but it would be a nightmare for anyone else.
The new ASM format looks like this ...
Code:
; Simulated output for DT's suggestion to Roman Black
btc_bitrate = 22050 ; Playback Bitrate
btc_length = 4270 ; Sound Length in bytes
btc_btc = 64 ; bt Constant
btc_model = 1 ; btc model (0=1bit 1=1.5bit)
btc_wordbits = 16 ; 8=retlw, 14=16F's, 16 for 18F
;---------------------------------------------------------
DB 0xB5,0x6A,0xAA,0x52,0xCA,0xA9,0x4B,0x35,0xAD,0xB6,0xB5,0x9A,0xDB,0x56,0xAA,0xAA
DB 0xB5,0x55,0x52,0x52,0x52,0x12,0x42,0x20,0x84,0x52,0x99,0x6B,0x5A,0xEE,0xF6,0xF7
DB 0xBB,0xB7,0x75,0xAC,0xA9,0x14,0x52,0x89,0x25,0x28,0xA9,0x4C,0xA5,0x2A,0x52,0xAA
; etc.
This format allows you to easily Import sound files like this ...
Code:
INCLUDE "DT_RBSound.pbp"
@ ImportSound Space, "SpaceNew.asm"
@ ImportSound Bang, "Bang1New.asm"
Each Import line specifies the "Name" to call the sound in the program (Space, Bang), and the associated sound file to load.
Then to play the sound, you simply ...
Code:
@ PlaySound Bang
@ RepeatSound Space, 3
<hr>
This is a test program that plays a few sounds from a space game, and a line from kirk and spock.
I've just taken the filtered output from the PIC and fed it into the Line-in of my laptop.
I think the input is loading down the filter, as it sounds much better when I plug it directly into the sound input of my Viewsonic monitor. An op-amp buffer would probably help.
Here is the recorded sound from the example.
http://www.pbpgroup.com/files/picout.mp3
Code:
;-- Target = 18F --
@ __CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H
DEFINE OSC 10
btc_Pin1 VAR PORTC.2
btc_Pin2 VAR PORTC.3
X VAR BYTE
Y VAR BYTE
LATE_LED VAR PORTC.5
INCLUDE "DT_RBSound.pbp"
@ ImportSound Space, "SpaceNew.asm"
@ ImportSound Bang, "Bang1New.asm"
@ ImportSound Hit, "HitNew.asm"
@ ImportSound Shoot, "ShootNew.asm"
@ ImportSound Fascinating, "FascinatingNew.asm"
@ ImportSound Kirk, "BeamUpNew.asm"
@ ImportSound BigGun, "RazorNew.asm"
T1CON = 0
Main:
high LATE_LED
pause 500
low LATE_LED
FOR Y = 1 to 2
FOR X = 1 to 2
@ PlaySound BigGun
Pause 500
NEXT X
@ PlaySound Shoot
Pause 500
NEXT Y
@ PlaySound Hit
Pause 500
@ RepeatSound Hit,10
Pause 1000
@ RepeatSound Shoot, 4
@ RepeatSound BigGun, 2
pause 1000
@ RepeatSound Space, 3
@ PlaySound Bang
Pause 500
@ PlaySound Kirk
Pause 1000
@ PlaySound Fascinating
goto Main
There are still many things that can be done with it, like having a background sound using interrupts. Playing "segments" of a sound file, and probably many more. But for a quick re-creation, it turned out pretty good.
The zip file contains the module, demo program and all the sound files needed to compile it.
<br>
Bookmarks