Development:Anforderungen Sound

Aus StellSi-Hilfewiki
Zur Navigation springen Zur Suche springen

Einstellbare Werte:

  • Lautstärke
  • Position (Pan oder Laufzeitunterschied). Soll Position auch innerhalb eines Stellwerk variiert werden können?
  • Frequenz? (wird im Soundthesizer zur Unterscheidung verschiedener Geschwindigkeiten o.ä. genutzt)
  • An/aus
  • Loop, einzeln. Für einzelnes auslösen ggf. Wahl zwischen bei steigender Flanke, bei fallender Flanke, oder bei beiden Flanken (Idee aus Soundthesizer), aber das ist vermutlich schon durch die ebenen vorher abgedeckt?
  • Achtung: Wecker, die sowohl beim Fdl als auch beim Ww auftreten können, und womöglich durch ein- und dasselbe Ereignis gestartet werden, könnten möglicherweise durch destruktive Interferenz unhörbar werden!

Fdl-Ww:

  • Bedenken: Ww kann von einer KI gesteuert werden müssen. => Die KI muss in der Lage sein, den Spieler zu informieren, wenn es mit irgendetwas nicht zurecht kommt, allerdings soll der Fdl nicht alle Meldesounds mithören müssen, die beim Ww ausgelöst werden.
  • Bedenken: Es soll zukünftig möglich sein, sein Stellwerk mit einem Kollegen gemeinsam zu bedienen. Wenn dann einer Fdl und der andere Ww spielt, muss auch hier der eine den anderen abschalten können. => Werte dürfen NICHT zwischen Server und Client syncronisiert werden!
  • In beiden Fällen kann es sein, dass der Nutzer dennoch das Fenster vom Ww offen hat, z.B. wenn er noch ein paar Bildschirme übrig hat, um zu sehen, was der andere gerade macht.

Verknüpfung von Sounds:

  • Einleitung
  • Mittelteil
  • Ausleitung
  • Ggf. setzen von Abbruchpunkten, d.h. Ende eines Sounds kann nicht an beliebiger Stelle erfolgen, sondern z.B. nur zwischen den einzelnen Schlägen eines langsam schlagenden Weckers, oder an geeigneten Verknüpfungspunkten zum Ausleitungssound?

Implementierung:

  • Verschiedenen Soundengines möglich (ggf. sogar per Plugin?) -> Basisklasse, von der die einzelnen Engines erben, welche genutzt wird ist konfigurierbar
  • Umschaltung entweder nur mit Neustart oder auch zu Laufzeit?
  • Soundengine benötigt eigenen Thread (wie gehabt)
  • Klasse "Soundfile" legt einzelne Datei fest, Klasse "Sound" verknüpft mehrere Dateien nach Bedingungen (z.B. Einleitungssound, Mittelteilsound, Ausleitungssound)
  • Erzeugung von Objekten der Klasse Soundfile (und ggf. weiterer Klassen) per Fabrikmethode der Soundengine zur Kapselung der Implementierungsdetails der jeweiligen Soundengine