Seite 1 von 1

Audio-Player mit Überblendung, Web-Radio-Automation

Verfasst: 07.12.2006 16:05
von Eckhard.S
Hallo Leute!

Wir wollen demnächst ein eigenes nichtkomerzielles Fachhochschul-Radio ins Leben rufen. Neben Live-Moderation soll dann aber auch eine Sendeautomation stattfinden, die Musik und (aufgezeichnete Wortbeiträge) automatisch abspielt. Es gibt natürlich nette (teure) Programme dafür, aber es soll etwas mehr können und das wollte ich mit PB zusammenbasteln.

Im Prinzip soll es funktionieren wie zwei Audio-Player, die abwechselnd anspringen und schöne Überblendungen oder auch sogenannte "Ramp talks" erzeugen.
Hier ist ein Beispiel:
http://www.sauerlandwelle.de/ramptalk/

Ob ein Lied eine "Ramp" (also ein Intro) hat, könnte man in die mp3-Tags schreiben. Ebenso, wie es hinten ausgeblendet werden soll.

Wer hat hierzu Tipps und Hilfen und Codeschnipsel?

Verfasst: 07.12.2006 17:26
von AND51
Also eine einfache Überblendung zweier Songs, wenn ich das richtig verstehe, kannst du erzielen, wenn du das Lied, das gerade zu Ende geht, leiser werden lässt, das zu Startende Lied startest und von Lautstärke 0 auf Lautstärke 100 gehst.

Es gibt ja den Befehl SoundVoulume() (oder so ähnich), diesen verknüpfst du einfach mit einer Schleife.

Wie man ein Echo hinbekommt wäre für mich ein (kleines) Kunststück, keine AHnung im Moment.

Noch ein Tipp: Mit SoundPitch() (oder so ähnlich) kannst du die Sounds verfremden. Das wäre doch vielleicht auch noch was für eine Animation.

Verfasst: 08.12.2006 07:54
von #NULL
soweit ich weiß gibt es aber keine direkte PB-funktion um die aktuelle abspielposition zu erfahren.

Verfasst: 08.12.2006 14:37
von AND51
Keine direkten, aber einer hat hier Prozeduren gepostet, die exakt das herausfinden. Er hat außerdem noch eine Menge anderer Prozeduren gepostet, die mit den PB Sound befehlene zusammenarbeiten und noch mehr Möglichkeiten aufzeigen.

So kann man bei SOunds die Position erfahren. Andere Methode: Man spielt die Sounds mit InitMoive() & Co. ab, dort kann man dann die Position der Musik ermitteln.

Verfasst: 08.12.2006 14:41
von bobobo
AND51 hat geschrieben:.... Andere Methode: Man spielt die Sounds mit InitMoive() & Co. ab, dort kann man dann die Position der Musik ermitteln.
Die Position ist bei MP3en dann nicht unbedingt sicher oder wird nicht ausgewertet..

maW :Taugt nicht (und anders schreiben tut man es auch :) )

Verfasst: 08.12.2006 14:54
von AND51
Dann wird man wohl oder übel die selbstgemachten Prozeduren aaus diesem Forum nehmen müssen.

Es sei denn, man ermittelt vorher, wie lange ein Ond dauert (z. B. über ID-Tags) und lässt eine programminterne Uhr mitlaufen... :mrgreen:

Verfasst: 08.12.2006 15:04
von Froggerprogger
Ich würde dir die Verwendung einer Audio-Library ans Herz legen, da PB's hauseigene Soundmöglichkeiten doch sehr begrenzt sind.
Mein Favourit ist fmod, dies bietet allerdings auch viele Funktionen, die nicht unbedingt benötigt werden. fmod ist kostenlos in kostenloser Software. Wenn das Programm also nur von euch genutzt wird, oder kostenlos vertrieben, kann man ohne Probleme fmod nutzen. Ansonsten gibt es noch eine recht kostengünstige Shareware-Lizenz, danach aber wird richtig teuer.
Infos hier: www.fmod.org

Alternativen dazu sind wohl audiere und bass.dll, jeweils mal nach googlen.

Was alle bieten, ist das gleichzeitige Abspielen von soundfiles und völlige Kontrolle darüber.

Ein paar nützliche Konzepte von fmod:
Es gibt einen virtuellen 'Mixer', die Wiedergabe von Soundfiles geschieht also über Kanäle, die auch auf Submixbusse geschickt werden können.
Überall in der Signalkette können DSP-Fx eingebunden werden. Entweder selbstprogrammierte (einfach ne Callback-Funktion, die den gegenwärtigen Audiobuffer übergeben bekommt), oder VST-PlugIns oder DirectX-Hardwareeffekte (sofern diese von der Soundkarte unterstützt werden). DirectX-Software-PlugIns werden (glaube ich) noch nicht unterstützt. So könnte man beispielsweise noch einen Multibandkompressor-VST-PlugIn auf den Master-Out legen, sofern ihr da keinen edlen analogen für das Ende der Signalkette vor der Übertragung habt. (Ich denke, die Begriffe sind dir nicht fremd, denn dein Screenshot zeigt Samplitude - mein absoluter Favourit unter Audioschnittprogrammen :D )

Dinge wie Wiedergabe von Soundfiles aus dem Speicher oder per Stream (selbst Internetstreams) sind also ganz einfach möglich, ebenso wie exakte Positionierungen, pause, langsamer, leiser, lauter.

Für Events wie "Sound vorbei", etc. kann man auch Callback-Funktionen aufrufen lassen, ebenso für Marker in den Soundfiles. Dabei ist fmod extrem zuverlässig und ressourcenschonend.

Nachteil: Es ist nicht mit einem einfachen LoadSound() PlaySound() getan, sondern alles ein klein bißchen komplizierter, man muss sich also schon etwas in fmod reinfuchsen. Dazu gibt es von den Entwicklern eine sehr gute fmod.chm-Hilfe, zahlreiche Tuts, Beispiele in diversen Sprachen und auch hier im Forum gibt es einige Beispiele in PB.

Und bei konkreten Fragen gibts ja auch dieses Forum...