Weihnachtsprojekt

Hier können Wettbewerbe gestartet werden bzw. Teilnahmen gepostet werden. Bitte nur ein Thread pro Wettbewerb.

Moderator: dussel07

Re: Weihnachtsprojekt

Beitragvon Anse » 11.12.2012, 18:08

topas hat geschrieben:@Anse: Ich rätsele schon die ganze Zeit, was Dein Projekt mal wird?
Jetzt habe ich Euch schon so viele Hinweise gegeben.
Na gut, es kann eigentlich Alles sein was man mit PWM-Sound anstellen kann.
Der Tonumfang beträgt 3 1/2 Oktaven und kann noch erweitert werden. Man kann also schon ganz nette Sachen damit machen.
Ich habe es mal zu so etwas wie diese Melodiekarten weiterentwickelt :wink:
Eine Mini-Orgel wäre auch kein Problem. Man müsste nur die Tasten multiplexen.
Anse
 
Beiträge: 1442
Registriert: 09.06.2011, 14:18

Re: Weihnachtsprojekt

Beitragvon topas » 11.12.2012, 18:16

Eine Mini-Orgel wäre auch kein Problem. Man müsste nur die Tasten multiplexen.

Ja, ja, ja - mach das! :D
Dann kommen wir zu Tremolo und Vibrato (nicht Vibrator :D ).
topas
 
Beiträge: 3796
Registriert: 16.08.2010, 12:47

Re: Weihnachtsprojekt

Beitragvon Anse » 11.12.2012, 18:23

Dann kommen wir zu Tremolo und Vibrato
Ich hab noch keine Idee, wie ich das machen soll? Für die Tonlänge habe ich schon den Watchdog Timer zweckentfremdet.
Anse
 
Beiträge: 1442
Registriert: 09.06.2011, 14:18

Re: Weihnachtsprojekt

Beitragvon topas » 11.12.2012, 18:44

Es gibt ja nicht nur Tinys....

Wenn man die Datawerte für die Kurvenform in ein Array läd, kann man den Klang umschaltbar machen.....
topas
 
Beiträge: 3796
Registriert: 16.08.2010, 12:47

Re: Weihnachtsprojekt

Beitragvon Anse » 11.12.2012, 19:30

Für dieses Projekt werde ich beim Tiny bleiben.
Wenn man die Datawerte für die Kurvenform in ein Array läd, kann man den Klang umschaltbar machen.....
Der Flash ist dafür besser sage ich jetzt mal.

Hir kommt meine Idee für das Projekt her:http://www.mikrocontroller.net/topic/137629
Die Rechteckschwingung hat mir halt nicht gefallen. So wurde Sinus draus. 8)
Anse
 
Beiträge: 1442
Registriert: 09.06.2011, 14:18

Re: Weihnachtsprojekt

Beitragvon topas » 11.12.2012, 20:54

Der Flash ist dafür besser sage ich jetzt mal

So ist die Jugend! :D
Wenn Du zu den grösseren AVRs kommst, wirst Du grösseres RAM und Arrays mit ihren Möglichkeiten schätzen lernen. Da bin ich ganz sicher.

Aber die Sinus-Geschichte gefällt mir. Sinus klingt mehr nach Flöte, Rechteck geht in Richtung Mundharmonika. Ist Geschmacksache. Im Prinzip bist Du nah dran an meiner Hammondorgel. :D
Mit Rechteck kann man mit Filtern auch noch klanglich was machen - bei Sinus entfällt das.
topas
 
Beiträge: 3796
Registriert: 16.08.2010, 12:47

Re: Weihnachtsprojekt

Beitragvon Anse » 11.12.2012, 21:01

Ich verwende Arrays nur wenn es um wenige Daten geht oder wenn sie verändert werden sollen. Wenn es um Geschwindigkeit geht sind Arrays auch besser.

Übrigens suche ich noch Vorschläge für kurze Melodien, die ich ins Programm einbauen würde. Zu schwer sollten sie nicht sein.
Anse
 
Beiträge: 1442
Registriert: 09.06.2011, 14:18

Re: Weihnachtsprojekt

Beitragvon Anse » 23.12.2012, 15:55

Jetzt wird es langsam Zeit, das ich mein Projekt vorstelle.
Kurze Beschreibung: In eine Tabelle, die im Flash geschrieben wird liegen die Werte für die Tonhöhe und die Tonlänge. Der Eagle-Schaltplan und die Liste für die Tonhöhen sind im Anhang.
Hier das Programm:
Spoiler: show
Code: Alles auswählen
'Chip Attiny24
$regfile "attiny24.dat"
$crystal = 8000000


'Portb.2 als Ausgang
Ddrb.2 = 1
'Timer0 im fast PWM Mode, Prescale = 1
Tccr0a = &B10000011
Tccr0b = &B00000001

'### Timer1 Im Ctc Mode , Prescale = 1
Tccr1a = &B00000000
Tccr1b = &B00001001
Timsk1.1 = 1
Enable Timer1
On Oc1a Isr_timer1

'Watchdog Timer für die Tonlänge

' WDP0-2 = Watchdogtimer Pescale: Bestimmt die Geschwindikeite
' der Wiedergabe
Wdtcsr.wdp0 = 1
Wdtcsr.wdp1 = 1
Wdtcsr.wdp2 = 0

Wdtcsr.wdp3 = 0
Wdtcsr.wdie = 1
Wdtcsr.wdce = 0
Wdtcsr.wde = 0
On Wdt Wdti_isr

Enable Interrupts




Dim Reload As Word
Dim A As Byte
Dim B As Byte
Dim Count As Byte
Dim Ton_length As Byte
Dim Length As Byte
Dim Tone As Byte
Length = 1

Ocr1a = 6000

Do
'Kein Hauptprogramm...
Loop
End



'ISR des Watchdogs
'Alle 64ms wird der Interrupt aufgerufen
Wdti_isr:
Incr Ton_length
'Warten bis die Tonlänge erreicht ist
If Ton_length = Length Then
Ton_length = 0
'Nächste Werte für Tonhöhe und Länge aus dem Flash holen
Tone = Lookup(count , Lieder)       'Nummer des Tons lesen
Incr Count
Length = Lookup(count , Lieder)       'Länge des Tons lesen
Reload = Lookup(tone , Ton_data)       'Den Vergleichswert für die richtige Tonhöhe lesen.
'wenn der Ton-Wert aus dem Flash 0 ist, wird der Timer angehalten--> Kein Ton
If Reload = 0 Then
Tccr1b.cs10 = 0
Else
Tccr1b.cs10 = 1
End If
'Den Vergleichswert in das Compareregister des Timer1 zur Frequenzerzeugung laden
Ocr1a = Reload

Incr Count

  If Length.7 = 1 Then       'Wenn das 7. Bit des Längenwerts = 1 ist, ist das Liedende erreicht
   Count = 0       'Der Counter für die Töne wird auf 0 gesetzt
   Length = 1       'Der Längenwert wird auf 1 gesetzt damit die Wartezeit nicht zu lange wird.
  End If
End If

Return    'Ende der ISR






'Der Timer läd mit variabler Frequenz die Werte aus der Sinustabelle
'in das Vergleichsregister des PWM-Timer0

Isr_timer1:
B = Lookup(a , Sinus_data)       'Wert aus der Sinustabelle holen
Ocr0a = B 'Wert in das Vergleichsregister des Timer0 laden
Incr A
'wenn das Tabellenende erreicht ist, wird der Zeiger wieder auf den Anfang gesetzt
If A = 32 Then
A = 0
End If
Return





Lieder:   'Tabelle für die Lieder
' Aufbau der Tabelle: 1. Wert: Nummer des Tons, 2. Wert: Länge des Tons usw...
'Tonlängen:
' 1 = 1/16 Note
' 2 = 1/8 Note
' 4 = 1/4 Note
' 8 = 1/2 Note
' 16 = Ganze Note


'Stille Nacht....
Data 0 , 24
Data 20 , 6
Data 22 , 2
Data 20 , 4
Data 17 , 12
Data 20 , 6
Data 22 , 2
Data 20 , 4
Data 17 , 12
Data 27 , 8
Data 0 , 1
Data 27 , 4
Data 24 , 12
Data 25 , 8
Data 0 , 1
Data 25 , 4
Data 20 , 12
Data 22 , 8
Data 0 , 1
Data 22 , 4
Data 25 , 6
Data 24 , 2
Data 22 , 4
Data 20 , 6
Data 22 , 2
Data 20 , 4
Data 17 , 12
Data 22 , 8
Data 0 , 1
Data 22 , 4
Data 25 , 6
Data 24 , 2
Data 22 , 6
Data 20 , 2
Data 22 , 4
Data 20 , 4
Data 17 , 12
Data 27 , 8
Data 0 , 1
Data 27 , 4
Data 30 , 6
Data 27 , 2
Data 24 , 6
Data 25 , 12
Data 29 , 12
Data 25 , 6
Data 20 , 2
Data 17 , 4
Data 20 , 6
Data 18 , 2
Data 15 , 6
Data 13 , 24

'Ton aus und Wartezeit mit gesetzten Endbit
Data 0 , 160





Sinus_data:
'#### Sinustabelle mit 32 Werten
Data 128 , 153 , 177 , 199 , 218 , 234 , 246 , 254 , 255 , 254 , 246 , 235 , 219 , 199 , 177 , 153 , 128 , 103 , 79 , 57 , 38 , 22 , 10 , 3 , 0 , 2 , 10 , 21 , 37 , 57 , 79 , 103 , 128


Ton_data:
'Vergleichswerte für die Tonhöhe für den Timer1
   '  0    1      2       3      4      5      6     7       8      9     10      11     12
Data 0% , 956% , 902% , 851% , 804% , 758% , 716% , 676% , 638% , 602% , 568% , 536% , 506%
'     13    14     15     16     17     18     19     20     21      22    23      24
Data 478% , 451% , 426% , 402% , 379% , 358% , 338% , 319% , 301% , 284% , 268% , 253%
'     25    26     28     29      30     31   32       33     34    35      36     37
Data 239% , 225% , 213% , 201% , 190% , 179% , 169% , 159% , 150% , 142% , 134% , 127%
   '  38      39     40     41    42    43
Data 119% , 113% , 106% , 100% , 95% , 89%

Vieleicht will jemand das Programm ausprobieren oder sogar eigene Melodien schreiben :?:
Dateianhänge
Melodie.sch
(86.71 KiB) 160-mal heruntergeladen
Frequenz.ods
(24.94 KiB) 161-mal heruntergeladen
Anse
 
Beiträge: 1442
Registriert: 09.06.2011, 14:18

Re: Weihnachtsprojekt

Beitragvon topas » 23.12.2012, 16:46

@Anse: Danke fürs Mitmachen und für Dein schönes Projekt (das Programm ist ausgezeichnet kommentiert - könnte eine Anleitung zum Umgang mit den Timerinterrupts sein. Den Watchdog hab ich selbst noch nie benutzt, geschweige zweckentfremdet - schöne Sache). Das muss natürlich noch geprüft werden. Eine akkustische Kostprobe wäre schön.
Du hast bestimmt etwas über Interrupts, Timer und etwas musikalisches dazugelernt? Auch so eine spielerische Bastelei bringt einen weiter - stimmts?

Vielleicht gehen ja noch weitere Einreichungen ein. Ich denke wir warten noch ein Weilchen?
Frohe Weihnachten!
topas
 
Beiträge: 3796
Registriert: 16.08.2010, 12:47

Re: Weihnachtsprojekt

Beitragvon Anse » 23.12.2012, 19:19

Wenn MP3 oder ogg als Dateiendung zum Hochladen erlaubt wäre, würde es eine Kostprobe geben.

das Programm ist ausgezeichnet kommentiert - könnte eine Anleitung zum Umgang mit den Timerinterrupts sein. Den Watchdog hab ich selbst noch nie benutzt, geschweige zweckentfremdet - schöne Sache
Wenn ich ein fremdes Programm zu verstehen versuche, wird das durch eine schlechte kommentierung fast unmöglich. Das will ich nicht bei meinen Programmen sehen.
Die Watchdog ISR ist eher ein Bsp. wie mans nicht machen sollte. Ist schon fast zu viel Code. Eigentlich ist der Watchdog, da um den AVR zu resetten wenn er sich mal verfahren hat. Eine Weitere Einsatzmöglichkeit ist das aufwecken aus dem Powerdown.
Du hast bestimmt etwas über Interrupts, Timer und etwas musikalisches dazugelernt? Auch so eine spielerische Bastelei bringt einen weiter - stimmts?
Auf jeden Fall :wink:
Anse
 
Beiträge: 1442
Registriert: 09.06.2011, 14:18

Re: Weihnachtsprojekt

Beitragvon alterhase » 23.12.2012, 20:17

Die Sache sieht ganz ordentlich aus und alles was zu so einem Projekt gehört ist da. Layout und Bestückungsplan fehlen nicht unbedingt. Eine Beschreibung wäre noch schön. ... Aber!
Super Arbeit!

MP3 File: Vielleicht kannst du es in ein Zip oder Rar verpacken. Am besten gleich mit dem ganzen Projekt.
Ich denk, viele würde auch der Sound interessieren. 8)

Die Kommentarzeilen sind auch für dich sehr wichtig, falls du später aufs Programm aufsetzen oder was ändern willst.
Löten verbindet ...manchmals. :mrgreen:
73 55
alterhase
 
Beiträge: 12050
Registriert: 14.11.2008, 08:58
Wohnort: Wien/Kapfenberg

Re: Weihnachtsprojekt

Beitragvon Anse » 23.12.2012, 21:01

So, jetzt habe ich auch gleich noch eine neue Seite auf meiner Homepage erstellt. Da gibt es auch eine Hörprobe. Klick
Wenn ich wieder ein wenig Zeit habe, werde ich noch eine Seite über die PWM-Tonerzeugung schreiben.
Layout und Bestückungsplan fehlen nicht unbedingt.
Bei der Schaltung nicht ganz so wichtig aber hier hast Du dein Layout :mrgreen:
Melodie.brd
(6.97 KiB) 169-mal heruntergeladen


Super Arbeit!
Danke

Das Projekt wird wohl das letzte größere Projekt sein, das ich mit Bascom programiert habe. Ich steige gerade auf C um.
Anse
 
Beiträge: 1442
Registriert: 09.06.2011, 14:18

Re: Weihnachtsprojekt

Beitragvon alterhase » 23.12.2012, 21:10

... Da gibt es auch eine Hörprobe. ...
Erinnert ein wenig an Blockflöte :) ... Passt gut! :D
Leider scheppert mein Lautsprecher :(
Löten verbindet ...manchmals. :mrgreen:
73 55
alterhase
 
Beiträge: 12050
Registriert: 14.11.2008, 08:58
Wohnort: Wien/Kapfenberg

Re: Weihnachtsprojekt

Beitragvon Anse » 23.12.2012, 21:36

Den kleinen Fehle etwa in der Mitte hast Du nicht bemerk oder bist Du aus höflichkeit ruhig? :mrgreen:
Leider scheppert mein Lautsprecher
Da kann man doch was machhen.
Anse
 
Beiträge: 1442
Registriert: 09.06.2011, 14:18

Re: Weihnachtsprojekt

Beitragvon alterhase » 23.12.2012, 21:54

Anse hat geschrieben:Den kleinen Fehle etwa in der Mitte hast Du nicht bemerk oder bist Du aus höflichkeit ruhig? :mrgreen:
Höflich? ... war ich jemals höflich? Ich musikalisches Rhinozeros dachte das gehört so. :oops:
Anse hat geschrieben:
Leider scheppert mein Lautsprecher
Da kann man doch was machhen.

Ich bräuchte mich nur um 90° im Uhrzeigersinn drehen und den alten XP-Rechner hochfahren. :roll: Aber da müsst ich vorerst verschiedenes Gramuri -was sich da stapelt- wegräumen :shock: ... Bin i a Putzfrau?? :mrgreen:
Löten verbindet ...manchmals. :mrgreen:
73 55
alterhase
 
Beiträge: 12050
Registriert: 14.11.2008, 08:58
Wohnort: Wien/Kapfenberg

VorherigeNächste

Zurück zu Wettbewerbe

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast