Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1876to1880
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Midi

Midi
21.03.2022 07:00:18
Antonio
Guten Morgen,
habe ein Snippet über Midi im Netz gefunden und versuche ein Ton zu bekommen, NICHTS.
Vielleicht gibt es hier jemand der ein wenig kenntnisse über Midi hat und mir helfen kann.
https://www.herber.de/bbs/user/151920.xlsm
Danke im Voraus
LG Antonio

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Midi
21.03.2022 10:19:23
Yal
Hallo Antonio,
ich bin zwar kein Midi-Kenner, aber es scheint die Initialisierung der Variable hMidiOut bevor der Aufruf von OpenMidi zu fehlen:

Sub TestMidi2()
Dim Z As Range
On Error GoTo EndSub
With ActiveSheet("Midi")
hMidiOut = .Range("A2").Value
Call OpenMIDI
For Each Z In .Range("A2:A5").Cells
Call PlayMIDI(Z.Offset(0, 0).Value, Z.Offset(0, 1).Value, Z.Offset(0, 2).Value, Z.Offset(0, 3).Value)
'    Call PlayMIDI(.Cells(r, 1).Value, .Cells(r, 2).Value, .Cells(r, 3).Value, .Cells(r, 4).Value)
'    Call PlayMIDI(.Cells(r, 1).Value, .Cells(r, 2).Value, .Cells(r, 3).Value, .Cells(r, 4).Value)
'    Call PlayMIDI(.Cells(r, 1).Value, .Cells(r, 2).Value, .Cells(r, 3).Value, .Cells(r, 4).Value)
Next
End With
MsgBox Application.CountA(Columns(1))
EndSub:
Call CloseMIDI
End Sub
Aber die Funktion PlayMidi verwendet Variablen, die es nicht gibt, verwendet dafür nicht die Variable, die es gibt. Da musst Du aufräumen.
VG
Yal
Anzeige
AW: Midi
21.03.2022 10:54:23
Antonio
Hallo Yal zunächst Danke für die Rückmeldung.
Hier ist der Artikel mit dem Code, etwas weiter unten dort wo 4 Einträge gemacht werden, dort ist auch die Funktion PlayMidi die ich verwende:
http://dailydoseofexcel.com/archives/2007/02/06/musical-excel/
Ich kenne mich auch nicht so gut aus mit Midi daher die Meldung ob Jemand helfen kann.
LG Antonio
AW: Midi
21.03.2022 10:31:05
volti
Hallo Antonius,
ich bin auch kein Midi-Kenner, aber so bekomme ich Töne....
Code:


Option Explicit Private Declare PtrSafe Function midiOutClose Lib "winmm.dll" ( _ ByVal hMidiOut As LongPtr) As Long Private Declare PtrSafe Function midiOutOpen Lib "winmm.dll" ( _ lphMidiOut As LongPtr, ByVal uDeviceID As Long, _ ByVal dwCallback As LongPtr, ByVal dwInstance As LongPtr, _ ByVal dwflags As Long) As Long Private Declare PtrSafe Function midiOutShortMsg Lib "winmm.dll" ( _ ByVal hMidiOut As LongPtr, ByVal dwMsg As Long) As Long Private Declare PtrSafe Function midiOutReset Lib "winmm.dll" ( _ ByVal hMidiOut As LongPtr) As Long Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Dim hMidiOut As LongPtr Sub OpenMIDI() ' Midi öffnen CloseMIDI If hMidiOut = 0 Then midiOutOpen hMidiOut, 0, 0, 0, 0 End Sub Sub PlayMIDI(iVoiceNum As Integer, iNoteNum As Integer, iDuration As Long, _ Optional iVolume As Integer = 127) Dim iNote As Long If hMidiOut = 0 Then Exit Sub midiOutReset hMidiOut midiOutShortMsg hMidiOut, (256 * iVoiceNum) + 192 ' Instrument wählen midiOutShortMsg hMidiOut, RGB(144, iNoteNum, iVolume) '144 = h90 DoEvents Sleep iDuration ' Tondauer midiOutShortMsg hMidiOut, RGB(144, iNoteNum, 0) ' Ton aus End Sub Sub CloseMIDI() ' Midi schließen midiOutClose hMidiOut: hMidiOut = 0 End Sub Sub TestMidi2() Dim iZL As Long On Error GoTo Fehler Call OpenMIDI With ThisWorkbook.Sheets("Midi") For iZL = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row PlayMIDI .Cells(iZL, 1).Text, .Cells(iZL, 2).Text, _ .Cells(iZL, 3).Text, .Cells(iZL, 4).Text Next iZL End With Fehler: Call CloseMIDI End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Midi
21.03.2022 11:06:52
Antonio
Hallo Karl-Heinz,
vielen Dank, endlich ein Ton.
Siehst du eine Möglichkeit diese Töne gleichzeit abspielen zu lassen?
Wäre ich dir sehr Dankbar und kann mit meine Anwendung weiter machen.
Vielen Dank im Voraus
LG Antonio
AW: Midi
21.03.2022 12:24:56
volti
Hallo ANtonius,
wie schon geschrieben war das jetzt auch mein erster Versuch mit dieser Funktion und daher habe ich wenig Ahnung.
endlich ein Ton: Mit dem Code werden ja mehrere Töne nacheinander lt. Liste in einer Schleife abgespielt.
Was heißt da jetzt "gleichzeitig" spielen.
Wenn Du wie hier im u.a. Beispiel den Befehl mehrfach absetzt und dann erst die Duration, erfolgen zwei Sounds gleichzeitig. Müsste man dann an Deine Liste irgendwie anpassen
Code:


midiOutShortMsg hMidiOut, (256 * iVoiceNum) + 192 ' Instrument wählen midiOutShortMsg hMidiOut, RGB(144, iNoteNum, iVolume) '144 = h90 midiOutShortMsg hMidiOut, (256 * 55) + 192 ' weiteres Instrument wählen midiOutShortMsg hMidiOut, RGB(144, iNoteNum + 20, iVolume) '144 = h90 DoEvents Sleep iDuration ' Tondauer

Leider weiß ich (noch) nicht, ob man auch Dauerton variabler Länge machen kann. Zur Zeit wird ja wohl nur ein abklingender Ton (wie beim Klavier) erzeugt..
Aber da müsste ich jetzt selbst erst mal rumprobieren.
Gruß KH
Anzeige
AW: Midi
21.03.2022 12:32:01
Antonio
Hallo Karl-Heinz,
Das sind gute Tipps und werde ein wenig rumprobieren und an meiner liste anpassen.
Ich lasse den Threrad offen für Später, für evtll weitere Hilhsangebote und um uns auszutauschen.
LG Antonio
AW: Midi
21.03.2022 13:06:36
Antonio
Hallo Karl-Heinz,
diese Zeile:

PlayMIDI .Cells(iZL, 1).Text, .Cells(iZL, 2).Text, .Cells(iZL, 3).Text, .Cells(iZL, 4).Text
muss so bleiben weil vorgegeben durch

If hMidiOut = 0 Then midiOutOpen hMidiOut, 0, 0, 0, 0
Ich habe dein code eingefügt, weiß ich aber nicht wie ich meine Tabelle ändern soll.
LG Antonio
Anzeige
AW: Midi
21.03.2022 13:08:26
Antonio
Oder wird meine Tabelle in der erste Zeile zB.. um ein Ton ergänzt?
AW: Midi
21.03.2022 13:25:17
Yal
Hallo Antonio,
der Code von Karl-Heinz senden die Information an der "PlayMidi" Sub.
Mit folgenden Code werden die Information an dem Direktfenster gesendet (in VB-Editor, Menü "Ansicht", "Direktfenster"), so kannst Du sehen, was gesendet wird:

Sub TestMidi2()
Dim iZL As Long
On Error GoTo Fehler
Call OpenMIDI
With ThisWorkbook.Sheets("Midi")
For iZL = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
'        PlayMIDI .Cells(iZL, 1).Text, .Cells(iZL, 2).Text, .Cells(iZL, 3).Text, .Cells(iZL, 4).Text
Debug.Print .Cells(iZL, 1).Text, .Cells(iZL, 2).Text, .Cells(iZL, 3).Text, .Cells(iZL, 4).Text
Next iZL
End With
Fehler:
Call CloseMIDI
End Sub
VG
Yal
Anzeige
AW: Midi
21.03.2022 13:45:47
Antonio
Hallo Yal,
Danke für dein Tipp,
Ich habe oder bin am probieren nachdem Karl-Heinz Code eingefügt und Ergänzt:

Sub PlayMIDI(iVoiceNum As Integer, iNoteNum As Integer, iDuration As Long, _
Optional iVolume As Integer = 127)
Dim iNote As Long
If hMidiOut = 0 Then Exit Sub
midiOutReset hMidiOut
'  midiOutShortMsg hMidiOut, (256 * iVoiceNum) + 192     ' Instrument wählen
'  midiOutShortMsg hMidiOut, RGB(144, iNoteNum, iVolume) '144 = h90
'  DoEvents
'  Sleep iDuration                                       ' Tondauer
'  midiOutShortMsg hMidiOut, RGB(144, iNoteNum, 0)       ' Ton aus
midiOutShortMsg hMidiOut, (256 * iVoiceNum) + 192     ' Instrument wählen
midiOutShortMsg hMidiOut, RGB(144, iNoteNum, iVolume) '144 = h90
midiOutShortMsg hMidiOut, (256 * 25) + 192            ' weiteres Instrument wählen
midiOutShortMsg hMidiOut, RGB(144, iNoteNum + 4, iVolume) '144 = h90
midiOutShortMsg hMidiOut, (256 * 25) + 192            ' weiteres Instrument wählen
midiOutShortMsg hMidiOut, RGB(144, iNoteNum + 7, iVolume) '144 = h90
midiOutShortMsg hMidiOut, (256 * 25) + 192            ' weiteres Instrument wählen
midiOutShortMsg hMidiOut, RGB(144, iNoteNum + 11, iVolume) '144 = h90
DoEvents
Sleep iDuration
midiOutShortMsg hMidiOut, RGB(144, iNoteNum, 0)       ' Ton aus
End Sub
iNoteNum ist mit laut Tabelle der Ton "C"
iNoteNum +4 ist der Ton "E"
iNoteNum +7 ist der Ton "G"
iNoteNum +11 Ist der Ton "B"
Click und erklint auch als CMaj7 Akkord.
Die Tabelle ist im Moment So beschriftet:
25 48 1000 127
"48" ist der Ton "C".
Ich versuche jetzt die Tabelle zu beschriften weil jedesmal im Code was zu ändern wäre sinnlos.
Ich kann die Tabelle nicht im Spalten ergänzen : FEHLER
Und ich finde nicht heraus wie die Töne "E" "G" "B" in der Tabelle schreiben kann ohne das die Midi 4x gespielt werden.
Also mein Ziel ist die Töne "C E G B" in der Tabelle zu schreiben und sie alle gleichzeitig erklingen lassen.
Die Töne werde dann später aus eine andere Tabelle geholt.
Ich Hoffe ihr versteht mich.
LG Antonio
Anzeige
AW: Midi
21.03.2022 13:46:24
Antonio
Den haken vergessen
AW: Midi
21.03.2022 15:09:58
volti
Hallo Antonio,
ich habe immer noch nicht ganz verstanden, was eigentlich gemacht werden soll.
Soll eine Melodie anhand der Zeilen aus der Liste gespeilt werden?
Oder soll nur ein einziger Sound bestehend aus mehreren Tönen gespielt werden?
Du könntest, wenn Du beides machen möchtest, Deine Play-Sub so anpassen, dass beliebig viele Töne gleichzeitig abgespielt werden und trotzdem auch eine Melodie möglich ist.
Für die Melodie, falls gewünscht, werden die Zeilen abgearbeitet. Für einen Mehrfachklang übergibst Du einfach eine kommagetrennte Tönesammlung.
Das würde reichen, wenn die Töne alle auf einem Instrument basieren und die gleiche Dauer haben.
Also in Deiner Liste in Spalte "B" (Ton) ggf. die gewünschten Töne kommagetrennt eintragen.
Code:


Sub PlayMIDI(iVoiceNum As Integer, vNoteNum As Variant, iDuration As Long, _ Optional iVolume As Integer = 127) Dim i As Integer, vArr As Variant If hMidiOut = 0 Then Exit Sub ' Kein Handle=>raus vArr = Split(vNoteNum, ",") midiOutShortMsg hMidiOut, (256 * iVoiceNum) + 192 ' Instrument wählen For i = 0 To UBound(vArr) midiOutShortMsg hMidiOut, RGB(144, vArr(i), iVolume) '144 = h90 Next i DoEvents Sleep iDuration midiOutShortMsg hMidiOut, RGB(144, vNoteNum, 0) ' Ton aus End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Midi
22.03.2022 06:30:35
Antonio
Hallo Karl-Heinz,
Guten Morgen,

Oder soll nur ein einziger Sound bestehend aus mehreren Tönen gespielt werden?
JA so soll es sein.
mit der Melodie hab gestern auch hinbekommen, ich möchte aber Akkorden spielen, also ein Mehrfachklang.
Ich habe dein Code ersetzt ( das mit dem Array wäre ich nie daraufgekommen) und der Mehrfachklang ist da aber nur der erste
also "B2" wird gespielt, "B3" nicht, so schaut meine Tabelle aus:
25 48, 52, 55, 59 1000 100 CMaj7
25 55, 59, 62, 66 1000 100 GMaj7
und da im Sub TestMidi2 ein Row.Count dabei ist:

For iZL = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
sollte eigentlich alle Zeile durchgehen.
Soll evtll im Sub TestMidi2 was geändert werden?
Danke für deine Geduld
LG Antonio
Anzeige
AW: Midi
22.03.2022 06:57:21
Antonio
Hallo Karl-Heinz,
Habe :

midiOutShortMsg hMidiOut, RGB(144, vNoteNum, 0)           ' Ton aus
auskommentiert und jetzt spielt alle Zeilen, ich weiß nicht ob so richtig ist.

Leider weiß ich (noch) nicht, ob man auch Dauerton variabler Länge machen kann. 
Es würde mich auch interessieren.
Meine Anwendung, ist dafür gedacht eine art Begleitung zu Spielen wenn ich die Melodie auf der Gitarre spiele.
Das mit dem Dauerton variabler Länge zu Machen könnte ich nutzen um verschiedene Style, spricht Jazz, Bossa, Samba....usw. versuchen zu realisieren.
Im Moment haben wir 4 gleich lange Töne die auf kein Style hinweisen, aber das Später wenn Interesse hast.
LG Antonio
Anzeige
AW: Midi
22.03.2022 06:57:58
Antonio
Kästchen vergessen
LG
AW: Melodie u. Begleitung
22.03.2022 10:12:27
Antonio
Hallo Karl-Heinz,
Habe geschafft Melodie und Begleitung zum klingen gebracht.
Habe versucht das sie beide gleichzeitig klingen durch das ändern vom Sub Play, vergeblich.
Ich poste hier die Mappe mit dem letzten Ergebnisse.
https://www.herber.de/bbs/user/151953.xlsm
Die zwei Tabelle sind wichtig, alles andere sind Hilfsmittel.
LG Antonio
AW: Melodie u. Begleitung
22.03.2022 17:35:40
volti
Hallo Antonius,
Du kannst unter VBA nicht zwei Subs gleichzeitig laufen lassen.
Allerdings mit Trick 17 kann man die Melodie und die Begleitmusik doch gleichzeitig abspielen. Hierzu habe ich mal zwei Timerfunktionen eingeführt.
Probiere mal, ob das so funktioniert. Mir scheint, es könnte Gleichheitsprobleme geben, die man aber evtl. durch Setzen anderer Zeiten ausgleichen kann.
Playmusik.xlsm
Code:


Option Explicit Private Declare PtrSafe Function SetTimer Lib "user32" ( _ ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr, _ ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr Private Declare PtrSafe Function KillTimer Lib "user32" ( _ ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr) As Long Private Declare PtrSafe Function midiOutClose Lib "winmm.dll" ( _ ByVal hMidiOut As LongPtr) As Long Private Declare PtrSafe Function midiOutOpen Lib "winmm.dll" ( _ lphMidiOut As LongPtr, ByVal uDeviceID As Long, _ ByVal dwCallback As LongPtr, ByVal dwInstance As LongPtr, _ ByVal dwflags As Long) As Long Private Declare PtrSafe Function midiOutShortMsg Lib "winmm.dll" ( _ ByVal hMidiOut As LongPtr, ByVal dwMsg As Long) As Long Dim hMidiOut As LongPtr Dim hTimerMel As LongPtr, hTimerBeg As LongPtr Dim iZeileMel As Long, iZeileBeg As Long, iAnz As Integer Sub StartBeide() iAnz = 0 StartMelodie StartBegleitung End Sub Sub StartMelodie() iZeileMel = 1 iAnz = iAnz + 1 If hMidiOut = 0 Then midiOutOpen hMidiOut, 0, 0, 0, 0 hTimerMel = SetTimer(0&, 0&, 10, AddressOf MelodieProc) ' Melodie-Timer setzen End Sub Sub StartBegleitung() iZeileBeg = 1 iAnz = iAnz + 1 If hMidiOut = 0 Then midiOutOpen hMidiOut, 0, 0, 0, 0 hTimerBeg = SetTimer(0&, 0&, 10, AddressOf BegleitungProc) ' Begleitungstimer-Timer setzen End Sub Sub MelodieProc() KillTimer 0&, hTimerMel: hTimerMel = 0 ' Melodie-Timer löschen iZeileMel = iZeileMel + 1 With ThisWorkbook.Sheets("Midi") If iZeileMel > .Cells(.Rows.Count, "A").End(xlUp).Row Then iAnz = iAnz - 1 If iAnz < 1 Then midiOutClose hMidiOut: hMidiOut = 0 Exit Sub End If If iZeileMel > 2 Then _ PlayMIDI .Cells(iZeileMel - 1, 1).Value, .Cells(iZeileMel - 1, 2).Value, 0 PlayMIDI .Cells(iZeileMel, 1).Value, .Cells(iZeileMel, 2).Value, .Cells(iZeileMel, 4).Value hTimerMel = SetTimer(0&, 0&, .Cells(iZeileMel, 3).Value, AddressOf MelodieProc) End With End Sub Sub BegleitungProc() KillTimer 0&, hTimerBeg: hTimerBeg = 0 ' Begelitungs-Timer löschen iZeileBeg = iZeileBeg + 1 With ThisWorkbook.Sheets("Midi") If iZeileBeg > .Cells(.Rows.Count, "F").End(xlUp).Row Then iAnz = iAnz - 1 If iAnz < 1 Then midiOutClose hMidiOut: hMidiOut = 0 Exit Sub End If PlayMIDI .Cells(iZeileBeg, 6).Value, .Cells(iZeileBeg, 7).Value, .Cells(iZeileBeg, 9).Value hTimerBeg = SetTimer(0&, 0&, .Cells(iZeileBeg, 8).Value, AddressOf BegleitungProc) End With End Sub Sub PlayMIDI(iVoiceNum As Integer, vNoteNum As Variant, Optional iVolume As Integer = 127) Dim i As Integer, vArr As Variant If hMidiOut = 0 Then Exit Sub ' Kein Handle=>raus If iVoiceNum > 0 Then _ midiOutShortMsg hMidiOut, (256 * iVoiceNum) + 192 ' Instrument wählen vArr = Split(vNoteNum, ",") ' Noten zusamenstellen For i = 0 To UBound(vArr) midiOutShortMsg hMidiOut, RGB(144, vArr(i), iVolume) '144 = h90 Next i DoEvents End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

AW: Melodie u. Begleitung
23.03.2022 07:48:25
Antonio
Hallo Karl-Heinz,
Trick 17 ist eine sehr vrdmmt.... gute Sache.
Ich habe dein Code eingefügt und FUNZT erstmal super.
Mit der Gleichheit hast du Recht.
Werde ein ganzes Stück aufschreiben, mit den Zeiten spielen dann bekommst du die Ergebniss.
Vielen Dank
bis bald
LG Antonio
AW: Ergebnis
23.03.2022 10:13:49
Antonio
Hallo Karl-Heinz,
es FUNZT sehr gut,
die Melodie spielt gut aber die Begleitung am Anfang ist alles im Takt dann wird ein Hauch langsamer.
Habe versucht im Timer der Begleitung den tempo zu erhöhen von 0,0,10 auf 0,0,8 ist aber schwierig zu abstimmen.
Höhr dir den Stück einzeln, bei der Begleitung habe erreicht durch verändern der Duration ein Bossa Nova Rhythmus zu bekommen.
Wollte ein STOP Button einbauen mit Sub MelodieProc() und Sub BegleitungProc()
ohne richtige Resultate, einmal beim drucken auf Stop hat sich Excel verabschiedet.
Wäre moglich 3 Stop Button einzubauen bzw. schau im Tabellenblatt ob sowas möglich ist.
https://www.herber.de/bbs/user/151975.xlsm
LG Antonio
AW: Ergebnis
23.03.2022 13:12:57
volti
Hallo Antonius,
hier eine neue Version, die auch Stopp und Pause beinhaltet.
Die Synchronisierung zwischen Melodie und Begleitung sollte anhand der genauen Timerzeitangaben theoretisch passen.
In der Praxis ist das aber schwierig, da ggf. Excelintern Abläufe hier stören könnten.
Ich habe noch keine Idee, wie man das besser synchronisieren könnte.
Excel ist halt eine Tabellenkalkulation und kein Musiktool.
Musiktool.xlsm
viele Grüße
Karl-Heinz
AW: Ergebnis
23.03.2022 14:10:31
Antonio
Hallo Karl-Heinz,
Ich muss leider für die Firma weg.
werde morgen wieder Online sein.
Habe aber Zeit gehabt die Buttons auszuprobieren, SUPER.
Excel ist halt eine Tabellenkalkulation und kein Musiktool.

Sag das nicht, wenn du mir ein E-Mail Addresse schicken kannst werde ich dir was zukommen lassen, zu gros fürs Forum ca.800 KB.
Bis Morgen
LG Antonio
AW: Ergebnis
23.03.2022 14:11:23
Antonio
MusikTool SUPER!!!!!!!!!
LG
AW: Globale Variable
25.03.2022 07:43:43
Antonio
Hallo Karl-Heinz,
eine Frage, kann man instrument und Volume in eine globale Variable schreiben?
Hast schon deine Idee wegen eine genaure Synkronisierung?
LG Antonio
AW: Globale Variable
26.03.2022 12:41:04
Piet
Hallo
kann man instrument und Volume in eine globale Variable schreiben?
Ja, mit dem Befehl "Global" (alte Version) oder mit "Public" (neue Version)
Zu beachten ist, das sich solche Öffentlichen Variablen sich nicht von selbst löschen! Sie müssen also bei jdem Makroaufruf am Anfang gelöscht werden, es sei denn man will genau diese Daten im nächsten Makro verarbeiten. Die Werte dieser Variablen bleiben solange bestehen bis sie durch ein Makro gelöscht werden!!
mfg Piet
AW: Globale Variable
26.03.2022 12:48:42
Piet
Nachtrag
Global odfer Puclic kann auch für Const Anweisdungen verwendet werden! Dann gilt diese Const Variable für alle makros.
Der Befehl MUSS aber immer ganz oben im Blatt stehen, und die Variable darf nur in einem Blatt auf Public gesetzt sein!
PS. Denselben Variablennamen kannst du auch in einem anderen Blatt hinter Sub mit Dim benutzen, dann wird der Wert durch Dim gelöscht!
mfg Piet

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige