Spela upp ljud med en PIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> ASM-filer blir ca 27 gånger större än BTC-filer.

Ja *filen* ja, men den innehåller (sannolikt) lika mycket ljud-data...
Dssutom, exakt *vad* har storleken på filen för betydelse !?

Vad är problemet med att visa 5-10 rader från ASM filen ??
(Soolo är antagligen på rätt spår, men det vet jag inte innan
jag har sett lite av filen. Och nej, jag tänker inte installerade
programvaran själv... :-) )
Användarvisningsbild
gurgalof
EF Sponsor
Inlägg: 1311
Blev medlem: 18 februari 2004, 22:15:06
Ort: Göteborg
Kontakt:

Ett litet urklipp ur asm filen...

Inlägg av gurgalof »

Kod: Markera allt

     ;-------------------------  0
     retlw b'00001011'   ; 0b 
     retlw b'10101010'   ; aa 
     retlw b'10000100'   ; 84 
     retlw b'10110000'   ; b0 
     retlw b'11101101'   ; ed 
     retlw b'10110010'   ; b2 
     retlw b'10010010'   ; 92 
     retlw b'00110110'   ; 36 
     ;-------------------------  8
     retlw b'10110011'   ; b3 
     retlw b'10000101'   ; 85 
     retlw b'01000100'   ; 44 
     retlw b'01010001'   ; 51 
     retlw b'10110111'   ; b7 
     retlw b'10110110'   ; b6 
     retlw b'11001011'   ; cb 
     retlw b'00000110'   ; 06 
     ;-------------------------  16
     retlw b'00100110'   ; 26 
     retlw b'00100101'   ; 25 
     retlw b'00101011'   ; 2b 
     retlw b'01011101'   ; 5d 
     retlw b'11011101'   ; dd 
     retlw b'11011011'   ; db 
     retlw b'11010111'   ; d7 
     retlw b'10110110'   ; b6 
     ;-------------------------  24
Så här ser det ut...
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

"Dssutom, exakt *vad* har storleken på filen för betydelse !?"

Jag vet inte om du känner till något magiskt knep, men jag kan inte få in en asm-fil på 500kB i en PIC. :)

En wav-fil på 22kHz som "renderas" till 1bit BTc6-finess (förklaring nedan) blir 512kB asm-kod.

En wav-fil på 15kHz blir 363kB med samma renderingsval som ovan.



*Finess:
The "fineness" factor determines the basic RC filter time constant. Lower values have faster transient response, allow playback of higher frequencies, and have more noise. High values of BTc fineness tend to give reduced transient response, lower frequency response and less overall noise.



"Vad är problemet med att visa 5-10 rader från ASM filen ?? "

Problemet är att ingen har frågat efter det. :wink:

Men såhär kan det se ut:

Kod: Markera allt

;=====================================================
; Bitstream data is in PIC .asm table format,
; in blocks of 256 bytes.
; 
; Bits are played from left to right, from ms_bit to
; ls_bit.
;=====================================================


;---------------------------------------------------
     org (1 *256)   	    ; block = 1  
;---------------------------------------------------


     ;-------------------------  0
     retlw b'00011000'   ; 18 
     retlw b'01000110'   ; 46 
     retlw b'01101010'   ; 6a 
     retlw b'10101010'   ; aa 
     retlw b'10101010'   ; aa 
     retlw b'10101010'   ; aa 
     retlw b'10101010'   ; aa 
     retlw b'10101010'   ; aa 
     ;-------------------------  8
     retlw b'10101010'   ; aa 
     retlw b'10101010'   ; aa 
     retlw b'10101010'   ; aa 
     retlw b'10101010'   ; aa 
     retlw b'10101010'   ; aa 
     retlw b'10101010'   ; aa 
     retlw b'10101010'   ; aa 
     retlw b'10101010'   ; aa 
     ;-------------------------  16


"nej, jag tänker inte installerade programvaran själv..."

Om du skulle bli nyfken: Man behöver inte installera programmet. Det är bara att packa upp zip-filen och köra direkt.


edit: Jahopp, där var Gurgalof snabb igen. :D
Användarvisningsbild
gurgalof
EF Sponsor
Inlägg: 1311
Blev medlem: 18 februari 2004, 22:15:06
Ort: Göteborg
Kontakt:

Inlägg av gurgalof »

JimmyAndersson: Du kanske inte har tänkt på det, men när du kompilerar asm filen, så får du ut en såå mkt mindre hex fil.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK, som jag gissade. Inte det mest optimala, så så bra man kan på en PIC16.
Bara att kopiera in.
Jag antar att Roman även har kodexempel för att "läsa" detta.

På en PIC18 kan man packa det bättre och köra med TBL-instruktionerna
för att läsa det. Men då måste man antingen själv skriva något som
konverterar binär filen, eller justera programvaran för att generera
"data" direktiv till MPASMisitäller för RETLW (minns inte på rak arm om det är
DA, DB eller något annat...).

> men jag kan inte få in en asm-fil på 500kB i en PIC.

Hur vet du det ?
Jag kan enkelt skapa en ASM fil på flera MB som inte innehåller någon kod alls.
Alltså, storleken på *ASM* filen har inget med hur mycket plats det tar i processorn !
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Jag menar, man kan ju kommentera med hela bibeln likssom....
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Ett bra exemepl på en massivt kommenterad kod :
http://redrival.com/mcgahee/picuart.zip

Det är en komplett tutorial för PIC-USART skriven som
en 100% ASM fil. Säkert över 95% kommentarrader...

Man kan i princip använda den direkt som den är.

Anses nog som den bästa PIC-USART tutorialen som
är skriven.
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Jag har försökt, men nu kan jag inte hålla mig längre...

Hur kul ser detta ut egentligen:


Nja, du har alltså lyckats få ut en ASM fil !!??
_ _ _

Dssutom, exakt *vad* har storleken på filen för betydelse !?
_ _ _

Vad är problemet med att visa 5-10 rader från ASM filen ??
_ _ _

Hur vet du det ?
Jag kan enkelt skapa en ASM fil på flera MB som inte innehåller någon kod alls.
Alltså, storleken på *ASM* filen har inget med hur mycket plats det tar i processorn !



För att citera en annan tråd så skrev du (sodjan) :
"Lite mer "rak" och "kort" är jag vid gratis support och speciellt när
frågeställaren inte har gjort sin "hemläxa"."


I denna tråd finns det ingen "hemläxa" att göra, så det finns ingen anledning att vara "rak och kort" mot mig.


Är vi överrens? :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Ja, visst blev det lite tjatigt innan det kom ett exempel på
vilken ASM kod som programmet genererade. :-)

Och vi är allså överens om att storleken på ASM filen i princip
saknar någon större betydelse ? Bra !
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

:D


Kul att vi alltid kommer överrens till slut. :tumupp: :)
Användarvisningsbild
Soolo
Inlägg: 73
Blev medlem: 17 september 2005, 16:42:54
Ort: Skövde

Inlägg av Soolo »

Lite trist att man inte kan utnytja programminne till bara data ut på en PIC16.. , endast 75%. För att programbredden är ju som dom flesta vet 14 bitar var av 6 bitar är operanden och resten 8 bitar är ju data .

Det är nog lättare med PIC18.. som sodjan föreslår eller att köpa en speciell ljudkrets som som sodjan också har nämnt.

Med då försvinner ju poängen med alltihop som vanligt att kunna lösa det med det man har :-)
Man ska inte vara rädd för att använda en lägre frekvens och tid konstant för det ska låta bättre i PICEN än förhandsljudet i BTc programmet.

Senare har jag planer spela upp toner. vilket jag tror blir lättare.

Soolo
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Litet tips om man använder låg ljudkvalité / hård komprimering / och liknande:

Ljud som låter bäst är de ljud som i "orginal" är så lite verklighetsbaserade som möjligt. Dvs ett synthljud blir bättre än ett pianoljud. Om orginalljudet har mest ljud i det låga och/eller höga frekvensområdet så kommer det låta lite sämre än om det mesta ljudet finns i mellanregistret.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Att bara 8 av 14 bitar används till "data" gäller när man använder RETLW
som i det aktuella fallet. De PIC16 som kan skriva och läsa till eget Flash-minne
kan lagra 14 användbara bitar per program-ord. Om dessa ska representera
"bytes" så blir det lite pyssel för att pussla ihop varje byte efteråt, men i
just detta fall är det ju en 1-bits ström där det inte finns något begrepp
"byte". Så på dessa PIC16 kan man packa in 14 databitar/program-ord och
modifiera läsrutinen lite.

Å andra sidan fungrar RETLW på *alla* PIC16...

Sen är ju lösningen inte tänkt för att lagra röster eller fraser, snarare
pling och plong ljud...

Behöver man mer minne får det nog bli ett externt eeprom eller fram.
Användarvisningsbild
Soolo
Inlägg: 73
Blev medlem: 17 september 2005, 16:42:54
Ort: Skövde

Inlägg av Soolo »

Jag tror inte jag kan läsa och skriva data till programminne på en PIC16F877 ?
Känns lite jobbigt att lära sig för mig ny PIC18 krets. Jag får kolla om det går att lösa i C med microC och låta kompilatorn gör jobbet :-)
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

Jo, 877:an kan det!
Skriv svar