MegaLOL

OP Persönliche Seite #581201
Lesenswert?

Hallo,

Das sinnloseste Projekt von mir was ich bisher hatte. MegaLOL der 
sprechende AVR.
Dazu habe ich einen Lautsprecher einfach an einen Port des µC 
angeschlossen, genauer gesagt am OC0 wegen der PWM Erzeugung. Dabei gebe 
ich mit Hilfe des Timer1 immer ein neues PWM Signal auf den Ausgang. 
Aufgrund des geringen Speichers eines ATMega32 kommt man so auf ca. 
4sec. bei einer Sampelrate von 8000Hz bei 8Bit. Ein SPI – RAM von 1MB 
oder sogar eine MMC/SD – Karte wäre nicht schlecht. Aber ich wollte 
dieses Projekt klein halten. Aufgebaut habe ich das Projekt mit dem 
Pollin AVR Board. Bilder und Source und Schaltplan im Anhang oder auf 
meiner Webseite.

Gruß
Ulrich
Angehängte Dateien:
#581460
Lesenswert?

Hmmm, dazu ist mir gleich etwas eingefallen.
Zum MIDI/RS232-80C535 Board von Wickenhäuser (1993) gab es das Programm 
"PHONEM" mit dem man ungefähr knapp 1 Minute in 32K bekam. Dazu wurden 
die Sprachdaten im Computer durch eine FFT gejagt, der Controller baute 
aus den gespeicherten Koeffizienten das Signal nach und gab es über 
Software-PWM aus...

Gruß Jörg
#581610
Lesenswert?

Ich hatte mal versucht sowas nachzubauen, um viel Sprache in einen AVR 
zu bekommen:
Eine FFT, aus den Amplituden wurden die stärksten ausgesucht und alle 
anderen verworfen. So kam ich auch auf etwa 500Bytes/s, aber das ganze 
hört sich einfach nur schrecklich an (man hört die einzelnen Frequenzen 
deutlich aus dem Gemisch heraus). Am Ende habe ich das Projekt verworfen 
und einen externen Flash mit SPI angeschlossen.
Gast #581634
Lesenswert?

Es gibt auch 1 bit sound, da hab ich irgendwo mal ein Programm gesehen 
wo eine 1 bit sequenz erzeugt, die man auf ein RC Glied geben muss um 
eine geglättete Wellenform zu erzeugen.

Das ganze könnte man per SPI bestimmt gut ausgeben (ähnlich wie Ulrichs 
"SPI basierte" TV Karte)
Gast #581669
Lesenswert?

Wie wär's mit CVSD (continuous variable slope delta modulation) ?

Am PC habe ich sowas mal gemacht, für ein Sample braucht man anstatt 8 
bit nur noch 1 bit. Weiß jetzt leider nicht ob man das platz- und 
performancetechnisch in nen AVR bekommt.

Stefan
#581673
Lesenswert?

... wrote:
> 1 Bit Sound + RC Tiefpass = PWM !

Das ist eine Möglichkeit, in der Praxis macht man das aber anderst: 
Delta-Sigma-DAC
Selbst die heutigen >20bit ADCs/DACs arbeiten eigentlich nur mit einem 
Bit. Die Datenrate liegt dafür dann auch bei etlichen MBit/s nur um 
44kHz/16bit zu erzeugen. Sparen tut man also mit diesem Verfahren 
nichts, außer an den Kosten für hochauflösende DACs/ADCs.
Gast #582173
Lesenswert?

Hallo,

fällt mir gerade was ein...
Amiga-Narrator-Device fällt mir dazu ein oder SAM vom C64.

Gibt es eigentlich irgendeine freie Source für eine Phonem-Basierte 
Ausgabe?

Ohne jetzt auf die Qualität einzugehen (Hauptproblem war, daß es keine 
guten deutschen Phonem-Tabellen gab), sollte das doch von der 
Rechenleistung auf einem AVR kein Problem sein, damit (fast) beliebige 
Texte vorzulesen.

Gruß aus Berlin
Michael
Gast #583025
Lesenswert?

Hi

Wie wäre es mit einem einfach Packalgorithmus: Nicht die absoluten Werte 
speichern, sondern nur die Differenz zum vorherigen Wert. Bei max. 3 Bit 
Differenz könnte man 2 Werte pro Byte speichern (mit Vorzeichen).Nennt 
sich 'ADPCM'.

MfG Spess
Gast #588471
Lesenswert?

hallo,
hab das projekt gerade mal ausprobiert. es funktioniert nur leider bin 
ich nicht in der lage einzuschätzen ob es richtig funktioniert, wie soll 
denn der sound klingen? bzw. mit welchem tool konvertiert man wave files 
in dieses header format? sehr interessant allerdings ;)
Gast #588838
Lesenswert?

Hallo,

@Andreas Jakob: "...totals about 700 kbytes..."

Hmmm... der SAM auf dem C64 war ca. 10kB groß und sprach englisch 
durchaus verständlich. :) Allerdings dürften dafür keine Quellen 
verfügbar sein und disassemblieren will ich den nun auch wieder nicht...

Gruß aus Berlin
Michael
Gast #588958
Lesenswert?

Hab grad dieses PIC-Projekt gefunden. Spielt die gesampelten Phoneme
des legendären SP0256 Sprachsynthesizer aus zwei 32K EEPROMs ab :

http://home.alphalink.com.au/~derekw/pictalker/main.htm

Im Download ist eine Datei allphones.bin mit den Samples
und in der tables.asm stehen die Startadressen im EEPROM
Damit lässt sich bestimmt leicht auf dem AVR eine Sprachausgabe
realisieren, auch wenn sich die Ausgabe vermutlich grausam anhört :-)
Gast #1386765
Lesenswert?

Sorry das ich den Thread mal ausgrabe ich wollte aber für eine kleine 
Frage nicht extra einen neuen Aufmachen.

Beim Schaltbild des Megalol wird direkt an den Portpin an dem die 
Ausgabe erfolgt ein 1uF Kondensator gegen masse angebracht.
Für was ist der gut, bzw welchen genauen Zweck hat der?
Da der Portpin ja dauernd mit der PWM beaufschlagt wird, wird dieser 
nicht überlastet da er den Kondensator immer umladen muß?

Sorry für die Blöden Fragen, aber ich bin noch anfänger in dieser Sache. 
:)

Andy
#1391060
Lesenswert?

Ich hab mir die Schaltung nicht angeschaut und bin mir auhc nicht ganz 
sicher: Aber theoretisch ist das ein Tiefpass, um die PWM Frequenz zu 
filtern. Der Output Pin hat ja einen gewissen Widerstand, die 1µF 
ergeben auch nen Widerstand von 1/(2*Pi*8000*1*10^-6) = 20 Ohm, was 
relativ gut funktionieren sollte. Da der Portpin nicht genug Strom 
liefern kann, fallen die Spikes der PWM raus. Trotzdem folgt die 
Kondensatorspannung der niederfrequenteren NF -> dem Audiosignal.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren