-
Werbung
-
Erfahrener Benutzer
Fleißiges Mitglied
Das íst ein ziemlich ehrgeiziges Projekt. Du brauchst Wissen um die PIC-Programmierung UND musikalische Kenntnisse. Auch eher selten. Klasse Kombination
Erstmal musst du einen Parser schreiben, der die RTTTL-Files verarbeiten und die Tonhöhen- und Rhythmus-Information auslesen kann. Wie willst du die in den PIC kriegen? Seriell?
Danach musst du den Tonumfang wissen, den so ein Handy synthetisieren kann. Nun musst du dir einen Weg überlegen, diese Frequenzen mit dem F84 zu erzeugen. Dafür wäre es am besten, einen Timer mit Compare-Funktion zu haben (sowas ist meines Wissens im F84 nicht drin). Nun musst du eine Lookup-Tabelle bauen, die für jeden musikalischen Ton den korrespondierenden Timer-Wert enthält.
Für die Rhythmik brauchst du einen weiteren Timer (wenn möglich, du könntest das sicher auch mit einer Warteschleife machen, das ist aber schwieriger). Die grundlegende Geschwindigkeit kannst du dem RTTTL-File entnehmen. Dieser wird so konfiguriert, dass er selbständig jedes 1/64 einen IRQ abgibt, du musst sozusagen eine 16fach höhere Frequenz erzeugen, als im RTTTL-File verlangt, denn die "Geschwindigkeitsangabe" bezieht sich auf Viertel-Noten. Durch "Abwarten" von IRQs kannst du nun die Notenwerte auszählen. Im RTTTL sind Notenwerte von 1/32 bis 1/1 vorgesehen, wobei sie auch punktiert sein können. Das heißt, die Note hat die anderthalbfache zeitliche Länge ihres ursprünglich notierten Wertes. Eine 1/32 braucht also 2 IRQs, eine punktierte 1/32 3 IRQs, eine Halbe 32 IRQs.
Dein Parser eröffnet nun ein Array im Soeicher mit zwei "Spalten", in die eine kommen Tonhöhe, in die andere die Dauer, beides umgerechnet in durch den PIC zu verabeitende Daten. Dann wird der Rhythmus-Timer aktiviert und hangelt sich Schritt für Schritt an dem Array entlang.
Fazit: du brauchst mit Sicherheit mehr RAM und Flash für diese Aufgabe. Alleine das Array braucht ja recht viel Platz. Wenn du nicht nur extrem kurze Stücke spielen willst, brauchst du mehr RAM. Größere PICs hätten dann auch geeingete Timer in ausreichender Zahl, eventuell auch eine höhere Taktfrequenz, die dich einfach flexibler macht.
Würde mich interessieren, wie es weitergeht.
Gruß,
Jan
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Werbung
Lesezeichen