Je nach Softwareversion werden nur das JQ6500-Soundmodul (LocoTurn V1.0) oder das JQ6500-Soundmodul und der DFPlayer unterstützt (ab LocoTurn V1.1).
Die Lautstärke kann über das Menü oder über DCC-Befehle eingestellt werden. Der Wert der Laustärke (0 - 30) wird im EEPROM des Nano gespeichert und beim nächsten Einschalten von LocoTurn wieder geladen. Weiterhin kann der Sound generell über das Menü aktiviert/deaktiviert werden.
Hier die beiden Module, links der DF-Player und rechts das JQ6500:
Es ist zwar möglich, Soundausschnitte aus YouTube-Videos und anderweitigen Quellen privat zu nutzen; es wäre dann aber rechtlich schwierig, diese zu veröffentlichen. Wer die Möglichkeit und Beziehungen hat, den Ton einer Drehscheibe aufzuzeichnen, der kann sich gerne einbringen.
Hier gibt es gute MP3-Dateien von Drehscheiben-Sounds, die als Ausgangspunkt eine gute Basis bilden und ggf. bearbeitet/getuned werden müssen:
Für das Bearbeiten von mp3, wav oder ähnlichen Formaten eignet sich das kostenlose Programm Audacity https://www.audacity.de/. Hierfür gibt es im Netz gute Beschreibungen und Tutorials.
Als Lautsprecher muss ein 8 Ohm, 3 Watt Modell verwendet werden.
Je nach verfügbarem Platz und Einbauort gibt es die unterschiedlichsten Lautsprecher-Größen, von winzig wie einem ESU-Brüllwürfel für den Einbau in Loks bis hin zu größeren Modellen mit mehreren cm Durchmesser.
Die Sketch-Version V1.0 unterstützt nur das JQ6500-Soundmodul.
Für Drehscheibenbewegungen sollten 3 Soundfiles auf dem JQ6500 abgespeichert werden, aktuell werden davon nur 1 und 3 genutzt:
Folgende #defines sind wichtig:
#define SOUND1_FILENR 1 // sound/file number of JQ6500 for turntable start and running (Hupe, Anfahren und Drehen) #define SOUND2_FILENR 3 // sound for turntable stop (aktuell nur die Hupe)
Es können bei Bedarf noch weitere Sounds auf das JQ6500 gespielt werden, diese lassen sich dann über DCC-Befehle abspielen. Die Auswahl erfolgt über die #defines:
#define DCC_SOUNDFILE_1 1 // File-Nr. auf dem Soundmodul, das abgespielt wird mit dem entsprechenden DCC-Befehl #define DCC_SOUNDFILE_2 2 // J6500; Dateien stehen im Rootverzeichnis, Reihenfolge geht nach Reihenfolge des Kopierens auf das Modul #define DCC_SOUNDFILE_3 3 // DFPlayer: Dateien müssen im \mp3-Folder stehen, Nomenklatur 0001_beliebiger Text (4-stellige Nummer, führende Nullen + sprechender Text) #define DCC_SOUNDFILE_4 4 #define DCC_SOUNDFILE_5 5 #define DCC_SOUNDFILE_6 6
Die Versionen V1.1 und höher verwenden entweder das JQ6500-Soundmodul oder den DFPlayer.
In der Turntable_config.h muss das gewünschte Soundmodul beim #define USE_SOUNDMODULE hinterlegt werden:
#define DFPLAYER 1 // mit DS-Kartenslot #define JQ6500 2 // 2MB Speicher onboard #define USE_SOUNDMODULE DFPLAYER //JQ6500 Auswahl des verwendeten Soundmoduls
Auf das JQ6500-Modul passen 2 MByte mp3-Files, das reicht bei guter Sampling-Rate für mehrere Minuten Sounds.
Der DFPlayer verfügt über einen Micro-SD-Karten-Slot und unterstützt Karten bis 32 GByte (kleinere Karten bekommt man fast nicht mehr ). Hier kann man hohe Sampling-Raten verwenden und etwas verschwenderischer mit dem Speicherplatz umgehen.
Allerdings sind die DFPlayer etwas heikel: Es gibt verschiedene Versionen mit unterschiedlichem Chipsatz, die auch noch verschiedene Firmware-Versionen aufgespielt haben. Ich habe nicht alle Kombinationen getestet, daher kann es sein, dass das euer eingebautes Modul nicht mit dem Sketch funktioniert! Da hilft nur ausprobieren; bei ein paar € pro DFPlayer hält sich der finanzielle Verlust in Grenzen.
Je nach Platinenversion muss das verwendete Soundmodul entweder über einen Lötjumper oder einen Workaround ausgewählt werden.
Ab Platinenversion V1.1 gibt es einen 3-fach Jumper JP17 „Sound“. Dieser liegt unter dem Nano-Steckplatz. Der Jumper muss entsprechend des verwendeten Soundmoduls mit Lot überbrückt werden. Entweder die linken beiden Lötpunkte (JQ6500) oder die rechten beiden (DFPlayer).
Die Platine V1.0 unterstützt standardmäßig nur das JQ6500-Modul. Daher muss mann bei der Platine V1.0 den DFPlayer mit einem Workaround anschließen, da er nicht wie der JQ6500 an der hardware serial, sondern an einer software serial Schnittstelle betrieben wird:
Der DFPlayer wird softwaremäßig über eine serielle Schnittstelle angesteuert. Es kann sein, dass sich die Ansteuerung mit der MobaLedLib-Schnittstelle in die Quere kommt. Dies wurde bislang nicht getestet!
Beim Abspielen von Sounds bestehen zwei Möglichkeiten, die über das #define ADVANCED_SOUND gesteuert werden:
Empfehlung:
Für die einfache Version reicht ein JQ6500 aus. Um erste Erfahrungen zu sammeln, sollte man damit starten.
Wer unbedingt einen Bremssound beim Abbremsen der Bühne kurz vor dem Zielport haben möchte, kommt um die advanced Version nicht herum.
Diese ist etwas aufwendiger, da mehrere passende Soundfiles erzeugt werden müssen. Aufgrund des Speicherbedarfs ist hierfür nur der DFPlayer zu empfehlen.
Für Drehscheibenbewegungen sollten 3 Soundfiles auf dem Soundmodul abgespeichert werden, aktuell werden davon nur 1 und 3 genutzt:
Folgende #defines sind wichtig:
#define SOUND1_FILENR 1 // sound-file number of JQ6500/DFPlayer for turntable start and running (Hupe, Anfahren und Drehen) #define SOUND2_FILENR 3 // sound for turntable stop (aktuell nur die Hupe)
Es können bei Bedarf noch weitere Sounds auf den DFPlayer gespielt werden, diese lassen sich dann über DCC-Befehle abspielen.
Für die advanced Version benötigt man mehrere Soundfiles und zwar je ein File für jede Fahrmöglichkeit zwischen Start- und Zielport. Aufgrund der benötigten Datenmenge bei annehmbaren Sampling-Raten ist diese Version nur mit dem DFPlayer und einer entsprechenden Speicherkarte sinnvoll zu nutzen!
Üblicherweise liegen die Ports einer Drehscheibe in einem bestimmten Raster. Die folgenden Ausführungen beziehen sich auf eine Fleischmann-Drehscheibe. Diese besitzt maximal 48 Gleisabgänge, die im 7.5°-Raster angeordnet sind. Das Raster, auf das sich die Entfernungen zwischen Start- und Zielport beziehen, ist in #define MAX_PORTS festgelegt (bei Fleischmann = 48).
Die Fahrtdauer ist immer ein ganzzahliges Vielfaches der Fahrtzeit, die die Bühne für eine Rastereinheit von 7,5°, d.h. einen Port benötigt.
Die Abbildung zeigt einige beispielhafte Fahrtdauern zwischen Start- und Zielport.
Man muss nun prüfen, welche Entfernung zwischen allen möglichen Start- und Zielportkombinationen liegen, also wieviele Raster bzw. potentielle Gleisabgänge die Drehscheibe jeweils fahren muss. Das erinnert ein bisschen an frühere ADAC-Entfernungstabellen zwischen Städten.
Bei der Drehscheibe in der Abbildung hat man folgende Fahrtdauern:
Start | Ziel | Dauer in Ports (7,5°-Raster) |
---|---|---|
1 | 2 | 1 |
1 | 3 | 2 |
1 | 4 | 4 |
1 | 5 | 7 |
… | … | … |
2 | 3 | 1 |
2 | 4 | 3 |
2 | 5 | 6 |
… | … | … |
Die Drehscheibe wählt bei LocoTurn immer den kürzesten Weg zum Zielport. Daher dreht sich die Bühne maximal um 180°, also eine halbe Umdrehung. Es reicht daher aus, 24 fahrtdauerabhängige Sounds zu definieren, um alle Fahrtmöglichkeiten abzudecken.
Als Maximalausprägung braucht man bei einer Fleischmann-Drehscheibe mit 48 Abgängen folglich 24 fahrtdauerabhängige Sounds plus die 3 Standard-Soundfiles, um alles abzudecken. Wer also zu faul ist zu zählen, welche Kombinationen auf der Drehscheibe überhaupt auftreten, ist mit 24 +3 Sounds auf der sicheren Seite.
Bei der kleinen Fleischmann-Drehscheibe mit 24 Gleisabschlüssen braucht man 12 + 3 = 15 Sounds.
Folgende Sounds werden benötigt:
Nr. | Zweck |
---|---|
1 | Hupen, Anfahren, Fahren (lange Version (5 min) für Endlos-Drehen) |
2 | Bremsen (wird aktuell nicht benutzt!) |
3 | Hupen |
4 | Hupen, Anfahren, Fahren, Bremsen, Hupen; Fahrtdauer 1 x 7,5°(1 Port) |
5 | Hupen, Anfahren, Fahren, Bremsen, Hupen; Fahrtdauer 2 x 7,5° = 15° (2 Ports) |
6 | Hupen, Anfahren, Fahren, Bremsen, Hupen; Fahrtdauer 3 x 7,5° = 22,5° (3 Ports) |
… | … |
26 | Hupen, Anfahren, Fahren, Bremsen, Hupen; Fahrtdauer 23 x 7,5° = 172,5° (23 Ports) |
27 | Hupen, Anfahren, Fahren, Bremsen, Hupen; Fahrtdauer 24 x 7,5° = 180° (24 Ports) entspricht halber Drehung (dieses File wird auch auch bei U-Turn verwendet) |
Wenn man advanced sound verwendet, dann sollte man das #define ENCODER_LOGIC auf 1 setzen.
Zur Erzeugung der Soundfiles braucht man:
Zunächst bastelt man sich ein sehr langes File zusammen, bestehend aus:
Das Fahrgeräusch kopiert man hierfür mehrfach hintereinander in das lange Soundfile, damit es ca. 5 min lang dauert. Dieses File brauchen wir später auch als File 1 (siehe oben).
Weiterhin brauchen wir ein zweites File, das folgendes enthält:
Dann muss man auf der realen Drehscheibe messen, wie lange der Sound dauern muss, um die jeweilige Fahrt vom Start- zum Zielport abzudecken. Dies hängt ab von der Steppermotor-Geschwindigkeit (#define MOVE_SPEED1) und der Anfahr-/Bremsrampe (#define STEPPER_RAMP_LENGTH). Bevor man die Sounds erzeugt, sollte man diese beiden Parameter final festgelegt haben, sonst muss man die ganze Soundbastelarie erneut durchführen.
Ändert man später im Betrieb die Geschwindigkeit (z.B. über der seriellen Monitor oder DCC-Kommandos), dann passen die soundfiles natürlich nicht mehr zum Bewegungsablauf. Der Sound wird folglich entweder zu früh fertig sein, oder zu spät aufhören!
Zur Messung der Fahrtdauern kann man im Turntable_config.h das #define FAHRTDAUER_MESSEN aktivieren, um die Dauer im seriellen Monitor ausgeben zu lassen.
Anschließend speichert man die Werte am besten in einem Excel und kann dann recht einfach berechnen, welche Soundanteile erforderlich sind, um eine bestimmte Fahrtdauer abzudecken.
Da es nicht auf die ms ankommt, werden die Dauern gerundet. Das reine Fahren sollte einen linearen Verlauf haben und proportional zur Anzahl fahrender Drehscheiben-Raster sein.
Bei mir dauern die einzelnen Soundbestandteile z.B.:
Das Excel-File steht hier zur Verfügung: berechnung_fahrtdauerabhaengige_sounds.xlsx
Aus dem langen Maximal-File nimmt man dann den jeweiligen Anteil in ms (im Excel Spalte „Länge ab Start“), kopiert ihn in ein neues Audacity file und fügt am Ende den Bremsen + Hupen Sound aus dem zweiten File ein. Dann noch als mp3 File abspeichern, mono reicht aus und schon hat man ein entsprechendes Soundfile, um von A nach zu B zu fahren. Das ganze macht man nun noch 23 Mal, bis man alle Möglichkeiten abgedeckt hat.
Hier als Beispiel das Soundfile, um 5 Ports weit zu fahren (also 5 x 7,5°):
Die Dateien speichert man auf einer SD-Karte in einem Verzeichnis „Laufwerk:\mp3\“ ab.
Die Dateien werden durchnummeriert, 4-stellig, führende Nullen, Rest vom Dateinamen kann anderweitig genutzt werden, um dem Sound einen sprechenden Namen zu geben:
Es können bei Bedarf noch weitere Sounds auf den DFPlayer gespielt werden, diese lassen sich dann über DCC-Befehle abspielen. Die Auswahl erfolgt über die #defines:
#define DCC_SOUNDFILE_1 1 // File-Nr. auf dem Soundmodul, das abgespielt wird mit dem entsprechenden DCC-Befehl #define DCC_SOUNDFILE_2 2 // J6500; Dateien stehen im Rootverzeichnis, Reihenfolge geht nach Reihenfolge des Kopierens auf das Modul #define DCC_SOUNDFILE_3 3 // DFPlayer: Dateien müssen im \mp3-Folder stehen, Nomenklatur 0001_beliebiger Text (4-stellige Nummer, führende Nullen + sprechender Text) #define DCC_SOUNDFILE_4 28 #define DCC_SOUNDFILE_5 29 #define DCC_SOUNDFILE_6 30