Probleme mit Wiedergabe eines Sounds

Achte bitte darauf, dass Du mit deinem Thema bzw. mit deiner Frage im richtigen Bereich bist.
Die Bereiche sind: Einstellungen im Forum, EEP aktuell ab EEP7 , Splines, Rollmaterialien, Immobilien, Landschaftselemente, Signale und Schaltung, Anlagenvorstellungen, Schnappschüsse Konstrukteure, EEP Treffen , Laberecke, Online - Handbuch EEP Vielen Dank für die Unterstützung das Forum übersichtlich zu halten.
Bilder/Fotos aus dem Internet sind nur als Link gestattet. Eigene Fotos, also Fotos aus dem realen Leben, sind erstens mit Eigenes Bild als Quellenangabe zu kennzeichnen und zweitens nur als Dateianhang im Beitrag zulässig. Bilder ohne Quellenangaben und Bilder dessen Quelle das Internet wie z. B. Google ist, werden gelöscht.
  • Hallo,

    möchte gerne einen Bahnübergang beim Öffnen und Schließen von einem ortsabhängigen Schrankenlautwerk begleitet haben.

    Ein Sorry vorab, habe im Wulst der Informationen leider nichts gefunden...

    Wenn ich aber (was von der Steuerung her in Lua bestens klappt) "Schrankenlautwerk.wav" aus dem Ordner "Kontakt" über EEPPlaySound("Kontakt/Schrankenlautwerk.wav") anspreche,

    bekomme ich diesen Sound, narürlich, wenn eingeschaltet überall auf der Anlage zu hören. Auch bei einer Distanz von 2Km.

    Nicht ortsabhängig beschränkt. Steht ja auch im Lua Beschreibung und Handbuch als solches deklariert.

    Zitat: "Zweck - Spielt ortsunabhängig eine Sounddatei ab".

    Allternativ habe ich es also mit LSElement/ Klänge/"Lautwerk einer Bahnschranke" versucht. Hier ertönt der Sound zwar platzgebunden, aber ist im "Playmodus" nicht zum Schweigen zu bringen.

    In Lua mit EEPStructurePlaySound("#1_Lautwerk einer Bahnschranke",false), EEPStructurePlaySound("#2_Lautwerk einer Bahnschranke",false) oder auch EEPStructurePlaySound("#1",false) und

    EEPStructurePlaySound("#1",false) über SoundKP probiert die beide Lautsprecherboxen zu beruhigen, aber ohne Erfolg.....


    Herzlichen Dank im Voraus!

  • Die ganzen Lautsprecherboxen mit fest zugeordneten Klängen sind uralt und lassen sich nicht "beruhigen".

    Bei der EEP-Version, wo die Lua-Befehle dazugekommen sind, müssten zwei neue Lautsprecherboxen (eine Dauersound, eine einmalig?) dabei gewesen sein, denen du einen Sound selbst zuweisen kannst/musst. Diese solltest du per Lua ansteuern können.

    Viele Grüße

    Benny

  • Hallo Benny,

    hat ein wenig gedauert, aber, wie von dir richtig angegeben, gibt es 2 Lautsprecherboxen "neueres Modell" .

    Die findet man unter LSElemente/Eigene Sounds als "Eigener Sound"oder als "Eigener Sound (endloss)".

    Ohne herumprobieren geht's wohl nicht. Aber wenn man den richtigen Sound gefunden und in der Lautsprecherbox angewählt hat, klappt es tadelos.

    Allerdings, man sollte den Aktivierungsdistanz hoch genug einstellen, damit man nicht zu weit von der Quelle entfernt ist, (und deswegen dann nichts hört!)

    Hatte ausserdem das Problem, das der ausgewählte Klang "Lautwerk einer Bahnschranke" von sich aus 24 mal bimmelt. Da reicht dann ein SoundKP-Lua-Aufruf mit EEPStructureSound("#1",true) und direkt hinter d'ran ein EEPStructureSound("#1",false) um die Wiedergabe, wie gewollt, auszulösen.

    Herzlichen Dank, Benny

  • direkt hinter d'ran ein EEPStructureSound("#1",false)

    macht nichts sinnvolles, weil beide Befehle zugleich an EEP gehen. Im selben Zyklus.

    Du hast nicht einmal Kontrolle darüber, ob EEP sie auch in dieser Reihenfolge abarbeitet.

    Du musst beim Zusammenspiel von EEP und Lua "rundenbasiert" denken.

    Dafür hast du die EEPMain() Schleife zur Verfügung.

  • Hallo Goetz,

    habe aus "übersehen" das Deaktivierungs-KP auch noch mit ins spiel gehabt.

    Da ich die nicht-endloss-Lautsprecherbox verwende reicht es nur mit EEPStructureSound("#1",true) zum Erfolg zu gelangen. Der ganze Sound wird 1x abgespielt...., muss anscheinend nicht abgeändert werden.

    Nur Teststrecke für Soundauslösung in (k)eine Anlage verbaut. Habe auch nach 50 mal keine Abweichung feststellen können.

    Nimm's mir nicht übel, aber ein Computer und vermutlich auch Lua, bearbeitet doch eins nach dem andern ab, sonst wäre z.B. eine if...then Schleife-Verschachtelung nicht mehr zurechnungsfähig.

    Es laufen Prozesse nicht doch parallel ab?!

    Nix für Ungut und herzlichen Dank, Goetz

  • ein Computer ... bearbeitet doch eins nach dem andern ab,

    Ja, das ist richtig.

    Aber Lua hinterlässt nur eine Sammlung von Befehlen für EEP. Ausgeführt werden die nicht von Lua.

    Und in welcher Reihenfolge diese Liste von EEP abgearbeitet wird, hat nicht zwingend mit der Reihenfolge zu tun, in der diese Befehle von Lua übergeben wurden. (Ungefähr so, wie in pairs() in Lua eine Tabelle auch nicht in der Reihenfolge liest, in der sie erstellt wurde.)

    Mit jedem EEPMain() Durchlauf findet solch ein Datenaustausch zwischen EEP und Lua statt. Egal, ob das, was ausgetauscht wird, in der EEPMain() Funktion steht oder z.B: als Reaktion auf einEEPOnSignal_id() oder ähnliches geschieht. Alles passiert in diesem Takt. Weil so sicher gestellt ist, dass EEP ungestört von Lua seine Arbeit erledigen kann.

    Wenn man also zwischen zwei "widersprüchlichen" Befehlen oder sequenziellen Befehlen einen Takt vergehen lässt, dann hat man sie auch sicher in der gewünschten Reihenfolge.

  • Schöner Abend, Goetz!

    Ich kenn mich sicherlich nicht besonders mit Lua aus, und habe halt das was ich bislang erreichen wollte, wo möglich auf primitive Weise umsetzen können. Aber es funktioniert.

    Und wenn ich dann deine letzte Reaktion (#6) hier lese, dann befürchte ich förmlich bald zu riechen wo die ganze Problematik entsteht.

    Wenn in eine Tabelle die Reihenfolge nicht zwingend eingehalten, als solches, übergeben wird, spielt das keine besondere Rolle solange der Identifier beibehalten wird.

    Aber ob ich erst was ein-, dann aus-schalte, oder umgekehrt.... Ist so eine Sache.

    Es bleibt doch wohl dabei, dass eine Abhandelung in seine Wertigkeit 1:1 übertragen wird.

    Eine Funktion ist ein ganzer Durchgang, und wird nicht zweimal durchlaufen, wenn Parameter und/oder Voraussetzungen nur den Einzelfall walten lassen. Und wenn EEP es sich anders überlegt?

    Es ist mir klar das EEP Lua von 0,2 Sekunden nur ein spärlicher Teil Lua überlässt sich gefügig für EEP zu machen.

    Schließlich sollte EEP selber hauptsächlich zur Züge kommen. Aber diese Lua-Zykluspaketchen sind in sich stimmig, und werden wenn's gut läuft als solches weitergereicht. Wird in einem Zyklus eine variable abgeändert, wird der nächste Wert weitergegeben. Würde die Reihen folge nicht mehr übereinstimmen, würde hier dann der erste Variablenwert als plausibel weitergereicht. Das darf nicht sein....

    Um jetzt zu ein vernünftiger Schluß zu kommen, das Abschalten von den Sound (da nicht endlos) war überflüssig.

    Dies habe ich wieder entfernen können.

    Nix für Ungut, Goetz und herzlichen Dank für all' deine Bemerkungen.

    Was sich nicht bewegt rostet. Danke!

  • Eine Funktion ist ein ganzer Durchgang, und wird nicht zweimal durchlaufen ...

    Die Reihenfolge ist bei jedem Zyklus folgende:

    EEP hat vor dem Datenaustausch eine Reihe von Daten zur Anlage in einen Datenbereich kopiert, auf den Lua Zugriff hat. Dort findet Lua also einen "eingefrorenen", aktuellen Zustand der Anlage. Einen Snapshot. Jeder Zugriff auf Anlagendaten bedient sich aus diesem Snapshot.

    Alle Lua Funktionen hinterlassen in einem zweiten Datenbereich ein Datenpaket, welches EEP nutzt um Aktionen auszuführen. Dort steht z.B. für ein bestimmtes Signal eine bestimmte Stellung. Dieses komplette Datenpaket, welches Lua in einem Zyklus für EEP hinterlässt, wird im Anschluss von EEP abgearbeitet. Und dann ist es von der Reihenfolge der Funktionsaufrufe im Lua-Skript entkoppelt. Weil es EEP-seitig nur eine Tabelle mit Wertepaaren ist.

    Der Lua Befehl EEPSetSignal() schaltet also kein Signal (wie der Funktionsname suggeriert.) Sondern er schreibt nur ein Wertepaar (Signal, Stellung) in ein Datenpaket.

    Deshalb bekommst du z.B. bei der Befehlsfolge EEPSetSignal(), EEPGetSignal() im selben Zyklus mit der zweiten Funktion immer die alte Signalstellung zurück und nicht die neue.


    Das soll bitte keine Prinzipienreiterei von mir sein, sondern eine gut gemeinte Hilfestellung. Wenn du diese modellhafte Vorstellung des Zusammenspiels von EEP und Lua im Hinterkopf behältst, dann wirst du dich mit Lua leichter tun. Weil du dann weißt, welche Daten du wann erwarten musst.

  • Der Lua Befehl EEPSetSignal() schaltet also kein Signal (wie der Funktionsname suggeriert.) Sondern er schreibt nur ein Wertepaar (Signal, Stellung) in ein Datenpaket.

    Hier möchte ich doch bemerken, das ich nie eine Abfrage nach eine Änderung pflege, weil die Änderung bekannt ist. Und ich bediene mich mit dem Variable in seinem Ursprung, da ich den wissen muß, und nur mit diesem in diesem Moment arbeiten kann/darf. Speichere dafür logischerweise den abgeänderten Wert.

    Diese Handhabung ist nur sinnvoll, weil es überflüssig wäre etwas abgeändertes abzufragen, da das Ergebnis bereits bekannt ist. Als Variable in einer if... then Schleife ist immer der bekannte Wert zu nehmen, und der geänderte als Neuergebnis zwischenzupeichern. Das Lua interaktiv mit EEP erst bei folgenden Zyklus mir den Neuwert zu verfügung stellen kann ist mir klar. Aber daraus spricht auch wieder eins-nach-dem-andern.

    Ich befürchte wir haben uns da misverstanden. Hier habe ich eher ein nicht eindeutiges Kommunizieren /Übersetzen von Lua in EEp und zurück herausgelesen.

    Du gehst das alles sehr tiefgehend an. Ich habe erst in Juni letztes Jahres überhaupt EEP entdeckt. Und sehe Lua als eine sehr postive und äußerst potentiale Möglichkeit Problemstellungen in EEP zu erledigen, die rein mit KP's und andere Boardmitteln nicht oder umständlicher zu meistern sind.

    Zu deiner Information: Ich habe bereits in die achtziger Jahre bereits Basic und Maschinensprache (Was bleibt bei ein Computer mit ein Total speicherkapazität von 64 Kb auch übrig) getätigt. Und einiges an Basiswissen ist damit längst verinnerlicht, wenn auch nicht bewusst.

    Ich gehe eventuell anders an der problematik heran, aber ich suche auch nur die Lösung des Problems. Letztendlich nicht das Problem oder den Konflikt "Lua mit EEP", oder "EEP mit Lua".

    Das schöne an EEP ist die Vielfalt. Ob das Gleisen/Straßen/Wasserwege (alleine schon dieses Assortiment) verlegen, Bäume pflanzen , siedlungen, Bahnhöfe oder Industrielles gestalten betrifft. Es ist umwerfend was für eine Eigendynamik das Ganze entwickeln kann, wenn man sich damit befasst. Und es ist natürlich reichtum sich mit virtuellen Probleme (statt tatsächliche) plagen zu können. Der mensch braucht nunmal Beschäftigung (Probleme is hier weniger diplomatisch angesagt), allerdings lieber virtuell.

    Und wenn es dann noch ein Forum gibt, und einen Goetz, einen Benny oder Dieter (möchte aber Keiner ausschliessen), dann kann man sich schon verehrt fühlen.


    Damit dieser Eintrag nicht gänzlich vom Thema abschweift!

    Für EEPStructurePlaySound("#1",true | false) muss man in der neue Lautsprecherbox, wie im Handbuch vermeldet, die Aktivierungsdistanz auf "null" stellen, da sonst bei Kamera Ein- oder Zu-Schaltung innerhalb der festgelegte Distanz unter Objekteigenschafte der Sound aktiviert wird. Da musste ich trotz Deklarierung im Manual doch feststellen, daß die Fehlersuche etwas würmen kann.

    Ich finde es schön, gerade Dank sei dir, den Gedankengang dieses Themas zu tätigen. Es regt sehr den Gedankenfluß an. Wobei ich immer wieder aufpassen muss nicht überschwindlich zu werden, wenn mir das Ausmaß an Potenzial von Lua in EEP ins Auge springt.

    Aber wie das so ist, man muss wieder mit beide Füsse zur Boden hinfinden...

    Danke, Goetz!

    Einmal editiert, zuletzt von subwait (26. Februar 2019 um 07:13) aus folgendem Grund: Zitatfehler

  • Sorry Goetz,

    sehe gerade das ich dein Zitat an mir gerissen habe.

    Da ist mir leider ein Betätigungsfehler mit dem Zitatenmodul unterlaufen. Ist ja das erte Mal...

  • Da ist mir leider ein Betätigungsfehler mit dem Zitatenmodul unterlaufen.

    Nicht schlimm, subwait.

    Solche Fehler kannst du korrigieren, wenn du möchtest.

    Dafür gibt es am unteren Rand deines Postings "Bearbeiten" bzw. "Edit".

    Und das Symbol ganz links auf dem blauen Balken über deinem Posting (ein Batt Papier) führt dich zum html-editor. Der macht es manchmal leichter, solch ein Zitate-Wirrwarr aufzudröseln.

  • Guten Morgen, Goetz!

    unter #9 habe ich einiges mehr hineingeschrieben, was aber erst nach anklicken von "Alles anzeigen" in Erscheinung tritt.

  • was aber erst nach anklicken von "Alles anzeigen" in Erscheinung tritt.

    Nach deiner Korrektur ist nun alles sofort sichtbar. Vielen Dank.

    Aber ich hatte es auch vorher schon gefunden und gelesen :ae_1:

    Deine Erfahrung in der Programmierung verschiedener Systeme ist genau die Falle, vor der ich dich mit meiner Erklärung bewahren möchte. Das Duo EEP-Lua verhält sich anders als ein standalone Programm. Jedes für sich läuft so, wie du es von Software kennst. Aber der Datenaustausch zwischen beiden arbeitet anders, als man auf den ersten Blick meinen könnte.

  • Dazu fällt mir dann spontan die Frage ein, wie schaffe ich es ohne extra aufruf und ohne extra Belegung der EEPMain eine nächste Sequenz heranzuziehen, in welche der nächste Schritt in Lua auch der nächste Schritt in EEP ist?

    Das wäre doch die Quint-Essenz der ganze Problematik.

    Auf jeden Fall herzlichsten Dank für deine hervoragende Betreuung, Goetz

  • Das wäre doch die Quint-Essenz der ganze Problematik.

    Würde Dir nichts nützen. Wäre ausserdem Brandgefährlich und könnte den gesamten Ablauf in EEP stören.

    Nein. Es ist gut, dass es diese Quintessenz nicht gibt.

    Halte dich an die "offizielle Schnittstelle" und alles ist ok.

    :aq_1:Gruss Jürg

    Es ist müssig, dauernd den Weltuntergang heraufzubeschwören. Man muss auch aktiv etwas dafür tun. :bn_1:

  • Herzlichen dank für deine Reaktion, Jürg.

    Habe nicht vor mich an irgend einen Code oder Knackpunkt zu vergreifen.

    Das würde ich mir ganz bewust auch nicht zutrauen.

    Lua ist "ein" Mittel zur Steuerung/Lösung eventueller Probleme. Hauptvermächtnis bleibt EEP.

    Denn darum oder um die Anlage geht's

    Es ist sehr positiv von mehrere Seiten zu erfahren, die Hand mit Überlegung anzulegen, und auf gewisser Problematik hingewiesen zu werde

  • Hallo Goetz,

    das Hauptproblem beim programmieren ist das man ein Problem hat.

    In diesem Sinne hat man den besten Grund sich über Lua schlau zu machen.

    Ich würde dann auch gerne an dieser Stelle diese Lua-Themenerweiterung beenden.

    Ich hoffe du nimmst es mir nicht krumm, aber das ganze wächst schon längst über meinen Horizont hinaus.

    Nix trotz zu dem, nochmals herzlichen Dank