Startseite › Foren › Deutsches LiveCode-Forum › Eigener LautstĂ€rkeregler
Schlagwörter: LautstÀrkeregler
- Dieses Thema hat 64 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 4 Jahren, 9 Monaten von akrages.
-
AutorBeitrÀge
-
-
Februar 16, 2020 um 18:54Â Uhr #18959
Hallo und guten Abend.
Gibt es eine Möglichkeit einen eigenen LautstÀrkeregler in Livecode nachzubauen, um die LautstÀrke der Wiedergabe von .wav Dateien damit zu steuern?
-
Februar 16, 2020 um 20:20Â Uhr #18961
Hallo akrages,
klar, wir können so ziemlich alles mit LC programmieren, wenn wir wissen wie! đ
Hier ein kleiner Beispielstack aus meinen frĂŒhen Zeiten, der Dir einen Anhaltspunkt gibt:
https://major-k.de/staxx/custom_slider1.livecode.zipBei Fragen bitte fragen! đ
GruĂ
Klaus
-
Februar 16, 2020 um 20:45Â Uhr #18963
Danke, funktioniert.
Wie schaffe ich es nun, damit sich die LautstĂ€rke gleichzeitig mit den Werten im fld „volume“ Ă€ndert“
Das steht momentan im Button „play“
-
Februar 16, 2020 um 20:45Â Uhr #18964
on mouseUp pMouseButton
if the environment = „mobile“ then
if (mobileSoundOnChannel(„background“) is empty) or (mobileSoundOnChannel(„background“) is „could not find channel“) then
put (specialFolderPath(„engine“) & „/sound/background.wav“) into tPath
put „background“ into tChannelName
put „looping“ into tType –> looping Sound wird wiederholt gespielt, bis gestoppt wird „now“ Sound wird nur 1x abgespielt
mobilePlaySoundOnChannel tPath, tChannelName, tType
end if
else
play audioClip „background.wav“ looping
set the playloudness to the value of fld „volume“
##set the playLoudNess of player „background“ to 50
end if
end mouseUp -
Februar 16, 2020 um 20:58Â Uhr #18965
Sollte doch so funktionieren!?
Aber ein paar Tips:
1. Benutze -> specialfolderpath(„resources“) nicht „engine“!Denn nur auf der mobilen Platform ist „engine“ zufĂ€llig identisch mit „resources“, aber eben nur da!
Wenn Du also noch eine Version fĂŒr Win oder Mac Desktop erstellen willst, mĂŒsstest Du das Ă€ndern, wenn Du „resources“ nutzt, eben nicht! đ
2. „the value“ ist hier ĂŒberflĂŒssig, da im Feld „volume“ doch sicher eine Zahl steht, oder?
Also das hier reicht:... set the playloudness to fld "volume" ...
Aber was funktinoiert denn nicht bei Dir?
Wird die LautstĂ€rke nicht geĂ€ndert?Du kannst (und solltest vielleicht auch?) mein Beispiel nicht 1:1 umsetzen, sondern damit direkt „the playloudness“ setzen, statt wie im meinem Beispiel in ein Feld zu schteiben.
Also einen echten Volumenregler, kiegst Du das hin?GruĂ
Klaus
-
Februar 16, 2020 um 21:06Â Uhr #18967
Ich verstehe nicht so wirklich, wie du das meinst: (sondern damit direkt „the playloudness“ setzen).
Und zu deiner Frage: Wenn ich den „LautstĂ€rkeregler“ bewegt habe, Ă€ndert sich die LautstĂ€rke erst, wenn ich erneut den Button „play“ anklicke. -
Februar 16, 2020 um 21:52Â Uhr #18968
Hi Akrages,
OK, in meinem Beispiel lege ich den neuen Wert fĂŒr Playloundness in ein Feld mit dieser Zeile:
on mousemove x,y if darfziehen then switch case x < the left of grc "rampe_horizontal" ##set the loc of me to item 1 of the loc of me, the top of grc "rampe_horizontal" set the loc of me to the left of grc "rampe_horizontal", item 2 of the loc of me put 0 into fld "volume" break case x > the right of grc "rampe_horizontal" ##set the loc of me to item 1 of the loc of me, the top of grc "rampe_horizontal" - tAusgleich set the loc of me to the right of grc "rampe_horizontal", item 2 of the loc of me put 100 into fld "volume" break default set the loc of me to x, item 2 of the loc of me put round((x - the left of grc "rampe_horizontal")/(the width of grc "rampe_horizontal")*maxValue) into fld "volume" break end switch end if end mousemove
Wenn Du diesen „Umweg“ nun umgehen und direkt die LautstĂ€rke setzen möchtest, schreib es so:
on mousemove x,y if darfziehen then ## Zuerst die neue LautstÀrke ermitteln mit hilfe von etwas Geometrie :-) switch case x < the left of grc "rampe_horizontal" ##set the loc of me to item 1 of the loc of me, the top of grc "rampe_horizontal" set the loc of me to the left of grc "rampe_horizontal", item 2 of the loc of me put 0 into neuelautstÀrke break case x > the right of grc "rampe_horizontal" ##set the loc of me to item 1 of the loc of me, the top of grc "rampe_horizontal" - tAusgleich set the loc of me to the right of grc "rampe_horizontal", item 2 of the loc of me put 100 into neuelautstÀrke break default set the loc of me to x, item 2 of the loc of me put round((x - the left of grc "rampe_horizontal")/(the width of grc "rampe_horizontal")*maxValue) into neuelautstÀrke break end switch ## Und nun erst setzen: set the playloudness to neuelautstÀrke end if end mousemove
GruĂ
Klaus
-
Februar 16, 2020 um 22:45Â Uhr #18970
Hi. das ist ja echt Klasse.
funzt prima.
Vielen Dank.
Kannst du mir das auch fĂŒr die rampe_vertikal umbiegen?
irgendwie schaffe ich das nicht.
Die Banane „fliegt“ immer waagrecht. -
Februar 16, 2020 um 23:32Â Uhr #18971
Bitte schön:
on mousemove x,y ## Nur ausfĂŒhren, wenn Maus "down" ist! if darfziehen then switch ## Wir sind schon unten, also bei 0 angekommen case y < the top of grc "rampe_vertikal" + tAusgleich set the loc of me to item 1 of the loc of me, (the top of grc "rampe_vertikal") put 0 into neuelautstĂ€rke break ## Wir sind oben, also bei 100 angekommen case y > the bottom of grc "rampe_vertikal" set the loc of me to item 1 of the loc of me, the bottom of grc "rampe_vertikal" - tAusgleich put 100 intoneuelautstĂ€rke break ## Irgendwo zwischen 0 und 100 ## Ein einfacher Dreisatz! default set the loc of me to item 1 of the loc of me, y - tAusgleich put round((y - the top of grc "rampe_vertikal")/the height of grc "rampe_vertikal"*maxValue) into neuelautstĂ€rke break end switch set the playloudness to neuelautstĂ€rke end if end mousemove
Wichtig, versuche, das Skript zu verstehen, vielleicht zunĂ€chst einmal nur den Unterschied zum Skript mit dem Feld „volume“!
Und dann die eigentliche Logik mit der dazugehörigen Mathematik/Arithemtik. Ist Ă€tzend, geht aber nicht ohne. đ
Bei Fragen mach ich gerne den ErklÀrbÀr!
-
Februar 19, 2020 um 20:46Â Uhr #19020
Guten Abend,
ich habe jetzt eine kleine Anwendung geschrieben.
4 verschiedene „buttons“ mit unterschiedlichen .wav files (eine davon lĂ€uft als Hintergrundsound im looping.
AuĂerdem gibt ea 4 LautstĂ€rkeslider.
Was ich möchte ist jetzt folgendes:
Jeder Slider soll einen dieser .wav files in der LautstÀrke regeln (und nur diesen)!Mein Problem ist:
Innerhalb von Livecode funktionieren die Slieder, allerding jeder gleich, dh. ich kann mit jedem der 4 Sleider alle .wavÂŽs in der LautstĂ€rke regeln, was ja nicht gewĂŒnscht ist.Und auf meinem Android Handy kann ich die Slider zwar bewegen undauch die Werte des LautstĂ€rkepegels Ă€ndern sich, aber die LautstĂ€rke leider nicht.
Geht das vielleicht gar nicht wie ich das vorhabe?
-
Februar 19, 2020 um 20:54Â Uhr #19021
Aha, Android mal wieder…
Da hast Du Pech gehabt, ein Blick ins Dictionary zeigt, daĂ „playloudness“ nur auf Mac/Win/Linux und iOS unterstĂŒtzt wird. Und ja, „playloudness“ regelt die GesamtlautstĂ€rke.
Wie genau spielst Du deine Sounds ab? Mit welchem Befehl?
-
Februar 19, 2020 um 21:01Â Uhr #19023
Ach, sorry, hast Du ja oben geschrieben.
OK, dann Àndere nur die letzte Zeile in den Skripten:... end switch ## set the playloudness to neuelautstÀrke mobileSetSoundChannelVolume XXX,neueLautstÀrke end if end mousemove
XXX dabei bitte durch den Namen Deines(r) Channels ersetzen.
-
Februar 19, 2020 um 21:06Â Uhr #19025
Hallo.
Folgendes habe ich als Script in dem Button zum abspielen des Hintergrunsounds stehen:on mouseUp
##if the environment = „mobile“ then
if (mobileSoundOnChannel(„background“) is empty) or (mobileSoundOnChannel(„background“) is „could not find channel“) then
put (specialFolderPath(„engine“) & „/background.wav“) into tPath
put „background“ into tChannelName
put „looping“ into tType
mobilePlaySoundOnChannel tPath, tChannelName, tType
else
mobileStopPlayingOnChannel „background“
end if
##end if
end mouseUpDie auskommentierten Zeilen deshalb, weil der Button sowohl zum Starten der Wiedergabe als auch zum Stoppen der Wiedergabe genutzt wird. Das funktioniert aber nur auf dem Android Handy, wenn diese zwei Zeilen auskommentiert sind.
-
Februar 19, 2020 um 21:11Â Uhr #19026
specialfolderpath(„resources“), wie ich oben bereits schrieb! đ
Und was genau ist Deine Frage?
Hast Du meine letzte Ănderung im Skript ausprobiert?Hinweis:
Ich besitze weder Handy noch Tablet o.Ă€., daher kann ich so etwas nicht testen und nur sagen, was die korrekte Systax fĂŒr wasauchimmer ist. -
Februar 19, 2020 um 21:45Â Uhr #19029
Ganz schön Àrgerlich, als ich endlich fertig war mit meiner Nachricht an dich und den Absendenknopf angeklickt habe, war die Nachricht weg und ich musste mich neu anmelden.
Gibt es da ein Zeitfenster?-
Februar 19, 2020 um 22:07Â Uhr #19032
Ganz schön Àrgerlich, als ich endlich fertig war mit meiner Nachricht an dich und den Absendenknopf angeklickt habe, war die Nachricht weg und ich musste mich neu anmelden.
Gibt es da ein Zeitfenster?Nicht, daĂ ich wĂŒsste, aber die Forumsoftware ist leider extrem buggy… :-/
-
-
Februar 19, 2020 um 21:48Â Uhr #19030
Also ich habe dein Script nicht mehr sondern folgendes:
local topValue,tScaleFactor,Bstop,Tstop,xLoc,cY,canMove, on mouseDown # Geben Sie Ihren Startwert (oben) ein put 100 into topValue # FĂGEN SIE IHREN ENDWERT (UNTEN) EIN put 1 into bottomValue # ERHALTEN SIE DEN OFFSET DES KLICKPUNKTES UND DES ZENTRUMS DES BTN # Dies verhindert, dass der BTN springt, wenn Sie mit dem Ziehen beginnen put (the mouseV - item 2 of the loc of me) into cY # Die Zahl, die am Ende der nĂ€chsten 3 Zeilen addiert oder subtrahiert wird # dient dazu, die Position des Schiebereglers so zu Ă€ndern, dass er an der gewĂŒnschten Stelle stoppt put (the bottom of image "Vsliderbar1")-(the height of me/2)+cY +7 into Bstop put (the top of image "Vsliderbar1")+(the height of me/2)+cY -27 into Tstop put item 1 of the loc of image "Vsliderbar1" +9 into xLoc put (bottomValue-topValue)/(Bstop-Tstop) into tScaleFactor put true into canMove end mouseDown on mouseMove x,y if not canMove then exit mouseMove put min(Bstop,max(Tstop,y)) into yLoc set loc of me to xLoc,yLoc-cY # Möglicherweise mĂŒssen Sie folgende Werte hinzufĂŒgen: xLoc und yLoc #, um den Wert fld an der gewĂŒnschten Stelle zu positionieren set the loc of fld "theValue_v1" to xLoc-40,yLoc-cY+10 # Die folgende Zeile berechnet den Wert, den Sie möchten # wird auch fĂŒr die tatsĂ€chliche Funktion des Schiebereglers verwendet put round((yLoc-Tstop)*tScaleFactor)+topValue into fld "theValue_v1" put round((yLoc-Tstop)*tScaleFactor)+topValue into noiseOne ##set the playloudness to noise1 mobileSetSoundChannelVolume noise1, "noiseOne" ##diese Zeile hinzugefĂŒgt end mouseMove on mouseUp put false into canMove end mouseUp on mouseRelease mouseUp end mouseRelease
Und da kommt jetzt leider eine Fehlermeldung, wenn ich den Slider bewege.
-
Februar 19, 2020 um 21:50Â Uhr #19031
(Handler: canÂŽt find handler)
-
Februar 19, 2020 um 22:17Â Uhr #19034
Bitte, bitte, bitte, pack Deine Skripte in die CODE Tags, damit man sie lesen kann, siehe oben, ich habe das mal eben gemacht. Skript markieren und oben auf CODE klicken.
Der Handler „mobileSetSoundChannelVolume“ klappt nur auf dem Handy, in der IDE gibt es diese Meldung. Das wird es wohl sein, da Du hier nicht zwischen MOBILE und sonstwas verzweigst.
Aber genau das kannst und solltest Du hier machen, es reicht ja vor der Zeile „mobileSetSoundChannelVolume“:... put round((yLoc-Tstop)*tScaleFactor)+topValue into noiseOne if the environment = "mobile" then ## mobileSetSoundChannelVolume noise1, "noiseOne" ##diese Zeile hinzugefĂŒgt ## Der Channel Name in AnfĂŒhrungszeichen, die Variable noiseOne aber nicht! mobileSetSoundChannelVolume "noise1", noiseOne else set the playloudness to noiseone end if end mouseMove
Wenn Du eine Variable in AnfĂŒhrungszeichen setzt, wird sie zu einem String!
... put 10 into meineVariable put meineVariable -> 10 put "meineVariable" -> meineVariable ...
Und das möchtest Du nicht. đ
Kurze Frage:
Dieses neue Skript verstehst Du nun besser als meins? đ
Meins ist erstens kĂŒrzer und zweitens nicht ganz so kompliziert. -
Februar 19, 2020 um 22:45Â Uhr #19036
Ok, das mit den CODE Tags wusste ich nicht, danke.
Ja ich denke es ist etwas leichter zu verstehen. -
Februar 19, 2020 um 23:04Â Uhr #19037
Vielen, vielen Danke.
Der LautstÀrkeregler funktioniert jetzt in der funktioniert jetzt in der IDE und auf dem Handy. -
Februar 19, 2020 um 23:05Â Uhr #19038
Oh man. bisschen durcheinander der Satz. Ist wohl die Freude.
-
Februar 20, 2020 um 14:10Â Uhr #19041
Guten Tag.
wie kann ich in dieses Scripton mouseUp if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType mobilePlaySoundOnChannel tPath, tChannelName, tType else mobileStopPlayingOnChannel "background" end if end mouseUp
noch ein
if the environment = "mobile" then
einfĂŒgen? -
Februar 20, 2020 um 14:23Â Uhr #19042
Mit der Tastatur? đ
Na, halt aussen drumherum packen:
on mouseUp if the environment = "mobile" then if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType mobilePlaySoundOnChannel tPath, tChannelName, tType else mobileStopPlayingOnChannel "background" end if end if end mouseUp
Hinweis:
Falls Du hier und in Ă€hnlichen FĂ€llen keinen ELSE Fall benötigst, schreibe ich das immer so, einfach der Ăbersichtlichkeit halber und um unĂŒbersichtliche IF…THEN Klauseln zu vermieden:on mouseUp if the environment <> "mobile" then ## Dann einfach nicht weitermachen! :-) exit mouseup end if if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType mobilePlaySoundOnChannel tPath, tChannelName, tType else mobileStopPlayingOnChannel "background" end if end mouseUp
-
Februar 20, 2020 um 14:33Â Uhr #19044
Schade, funktioniert so leider nicht.
Das besondere an dem Button zur Wiedergabe ist, dass er auch zum stoppen der Wiedergabe dient.
Wenn ich jetzt mein Script mit einem
if the environment = "mobile" then
ergÀnze, dann funktioniert er nicht mehr. -
Februar 20, 2020 um 14:42Â Uhr #19045
Also das hier funktioniert nicht auf dem Handy?
on mouseUp if the environment = "mobile" then if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType mobilePlaySoundOnChannel tPath, tChannelName, tType else mobileStopPlayingOnChannel "background" end if end if end mouseUp
-
Februar 20, 2020 um 14:49Â Uhr #19047
Doch auf dem Handy schon, aber nicht in der IDE
Da reagiert der Playbutton gar nicht. -
Februar 20, 2020 um 15:24Â Uhr #19048
Was soll denn da bitteschön auch passieren?
Du hast doch nichts Entsprechendes geskriptet, also keinen ELSE Fall!In der IDE „sieht“ die Engine das hier in Deinem Skript:
on mouseup ## Nichts tun, wir sind ja nicht auf dem HĂ€ndy, wie geil ist das denn? :-) ## Tu ma noch'n Bier! end mouseup
-
Februar 20, 2020 um 15:56Â Uhr #19050
Eigentlich möchte ich ja nur, dass in der IDE das gleiche passiert, wie auf dem Handy.
Klicke ich auf den Playbutton, spielt der Hintergrundsound.
Klicke ich noch einmal auf den Playbutton dann stoppt die Hintergrundsound usw.
Das muss doch in der IDE genauso funktionieren.-
Februar 20, 2020 um 16:10Â Uhr #19053
Hi,
dann muss ich dich mal fragen, wozu Du das
if environment = mobile
brauchst?Wenn die FunktionaliĂ€t in der IDE genauso sein soll wie auf dem Smartphone, brauchst Du keine Unterscheidung đ
LG
Torsten
-
-
Februar 20, 2020 um 16:09Â Uhr #19051
Wie spielst Du denn die Sound in der IDE ab?
Ach ja, hast Du ja auch schon geschrieben, mit „play ac…“,
damit kann aber leider nur EIN Sound gleichzeitig abgespielt werden.Benutze ein paar (unsichtbare) „Player“ Objekte und setze deren „filename“.
So können mehrere Sounds gleichzeitig abgespielt werden.Hinweis:
specialfolderpath(„resources“), zu dem ich Dir nun wiederholt geraten habe, funktioniert auch in der IDE! Dort liefert es den Pfad zum Ordner mit dem aktuelle Stack drin. -
Februar 20, 2020 um 16:36Â Uhr #19055
seit wann funktioniert das hier:
on mouseUp if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType mobilePlaySoundOnChannel tPath, tChannelName, tType else mobileStopPlayingOnChannel "background" end if end mouseUp
auch auf dem Desktop/in der IDE?
Bedenke, wir reden schon lange nicht mehr von dem allerersten Skript ganz oben!GruĂ
Klaus
-
Februar 20, 2020 um 17:04Â Uhr #19064
letzteres funktioniert nur auf dem Handy.
In der IDE kommt beim Klick auf den Playbutton folgende Fehlermeldung:
(Function: error in function handler) near „mobileSoundOnChannel“, char 11
Deshalb ja die Unterscheidung mit:
if the environment = "mobile" then
-
Februar 20, 2020 um 17:06Â Uhr #19067
Ich weiĂ das, und Torsten weiĂ das eigentlich auch! đ
Bitte lies meinen letzten Post noch einmal, anders wird es nicht gehen! -
Februar 20, 2020 um 17:07Â Uhr #19069
Die Fehlermeldung kommt fĂŒr diese Zeile:
if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then
-
Februar 20, 2020 um 17:13Â Uhr #19070
Noch einmal, diese ganzen MOBILExxxx Befehle funktionieren nur auf dem Handy, in der IDE gibt es sofort (bein ersten Vorkommen wie hier) einen ERROR.
Ist total bescheuert, aber wir mĂŒssen damit leben, also komm bitte drĂŒber hinweg. đ
-
Februar 20, 2020 um 17:30Â Uhr #19072
Ist mir schon klar.
ich dachte halt, mit einem zusÀtzlicheelse
das Problem lösen zu können.
Trotzdem danke. -
Februar 20, 2020 um 17:33Â Uhr #19073
Kannst Du auch, aber dann musst Du auch das Richtige skripten fĂŒr den ELSE Fall! đ
Oder ĂŒberhaupt erst einmal was. -
Februar 20, 2020 um 19:22Â Uhr #19075
@Klaus: sorry fĂŒr den Kommentar meinerseits, ichn hatte den ganzen Thread noch nicht gelesen.
Wenn ich das richtig verstehe, hat er doch eigentlich alles schon am Anfang richtig gemacht, um zwischen mobile und IDE zu unterscheiden:
on mouseUp pMouseButton if the environment = "mobile" then if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then put (specialFolderPath("engine") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType --> looping Sound wird wiederholt gespielt, bis gestoppt wird "now" Sound wird nur 1x abgespielt mobilePlaySoundOnChannel tPath, tChannelName, tType end if else play audioClip "background.wav" looping set the playloudness to the value of fld "volume" ##set the playLoudNess of player "background" to 50 end if end mouseUp
Das Schema mĂŒsste wieder eingebaut werden, oder?
LG
Torsten -
Februar 20, 2020 um 19:42Â Uhr #19077
Im Prinzip hast Du recht, aber mit „play ac xyz“ wird das nichts, hier mĂŒssen PLAYER Objekte ran!
-
Februar 20, 2020 um 21:14Â Uhr #19081
Stimmt: play erlaubt nur eine Audiodatei abzuspielen:
https://livecode.fandom.com/de/wiki/Play„Wenn Sie einen Audioclip abspielen, wĂ€hrend ein anderer spielt, wird der erste Audioclip gestoppt und eine playStopped-Nachricht wird an die aktuelle Karte gesendet. Sie können nicht gleichzeitig zwei Sounds abspielen.“
-
-
Februar 20, 2020 um 21:38Â Uhr #19083
SACHICHDOCH! đ
-
Februar 21, 2020 um 19:15Â Uhr #19103
Guten Abend,
ist es möglich, festzustellen, ob ein Soundkanal schon spielt?
NatĂŒrlich fĂŒr Android.
Also sowas wieif the sound is done then
fĂŒr IOSIch möchte gerne den Hintergrundsound ĂŒber den Slider fĂŒr die LautstĂ€rke starten und zwar dann, wenn er noch nicht lĂ€uft und wenn der Wert im Field fĂŒr die LautstĂ€rkeanzeige >1 ist.
Andernfalls soll ĂŒber denSlider nur die LautstĂ€rke geregelt werden.Wie mĂŒsste also so eine if Abfrage aussehen?
Kann da jemand helfen“ -
Februar 21, 2020 um 19:36Â Uhr #19104
Das mĂŒsste das hier sein:
... put mobileSoundChannelStatus("background") into sound_ist_am_spielen ## Nun musst Du checken, welchen Wert sound_ist_am_spielen hat. ...
Mögliche Werte:
stopped # Kein Sound im gewĂŒnschten Kanal
paused # Sound im Kanal, aber pausiert.
playing # Sollte klar sein -
Februar 22, 2020 um 20:29Â Uhr #19133
Hallo,
ich bin gerade dabei deinen letzten Tip in den Slider fĂŒr die LautstĂ€rke zu integrieren, aber irgendwie funktioniert der Regler nicht so wie er soll.
Sobald ich den Regler berĂŒhre, startet der Hintergrundsound und laĂ€sst sich dann auch nicht mehr regeln.
hier mal der Ausschnit des Scriptes fĂŒr den Slider mit ErgĂ€nzung.on mouseMove x,y if not canMove then exit mouseMove put min(Bstop,max(Tstop,y)) into yLoc set loc of me to xLoc,yLoc-cY # you may need to add values to following: xLoc and yLoc # to position the value fld where you want # Möglicherweise mĂŒssen Sie folgende Werte hinzufĂŒgen: xLoc und yLoc #, um den Wert fld an der gewĂŒnschten Stelle zu positionieren set the loc of fld "theValue_v4" to xLoc-40,yLoc-cY+10 # The following line calculates the value which you would want to # also put into use for the actual functioning of the slider # Die folgende Zeile berechnet den Wert, den Sie möchten # wird auch fĂŒr die tatsĂ€chliche Funktion des Schiebereglers verwendet put round((yLoc-Tstop)*tScaleFactor)+topValue into fld "theValue_v4" put round((yLoc-Tstop)*tScaleFactor)+topValue into sBackground ##diese Zeile hinzugefĂŒgt if the environment = "mobile" then ## mobileSetSoundChannelVolume noise1, "noiseOne" ##diese Zeile hinzugefĂŒgt ## Der Channel Name in AnfĂŒhrungszeichen, die Variable noiseOne aber nicht! if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType mobileSetSoundChannelVolume "background", sBackground ##diese Zeile hinzugefĂŒgt if the value of Field "theValue_v4" >2 then mobilePlaySoundOnChannel tPath, tChannelName, tType if the value of Field "theValue_v4" <2 then mobileStopPlayingOnChannel "background" end if end if end if else set the playloudness to sBackground end if end mouseMove
-
Februar 22, 2020 um 21:10Â Uhr #19134
Bedenke, „mousemove“ wird STĂNDIG gesendet, wenn die Maus sich bewegt!
Also wird hier der Sound stĂ€ndig gestartet und irgendwann explodiert Dein Handy! đMach das mit dem Background-Sound Check doch „on mousedown“, da sollte es besser funktionieren.
Hinweis -> the value of fld xyz
ist ĂŒberflĂŒssig, das hier reicht:
if fld „theValue_v4“ > 2 -
Februar 22, 2020 um 21:33Â Uhr #19136
Bingo!
Aber der Sound stoppt noch nicht bei Level 1.
MĂŒsste er doch aber laut dem Script oder? -
Februar 22, 2020 um 21:41Â Uhr #19137
wĂŒrde statt
if the value of Field "theValue_v4" <2 then
auch ein
else
reichen, oder verÀndert dies das gesamte Script? -
Februar 22, 2020 um 21:46Â Uhr #19138
Gerade ausprobiert.
Ăndert leider nichts.
Der Ton ist auf Level 1 noch immer ganz leise zu hören. -
Februar 22, 2020 um 22:14Â Uhr #19139
Das alles erscheint mir igendwie viel zu kompliziert… đ
Bitte poste mal Dein komplettes Skript mit mousedown und allem,
ich habe morgen etwas Zeit, dann schau ich mir das mal in Ruhe an.Der Ton ist auf Level 1 noch immer ganz leise zu hören.
Mit „Level 1“ meinst Du „LautstĂ€rke auf 1 gestellt“?
-
Februar 22, 2020 um 22:29Â Uhr #19142
Ja Level1 bedeutet, LautstÀrke auf 1 gestellt.
-
Februar 22, 2020 um 22:30Â Uhr #19143
Und hier der Script aus dem Button SliderC4:
local topValue,tScaleFactor,Bstop,Tstop,xLoc,cY,canMove, on mouseDown # Geben Sie Ihren Startwert (oben) ein put 100 into topValue # FĂGEN SIE IHREN ENDWERT (UNTEN) EIN put 1 into bottomValue # ERHALTEN SIE DEN OFFSET DES KLICKPUNKTES UND DES ZENTRUMS DES BTN # Dies verhindert, dass der BTN springt, wenn Sie mit dem Ziehen beginnen put (the mouseV - item 2 of the loc of me) into cY # Die Zahl, die am Ende der nĂ€chsten 3 Zeilen addiert oder subtrahiert wird # dient dazu, die Position des Schiebereglers so zu Ă€ndern, dass er an der gewĂŒnschten Stelle stoppt put (the bottom of image "Vsliderbar4")-(the height of me/2)+cY +7 into Bstop put (the top of image "Vsliderbar4")+(the height of me/2)+cY -27 into Tstop put item 1 of the loc of image "Vsliderbar4" +9 into xLoc put (bottomValue-topValue)/(Bstop-Tstop) into tScaleFactor put true into canMove if the environment = "mobile" then ## mobileSetSoundChannelVolume noise1, "noiseOne" ##diese Zeile hinzugefĂŒgt ## Der Channel Name in AnfĂŒhrungszeichen, die Variable noiseOne aber nicht! if (mobileSoundOnChannel("background") is empty) or (mobileSoundOnChannel("background") is "could not find channel") then put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType mobileSetSoundChannelVolume "background", sBackground ##diese Zeile hinzugefĂŒgt end if if fld "theValue_v4" > 2 then mobilePlaySoundOnChannel tPath, tChannelName, tType if fld "theValue_v4" < 2 then mobileStopSoundOnChannel tPath, tChannelName, tType end if end if else set the playloudness to sBackground end if end mouseDown on mouseMove x,y if not canMove then exit mouseMove put min(Bstop,max(Tstop,y)) into yLoc set loc of me to xLoc,yLoc-cY # Möglicherweise mĂŒssen Sie folgende Werte hinzufĂŒgen: xLoc und yLoc #, um den Wert fld an der gewĂŒnschten Stelle zu positionieren set the loc of fld "theValue_v4" to xLoc-40,yLoc-cY+10 # Die folgende Zeile berechnet den Wert, den Sie möchten # wird auch fĂŒr die tatsĂ€chliche Funktion des Schiebereglers verwendet put round((yLoc-Tstop)*tScaleFactor)+topValue into fld "theValue_v4" put round((yLoc-Tstop)*tScaleFactor)+topValue into sBackground ##diese Zeile hinzugefĂŒgt if the environment = "mobile" then ## Der Channel Name in AnfĂŒhrungszeichen, die Variable noiseOne aber nicht! mobileSetSoundChannelVolume "background", sBackground ##diese Zeile hinzugefĂŒgt else set the playloudness to sBackground end if end mouseMove on mouseUp put false into canMove end mouseUp on mouseRelease mouseUp end mouseRelease
-
Februar 23, 2020 um 16:39Â Uhr #19146
OK, ein paar Fragen:
1. Das hier:
…
if (mobileSoundOnChannel(„background“) is empty) or (mobileSoundOnChannel(„background“) is „could not find channel“)
…
ist doch schon ein Grund den Sound zu starten, oder nicht?
2. Was steht in Feld „theValue_v4“ und warum? đ
3. Was passiert, wenn im Feld genau 2 drinsteht?
Dieser Fall wird nicht abgedeckt! -
Februar 23, 2020 um 16:48Â Uhr #19148
Hallo,
Zur ersten Frage: Als einen Aufruf zum Starten des Sounds habe ich diese if-Abfrage noch gar nicht interpretiert.
Zur zweiten Frage: In „theValueV4“ steht der LautstĂ€rkepegel (1-100) je nach Slider-Stellung.
Zur dritten Frage: Es passiert das gleiche, dass bei dem Wert 1 passiert. Gar nichts. -
Februar 23, 2020 um 17:22Â Uhr #19149
Also zur ersten Frage noch folgendes:
Eigentlich wir ja nur geschaut ob es einen Channel „background“ gibt, und ob der mit einem Soundfile belegt ist und wenn nicht, dann wird er angelegt und mit einem Soundfile belegt, sowie der Wert fĂŒr die LautstĂ€rke mit angegeben.
Das Soundfile selbst wird doch erst mit dem Aufruf:mobilePlaySoundOnChannel tPath, tChannelName, tType
gestartet.
Oder interpretiere ich das falsch?AuĂerdem ist mir aufgefallen, dass der Sound erst startet, wenn ich ein zweites mal den Slider berĂŒhre.
Also bei einem zweiten mouseDown. -
Februar 23, 2020 um 17:51Â Uhr #19150
Meiner Meinung nach, sollte so die Logik stimmen.
Bitte mal ausprobieren.on mouseDown # Geben Sie Ihren Startwert (oben) ein put 100 into topValue # FĂGEN SIE IHREN ENDWERT (UNTEN) EIN put 1 into bottomValue # ERHALTEN SIE DEN OFFSET DES KLICKPUNKTES UND DES ZENTRUMS DES BTN # Dies verhindert, dass der BTN springt, wenn Sie mit dem Ziehen beginnen put (the mouseV - item 2 of the loc of me) into cY # Die Zahl, die am Ende der nĂ€chsten 3 Zeilen addiert oder subtrahiert wird # dient dazu, die Position des Schiebereglers so zu Ă€ndern, dass er an der gewĂŒnschten Stelle stoppt put (the bottom of image "Vsliderbar4")-(the height of me/2)+cY +7 into Bstop put (the top of image "Vsliderbar4")+(the height of me/2)+cY -27 into Tstop put item 1 of the loc of image "Vsliderbar4" +9 into xLoc put (bottomValue-topValue)/(Bstop-Tstop) into tScaleFactor put true into canMove ## sBackground ist keine LOKALE Variable, daher hier noch nicht bekannt ## und es wird somit einen ERROR geben! ## Daher: put fld "theValue_v4" into tLautstĂ€rke ## Sofern ich Dich richtig verstanden habe. ## Verschachtelte IF THEN vermeiden if the environment <> "mobile" then set the playloudness to tLautstĂ€rke ## Auf dem Desktop oder in der IDE sind wir jetzt fertig! exit mousedown end if ## Initialisierung des Sounds: put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType ## Warum nicht 0 nehmen, wenn bei 1 ja noch etas zu hören ist? if fld "theValue_v4" > 0 then ## Nur starten, wenn er nicht schon lĂ€uft: if mobileSoundChannelStatus("background") <> "playing" then mobilePlaySoundOnChannel tPath, tChannelName, tType end if else mobileStopSoundOnChannel tPath, tChannelName, tType end if end mouseDown
-
Februar 23, 2020 um 18:05Â Uhr #19152
So, gerade ausprobiert.
Folgendes Ergebnis:
App startet, Sound ist off
jetzt bewrĂŒhre ich den Slider und bewege ihn von 1 (kleinester Wert) aufwĂ€rts.
Ergebnis: Sound ist diesmal sofort auf On, also zu hören und lÀsst sich auch in der LautstÀrke regeln.
Lediglich wenn ich ihn wieder herunterregle ist er auf Level 1 immer noch leise zu hören. -
Februar 23, 2020 um 18:12Â Uhr #19153
Obiges gilt fĂŒr das Handy.
In der IDE, funktioniert der SliderC4 jetzt gar nicht.
D.h. Ich kann ihn zwar bewegen und der Wert im Feld „theValue_v4“ Ă€nert sich aber es ist nichts zu hören. -
Februar 23, 2020 um 18:47Â Uhr #19154
In Deinem Skript steht nirgendwo ein Befehl, der den Sound ĂŒberhaupt in der IDE abspielt!
Weder mit „play ac xyz“ noch mit einem Player Objekt, Du setzt da nur die LautstĂ€rke!?Oder hab ich was verpasst!
-
Februar 23, 2020 um 18:58Â Uhr #19156
Stimmt.
Habe ich jetz eingefĂŒgt. -
Februar 23, 2020 um 19:02Â Uhr #19157
Und?
Lass Dir doch nicht alles aus der Nase ziehen! đ
-
Februar 23, 2020 um 19:18Â Uhr #19159
Sorry, aber ich bin echt am verzweifeln.
Also folgende Ănderung im Script:
von ##`Verschachtelte IF THEN vermeiden
if the environment <> „mobile“ then
set the playloudness to tLautstÀrke`
nach ##`Verschachtelte IF THEN vermeiden
if the environment <> „mobile“ then
play audioClip „background.wav“ ##sBackground
set the playloudness to sBackground`Ergebnis: In der IDE Ton ist nur zu hören, nachdem ich ein zweites mal auf den Slider klicke.
Move ich den Slider erneut, muss ich nochmal auf ihn klicken, damit sich die LautstÀrke Àndert usw.Und am Mobile ist nach klick auf den Slider, der Sound auf voller LautstÀrke und lÀsst sich nicht regeln. ??????????
-
Februar 23, 2020 um 19:24Â Uhr #19160
Bitte noch einmal Dein ganzes Skript posten!
Aber wie gesagt, mit „play ac xyz“ kannst Du nur EINEN Sound zu selben Zeit abspielen in der IDE!Und:
... if the environment <> "mobile" then play audioClip "background.wav" ##sBackground ## sBackground existiert nicht im "mousedown" Handler, bitte lies doch meine Kommentare! set the playloudness to sBackground ...
-
Februar 23, 2020 um 19:42Â Uhr #19164
Die Lese ich.
Hab nur aus lauter Verzweiflung dein tLautstĂ€rke mal probehalber wieder in sBackground geĂ€ndert, weil es ja im mouseMove noch so angegeben ist/war, (wurde von mir jetzt auch in tLautstĂ€rke geĂ€ndert) und auch bisher bei mir immer so geheiĂen hat.
Und ja, ich weiĂ, dass ich in der IDE nur einen Sound zur selben Zeit abspielen kann.
Es spielt ja auch sonst keine zweiter Sound.Hier nun nochmal das geamte Script vom „SliderC4“
local topValue,tScaleFactor,Bstop,Tstop,xLoc,cY,canMove, on mouseDown # Geben Sie Ihren Startwert (oben) ein put 100 into topValue # FĂGEN SIE IHREN ENDWERT (UNTEN) EIN put 1 into bottomValue # ERHALTEN SIE DEN OFFSET DES KLICKPUNKTES UND DES ZENTRUMS DES BTN # Dies verhindert, dass der BTN springt, wenn Sie mit dem Ziehen beginnen put (the mouseV - item 2 of the loc of me) into cY # Die Zahl, die am Ende der nĂ€chsten 3 Zeilen addiert oder subtrahiert wird # dient dazu, die Position des Schiebereglers so zu Ă€ndern, dass er an der gewĂŒnschten Stelle stoppt put (the bottom of image "Vsliderbar4")-(the height of me/2)+cY +7 into Bstop put (the top of image "Vsliderbar4")+(the height of me/2)+cY -27 into Tstop put item 1 of the loc of image "Vsliderbar4" +9 into xLoc put (bottomValue-topValue)/(Bstop-Tstop) into tScaleFactor put true into canMove ## sBackground ist keine LOKALE Variable, daher hier noch nicht bekannt ## und es wird somit einen ERROR geben! ## Daher: put fld "theValue_v4" into tLautstĂ€rke ## Sofern ich Dich richtig verstanden habe. ## Verschachtelte IF THEN vermeiden if the environment <> "mobile" then set the playloudness to tLautstĂ€rke ## Auf dem Desktop oder in der IDE sind wir jetzt fertig! exit mousedown end if ## Initialisierung des Sounds: put (specialFolderPath("resources") & "/sound/background.wav") into tPath put "background" into tChannelName put "looping" into tType ## Warum nicht 0 nehmen, wenn bei 1 ja noch etas zu hören ist? if fld "theValue_v4" > 0 then ## Nur starten, wenn er nicht schon lĂ€uft: if mobileSoundChannelStatus("background") <> "playing" then mobilePlaySoundOnChannel tPath, tChannelName, tType end if else mobileStopSoundOnChannel tPath, tChannelName, tType end if end mouseDown on mouseMove x,y if not canMove then exit mouseMove put min(Bstop,max(Tstop,y)) into yLoc set loc of me to xLoc,yLoc-cY # Möglicherweise mĂŒssen Sie folgende Werte hinzufĂŒgen: xLoc und yLoc #, um den Wert fld an der gewĂŒnschten Stelle zu positionieren set the loc of fld "theValue_v4" to xLoc-40,yLoc-cY+10 # Die folgende Zeile berechnet den Wert, den Sie möchten # wird auch fĂŒr die tatsĂ€chliche Funktion des Schiebereglers verwendet put round((yLoc-Tstop)*tScaleFactor)+topValue into fld "theValue_v4" put "theValue_v4" into tLautstĂ€rke ##diese Zeile hinzugefĂŒgt ##if the environment = "mobile" then #### Der Channel Name in AnfĂŒhrungszeichen, die Variable noiseOne aber nicht! ##mobileSetSoundChannelVolume "background", sBackground ##diese Zeile hinzugefĂŒgt ##else ##put fld "theValue_v4" into tLautstĂ€rke ##set the playloudness to tLautstĂ€rke ##sBackground ##end if end mouseMove on mouseUp put false into canMove ##if fld "theValue_v4" <= 2 then ##stop playing audioClip "background.wav" ##else ####if fld "theValue_v4" >= 3 then ##play audioClip "background.wav" sBackground ##end if ####end if end mouseUp on mouseRelease mouseUp end mouseRelease
-
Februar 24, 2020 um 12:07Â Uhr #19189
Hallo.
Ich habe es geschafft. (Jubel)
Der LautstÀrkeregler arbeitet so wie er soll.
Liegt der Level bei 1, dann stoppt die Wiedergabe.
Liegt der Level zwischen > 0 und < 2 dann startet die Wiedergabe.Erreicht habe ich dieses Ergebnis, durch folgende Herangehensweise.
ZunĂ€chst zwei Button erstellt, einer zur Wiedergabe und einer fĂŒr Stop.
In jeden dieser Button den entsprechenden on mouseUp – Befehl eingefĂŒgt und als diese beiden Button dann funktionierten, war es nur noch ein Kinderspiel. Zur Wiedergabe nutze ich den on mouseDown – Befehl und zum Stoppen den on mouseUp – Befehl.Trotzdem vielen Dank fĂŒr deine Hilfe.
-
-
AutorBeitrÀge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.