![]() |
Mezclando (Fading) 2 Canales (Streams) con BASS Lib
�� Requisitos
bass.dll (en la carpeta del .exe) bass.h y bass.lib enlazados al proyecto Dos archivos MP3 válidos (ej: tema1.mp3 y tema2.mp3) Un TTimer en tu formulario (llamalo FadeTimer) con Interval = 50 �� Resultado Esto hace un crossfade suave de 8 segundos entre dos MP3 en tiempo real, sin detener la reproducción, y sin usar un mezclador complejo. Declaraciones en Form1.h por ejemplo... Código:
HSTREAM stream1, stream2;Código:
void __fastcall TForm1::StartCrossfade()�� Código del FadeTimer (cada 50ms): Código:
void __fastcall TForm1::FadeTimerTimer(TObject *Sender)Interval = 50ms (0.05s por paso) 8s / 0.05s = 160 pasos Entonces cada paso debe cambiar el volumen por 1 / 160 = 0.00625 |
Si lo que queremos es alternar entre stream1 y stream2 constantemente con crossfades de 8 segundos, lo que necesitás es algo como un sistema de doble canal con fading automático, donde uno sube mientras el otro baja, y viceversa.
Mantenemos ambos streams en loop o reproducibles. Creamos un estado booleano currentIsStream1 para saber cuál está "activo". Cada vez que quieras hacer crossfade, inviertes el estado y disparas el timer. 🔸 Variables globales: Código:
HSTREAM stream1, stream2;🔸 Al iniciar la app: Código:
void __fastcall TForm1::StartStreams()Código:
void __fastcall TForm1::StartCrossfade()🔸 Timer de crossfade: Código:
void __fastcall TForm1::FadeTimerTimer(TObject *Sender)🔸 Para automatizar el cambio cada X segundos: Agrega un segundo TTimer (llamalo AutoSwitchTimer) con Interval = 30000 (por ejemplo, 30 segundos), y su código sería: Código:
void __fastcall TForm1::AutoSwitchTimerTimer(TObject *Sender) |
^\||/^\||/^\||/
|
Gracias por el código.
^\||/ |
| La franja horaria es GMT +2. Ahora son las 03:06:02. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi