Abspiel-Position im Sound setzen (springen)

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Ratchet

Betreff: Abspiel-Position im Sound setzen (springen)

BeitragMo, März 09, 2009 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
gibt es irgendwie die Möglichkeit bei einem Sound den man abspielt zu einer anderen Stelle zu springen? So wie in jedem normalen Media-Player?
Hab schon nach Seek oder Ähnlichem gesucht aber nichts gefunden.
Ratchet
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

ChaosCoder

BeitragDi, März 10, 2009 0:18
Antworten mit Zitat
Benutzer-Profile anzeigen
ich bin mir grad nicht sicher, aber ich glaub, ein gängiges workaround ist das sehr schnelle abspielen von musik, natürlich mit ner lautstärke von 0.

siehe dazu
TChannel.SetRate(rate#)

die "rate" musst du berechnen Wink
Projekte: Geolaria | aNemy
Webseite: chaosspace.de

Ratchet

BeitragDi, März 10, 2009 9:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Und was ist wenn ich zurückspringen möchte? Die Rate < 0 setzten? Kann mir grad nicht vorstellen dass das funktioniert Very Happy
Dann muss ich wohl doch wieder fMod oder Bass benutzen Confused
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

Valnar

BeitragDi, März 10, 2009 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Eventuell geht es ja auch hier mit der BASS.dll oder einer anderen DLL.

DAK

BeitragDi, März 10, 2009 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Extern "win32"
   Function mciSendStringA(cmd$z,resultbuffer:Byte Ptr=Null,buffersize:Int=0,hwndcallback:Int=0)
   Function SetForegroundWindow:Int(hwnd:Int)
End Extern

Type TMusic
   Global musicnumber:Int=0
   Field number:Int,paused:Int
   Field playing:Int
   Field volume:Int
   Field pos:Int
   Field starttime:Int
   Field str:Byte[128]
   
   Function Create:TMusic()
      Local music:TMusic=New TMusic
      music.number=TMusic.musicnumber
      TMusic.musicnumber:+1
      mciSendStringA("set "+music.Name()+" time format milliseconds")
      Return music      
   End Function
   
   Function Open:TMusic(sfile:String)
      Local music:TMusic=New TMusic
      music.number=TMusic.musicnumber
      TMusic.musicnumber:+1
      mciSendStringA("set "+music.Name()+" time format milliseconds")
      music.Load(sfile)
      Return music
   End Function
   
   Method Load(sfile:String)
      mciSendStringA("open ~q"+sfile+"~q alias "+Name())
   End Method
   
   Method SetVolume(vol:Int)
      mciSendStringA("setaudio "+Name()+" volume to "+vol)
      volume = vol
   End Method
   
   Method PlayFrom(from:Int)
      mciSendStringA("play "+Name()+" from "+from)
      pos = from
   End Method
   
   Method Play(from:Int=0)
      If Not paused
         mciSendStringA("play "+Name()+" from "+from)
         playing=1
         pos = from
      Else
         mciSendStringA("resume "+Name())
         playing=True
         paused=False
      EndIf
      starttime = MilliSecs()
   End Method
   
   Method getPos:Int()
      If playing Then
         pos:+ MilliSecs()-starttime
         starttime = MilliSecs()
      EndIf
      Return pos
   End Method
   
   Method Pause()
      If paused Return
      mciSendStringA("pause "+Name())
      getPos()
      paused=True
      playing=False
   End Method
   
   Method Stop()
      mciSendStringA("stop "+Name())
      mciSendStringA("close "+Name())
      mciSendStringA("set "+Name()+" time format milliseconds")
      playing=False
      paused=False
   End Method
   
   Method Name:String()
      Return ("TMusic"+String(number))
   End Method
   
   Method SetPos()
      mciSendStringA("play "+Name()+" from "+pos)
   End Method
   
   Method length:Int()
      Local Retbank:TBank = CreateBank(12)
      mciSendStringA("set "+Name()+" time format ms")
      mciSendStringA("Status "+Name()+" Length",BankBuf(Retbank),12,0)
      Local retval:String = PeekStr(retbank,12,0)
      Retbank = Null
      Return Int(Trim(retval))
   End Method
End Type

Function PeekStr:String(bank:TBank,Size:Int=64,Offset:Int=0)
   Local NewStr:String = ""
   For Local count:Int = offset To (offset+size-1)
      Local newchr:Byte = PeekByte(bank,count)
      If newchr = 0 Then Exit
      newstr = newstr + Chr(newchr)
   Next
   Return Newstr
End Function


das hier könnte dir helfen.... verwendet die winapi zum abspielen der sounds -> rennt nur unter windows

die funktionen sollten alle relativ selbsterkärend sein... zeitangaben sind in millisecs... bei fragen einfach stellen.
Gewinner der 6. und der 68. BlitzCodeCompo

Ratchet

BeitragDo, März 12, 2009 14:08
Antworten mit Zitat
Benutzer-Profile anzeigen
DAK hat Folgendes geschrieben:
verwendet die winapi zum abspielen der sounds -> rennt nur unter windows

Danke, aber wenn du mal in meine Signatur schaust... Wink
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

DAK

BeitragDo, März 12, 2009 16:07
Antworten mit Zitat
Benutzer-Profile anzeigen
oha, sry, nicht geschaut Wink

schau, vll gibts in dem mac-pendat zur winapi was dazu...
Gewinner der 6. und der 68. BlitzCodeCompo

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group