Forum: Projekte & Code PlayMe! (Atmel Tiny85 - 1bit D/A Musikgenerator)


von Alex S. (byteman)


Lesenswert?

High

weil ich gerne Musik selber mache und mit Microcontrollern bastele habe 
ich mir mit einem Atmel Tiny85 (8KB Flash) einen kleinen Musikgenerator 
zusammengebastelt den ich 'PlayMe!' genannt habe. Es spielt 1 bit 
codierte Musiksamples ab.

Das Ding funktioniert so:
- erstmal komponiere ich einen 1,445 Sekunden langen Loop (1 Takt bei 
166 BPM)
- dieses kurze Musikstück wandele ich dann mit dem BTc Sound Encoder in 
eine 1 bit codierte Datei um. Leider macht das BTc Programm nur PIC 
assembler code deshalb habe ich mir mit Blitzbasic 1.91 einen kleinen 
umwandler Programmiert der aus dem PIC code dann Atmel code macht.
- diesen Atmel code füge ich dann hinten an mein PlayMe! Musikgenerator 
Programm an.
- als hex Datei kann es nun mit einem high voltage Programmiergerät auf 
den Tiny85 geschoben werden.

So, nun kann man mit dem gerät spielen. Es gibt fünf Taster. Einer für 
die veränderung der Abspielgeschwindigkeit und mit den restlichen vier 
Tastern können je nach Tastenkombination verschiedene Punkte und Längen 
innerhalb des komponierten Musikloops angesprungen werden.
Je nach Übung, Tastenkombination und schnelligkeit der Tastenwechsel 
entsteht  dadurch ein neues Lied. Natürlich erfolgen alle Tastenwechsel 
automatisch im Takt der Musik.

Bilder, Schaltplan, alle meine Programme mit Sourcecode, Test wav 
Dateien, eine MP3 Demo, eine ausführliche Beschreibung und das BTc 
Programm sind im Anhang. Weil die Datei zu gross ist (3MB) konnte ich 
sie nicht direkt hier im Forum anhängen deshalb habe ich sie hier 
hingepackt:

http://www.file-upload.net/download-1473092/PlayMe--v2.1--Atmel-Tiny85---1bit-DA-Musikgenerator-.rar.html

Na dann viel spass
Audiooxyd

von Gast (Gast)


Lesenswert?

Das MP3 ist cool! Selbst komponiert? :-)

von Alex S. (byteman)


Lesenswert?

^_^ danke.
Ja, hab ich selber gemacht.

von Gast (Gast)


Lesenswert?

Mit was macht man das?

Versuch schon ewig einen Einstieg zu finden ...

von Steffen (Gast)


Lesenswert?

Sehr nettes Teil, überlege mir das auch zu bauen, vorallem wegen dem 
geringen Hardwareaufwand.

Zur Funktion: Sehe ich das richtig, dass man am PC ein kleines Lied 
macht, das anschliessend in PIC- Code wandelt, und daraufhin in 
AVR-Code. Nun hängt man diesen Code an dein Programm an und flasht alles 
auf den µC. Mit den Tasten kann man nun das Lied langsamer oder 
schneller laufen lassen und Vorwärts oder Rückwärts im Lied springen.
Passt das so?

Gruß, Steffen

von Alex S. (byteman)


Lesenswert?

@ Gast
was meinst du?
meinst du den kurzen loop? das hab ich mit "propellerhead reason" 
gemacht.
oder meinst du das fertige mp3? das hab ich mit meinem "PlayMe!" gemacht
"computerartigestimme an" >>> "keine effektive antwort möglich... 
zuwenig input" "computerartigestimme aus" ^_^


@ Steffen
Dankeschön ^_^
Ja, alles richtig erkannt!
solange man den einen taster drückt (portb5 am pin eins) dann wird das 
abspielen langsamer in 16 abstufungen und springt dann wieder auf 
schnelles abspielen. den taster kann man auch drücken während man 
gleichzeitig andere tasten drückt.
die anderen tasten verändern die aktuelle abspielposition und 
abspiellänge zum beispiel:
- nur taste 1 gedrückt (portb1) >>> vom ersten bis zweiten achteltakt 
wird wiederholt (der ganze loop hat acht achteltakte).
- taste 3 (portb3) und 4 (portb4) zusammen gedrückt >>> vom fünften bis 
achten achteltakt wird wiederholt.
usw.
ich habe versucht die tastenkombinationen halbwegs sinnvoll zu den 
achteltakten zuzuordnen.

aber nicht vergessen: es wird ein "high voltage" programmiergerät 
gebraucht
sonst kann man die langsamer/schneller taste nicht verwenden!

viel spass beim nachbau
Audiooxyd

von Gast (Gast)


Lesenswert?

Ah, genau ... "propellerhead reason" war die richtige Antwort :-)

Danke!

Wie lang machst du sowas schon?

von Alex S. (byteman)


Lesenswert?

@ Gast
reason benutze ich seit es das gibt (ich glaube seit 2002) musik mache 
ich aber schon länger und mit microcontrollern bastele ich seit ca. 2 
jahren.

viele grüsse
Audiooxyd

von Alex S. (byteman)


Angehängte Dateien:

Lesenswert?

High

damit das Umwandeln der '.wav' Datei in den '1 Bit-Code' einfacher geht 
hat mein Bruder jetzt ein schönes Programm geschrieben das direkt aus 
der '.wav' Datei den '1 Bit-Code' für das 'PlayMe!' generiert.

Das Programm mit Sourcecode (für Pure Basic 4.3) und eine Anleitung habe 
ich zu diesem Beitrag angehängt.

Anleitung:
- oben im Menü wird die '.wav' Datei geöffnet.
- wenn man mit der Maus in den weissen Bereich klickt dann kann man die 
angezeigte Position verschieben.
- mit der 'Leertaste' wird der '1 Bit-Code' abgespielt. Wenn die 
'Leertaste' gedrückt gehalten wird dann kann man mit den drei 
Schiebereglern den '1 Bit-Code' an die original '.wav' Datei anpassen 
dabei zeigt der 'Error' Wert (unten rechts) an wie weit der '1 Bit-Code' 
von der '.wav' Datei entfernt ist. Kleinerer 'Error' Wert = bessere 
Ähnlichkeit.
- mit dem 'Volume' Schieberegler wird die Lautstärke der '.wav' Datei 
verändert. VORSICHT !!! Übersteuerungen hören sich schrecklich an und 
führen zu aussetzern und knacken im '1 Bit-Code' !!!
- oben im 'File' Menü kann man den 'PlayMe!' Atmel Code dann abspeichern 
('Export PlayMe).


viel Spass
Audiooxyd

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.