PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sound Faden richtig


wolkenstuermer
26.11.2017, 22:57
Hola.

Diesmal keine Frage, sondern nur ein "ich habs nun hingekriegt" und vielleicht brauchts irgendwann ja irgendjemand.

Ich habe in Arma nie verstanden, wie man richtig Musik ein- und ausblendet. Das hat irgendwie immer gesponnen. Lag daran, dass die Programmierer von BI schon lustige Leuts sind, die mit dem Wort "intuitiv" nicht wirklich was anfangen können, bzw. ich einfach zu inkompatibel im Denken bin.

Daher nun eine Schritt-für-Schritt-Anleitung für Gleichverdummte :ugly:



Man blendet z.B. nur dann richtig ein, wenn man vorher komplett ausblendet.

0 fadeMusic 0;

Dann spielt man die Musik ab (die Zahl gibt an, ab welcher Sekunde):

playMusic ["track", 0];

DANN blendet man (z.B. 10 Sekunden) ein:

10 fadeMusic 1;

Aber das alleine bringt nix, weil hier kein "sleep" eingebaut ist, es funktioniert nur mit einem zusätzlichen sleep in Höhe des Fades:

sleep 10;

Jetzt spielt man die Länge des Stücks (und zieht davon das FadeIn, FadeOut und die anfangs ausgewählte Startzeit ab):

sleep 120-10-10-10;

Jetzt blendet man aus:

10 fadeMusic 0;

Pennt wieder exakt die Zeit vom Fade:

sleep 10;

Und kickt die Musik dann vollständig (sicherheitshalber)

playMusic "";

Für ACE3-Liebhaber (steht schon in einem anderen Thread) sei erwähnt, dass man mit

ace_hearing_disableVolumeUpdate = true;

ganz am Anfang und mit

ace_hearing_disableVolumeUpdate = false;

ganz am Ende, Ace dazu überreden kann, kurz mal innezuhalten, mit seiner Sound-Updaterei und dadurch erst das Ein- und Ausblenden in ArmA mit Ace ermöglicht.

Im Ganzen als Skript (mit Ace-Schnauze-Hinweis):

_jukeFun = ["track", 240, 10, 230, 10, 10] execVM "scripts\playMusicWithFades.sqf";


_track = _this select 0; // trackname as defined in description.ext
_trLength = _this select 1; // length of track, in sec.
_start = _this select 2; // when the track should begin, in sec.
_end = _this select 3; // when the track should end, in sec.
_fadeIn = _this select 4; // time of fadeIn in sec.
_fadeOut = _this select 5; // time of fadeOut in sec.

_trEnd = _trLength - _end; // time diff. between start and ending track

ace_hearing_disableVolumeUpdate = true;
0 fadeMusic 0;
playMusic [_track, _start];
_fadeIn fadeMusic 1;
sleep _fadeIn;
sleep (_trLength - _start - _fadeIn - _fadeOut - _trEnd);
_fadeOut fadeMusic 0;
sleep _fadeOut;
playMusic "";
ace_hearing_disableVolumeUpdate = false;


Falls ich hier Trivia verewige: Sorry. Ich hab' das woanders nur in Stücken und auch nicht wirklich funktionierend gefunden.

Cheers!

burns
29.11.2017, 17:58
Das ist sicher nicht trivial, glaube du hast da sogar nen von BI eingebauten Bug mit umgangen, denn das fadeout war früher afaik einfacher, bzw. ohne voriges andersherumfaden möglich.

Das ACE noch obendrauf liegt, wird ganz bestimmt jemandem weiterhelfen!
Die scheinen ja ne eher eigenartige Implementation der Ohrstöpsel gewählt zu haben (vermutlich auch wegen dem BI bug, lol).


:daumen:

Pfandgiraffe
30.11.2017, 23:17
Nach dem Reset (playMusic ""; ) fehlt noch diese Zeile um nicht alle evtl. folgende Musik abzuwürgen:

0 fadeMusic 0.5;

0.5 ist die Standard Lautstärke.


Grüße

wolkenstuermer
01.12.2017, 05:22
@burns: Ich habe mir auch eingebildet, dass das früher einfacher war :)

@Pfandgiraffe: Danke, guter Hinweis!