(Erledigt) Wie wird eine .ogg Datei abgespielt?

Spezielle Fragen zu 2D- und 3D-Grafik, Sound und Video
Antworten
Naubaddi
Foriker
Beiträge: 90
Registriert: Di 10. Jan 2012, 21:30
Kontaktdaten:

(Erledigt) Wie wird eine .ogg Datei abgespielt?

Beitrag von Naubaddi » Fr 23. Jan 2015, 16:35

Hi,

es klappt einfach nicht mit der Musik, es soll eine .ogg Datei abgespielt werden mit "$hPlayer.Play" was zu der Fehlermeldung "Cannot set status" führt. Wo ist mein Denkfehler?

Code: Alles auswählen

' Gambas class file
Private $hPlayer As MediaPlayer
Public Sub _new()
  $hPlayer = New MediaPlayer As "MediaPlayer"
  $hPlayer.URL = Media.URL("new_gong.ogg")
'  $hPlayer.Play
End
Public Sub Form_Open()
  ' die Fehlermeldungist: Cannot set status
End


Grüßle
Zuletzt geändert von Naubaddi am So 1. Feb 2015, 19:23, insgesamt 1-mal geändert.
Gruß, Naubaddi

Naubaddi
Foriker
Beiträge: 90
Registriert: Di 10. Jan 2012, 21:30
Kontaktdaten:

Re: Wie wird eine .ogg Datei abgespielt?

Beitrag von Naubaddi » Fr 23. Jan 2015, 18:58

Hi,

als Notlösung um die Gong Routine zu erstellen ist mir der Befehl "Exec" wieder eingefallen, mit "Exec ["cvlc", "--play-and-exit", sDatei]" kann VLC ohne Fenster aufgerufen werden und eine Datei abspielen.

Sieht dann so aus:

Code: Alles auswählen

Public Sub Gong()
  Dim sDatei As String
  Dim i12 As Integer
  sDatei = Left$(sClock[3], InStr(sClock[3], "_clock.png") - Len(sClock[3]) - 1) & "_gong.ogg"
  i12 = Hour(Now)
  If i12 > 12 Then i12 = Hour(Now) - 12
  Print i12 & " - " & Minute(Now) & " - " & Second(Now)
  If Second(Now) < i12 * 2 Then Exec ["cvlc", "--play-and-exit", sDatei]
End


Grüßle
Gruß, Naubaddi

Naubaddi
Foriker
Beiträge: 90
Registriert: Di 10. Jan 2012, 21:30
Kontaktdaten:

Re: Wie wird eine .ogg Datei abgespielt?

Beitrag von Naubaddi » Fr 23. Jan 2015, 20:08

Hi,

die Notlösung ist fertig, zu jeder halben Stunde 1 Gong und zu jeder Stunde ein Gong je Stunde. Jetzt braucht es einen Menüeintrag um den lästigen Gong auszuschalten :lol: .

Wenn die Gambas Funktion "$hPlayer.Play" funktioniert muss nur "Exec ["cvlc", "--play-and-exit", sDatei]" gegen "$hPlayer.Play" getauscht werden.

Sieht dann so aus:

Code: Alles auswählen

Public Sub PlayGong()
  Dim sDatei As String
  Dim i12 As Integer
  sDatei = Left$(sClock[3], InStr(sClock[3], "_clock.png") - Len(sClock[3]) - 1) & "_gong.ogg"
  i12 = Hour(Now)
  If i12 > 12 Then i12 = Hour(Now) - 12
  Print i12 & " - " & Minute(Now) & " - " & Second(Now)
  If Minute(Now) = 30 And Second(Now) < 2 Then Exec ["cvlc", "--play-and-exit", sDatei]
  If Minute(Now) < 1 And Second(Now) < i12 * 2 Then Exec ["cvlc", "--play-and-exit", sDatei]
End


Grüßle
Gruß, Naubaddi

Benutzeravatar
gambi
Moderator
Beiträge: 249
Registriert: Mi 8. Mai 2013, 21:46
Kontaktdaten:

Re: Wie wird eine .ogg Datei abgespielt?

Beitrag von gambi » Sa 24. Jan 2015, 13:25

Hi Naubaddi,
versuche doch mal folgendes:

gambas code
Public mySound As Sound

Public Sub Form_Open()
mySound = New Sound("new_gong.ogg")
mySound.play()
End Sub


Die Datei new_gong.ogg liegt in deinem Projektverzeichnis!

Edit: Die Komponente gb.sdl.sound einbinden
gg

Naubaddi
Foriker
Beiträge: 90
Registriert: Di 10. Jan 2012, 21:30
Kontaktdaten:

Re: Wie wird eine .ogg Datei abgespielt?

Beitrag von Naubaddi » Sa 24. Jan 2015, 18:29

Hi,

gambi hat geschrieben:...Edit: Die Komponente gb.sdl.sound einbinden...


genau da gibt es ein Probleme, "gb.gui" und "gb.sdl2" vertragen sich nicht, aus dem Grund wollte ich es mit "gb.media" versuchen.

Keine Ahnung ob es an der von mir benutzten Gambas 3... trunk Version liegt.

Die Notlösung mußte noch mal überarbeitet werden, um 0 und 12 Uhr gab es 0 Gongs :mrgreen: .

*edit, habe gerade erst den Knopf "gambas" entdeckt :oops: .

gambas code
Public Sub PlayGong()
Dim sDatei As String
Dim i12 As Integer
sDatei = Left$(sClock[3], InStr(sClock[3], "_clock.png") - Len(sClock[3]) - 1) & "_gong.ogg"
i12 = Hour(Now)
If i12 > 12 Then i12 = Abs(Hour(Now) - 12)
If i12 = 0 Then i12 = 12
If Minute(Now) = 30 And Second(Now) < 2 Then Exec ["cvlc", "--play-and-exit", sDatei]
If Minute(Now) < 1 And Second(Now) < i12 * 2 Then Exec ["cvlc", "--play-and-exit", sDatei]
End


Grüßle
Gruß, Naubaddi

vuott
Foriker
Beiträge: 73
Registriert: Fr 16. Jan 2015, 01:27
Kontaktdaten:

Re: Wie wird eine .ogg Datei abgespielt?

Beitrag von vuott » Sa 24. Jan 2015, 23:45

Hello,

I'ld like to point out this WIKI page of Gambas-it.org:

http://www.gambas-it.org/wiki/index.php ... asse_Music

(you need activate the new gb.sdl2.audio Gambas component ! )

yoda
Moderator
Beiträge: 441
Registriert: Mo 2. Jan 2006, 22:35
Wohnort: bei Göttinge
Kontaktdaten:

Re: Wie wird eine .ogg Datei abgespielt?

Beitrag von yoda » Mo 26. Jan 2015, 18:53

Hi,

vielleicht hilft dir das Modul Morsecode weiter. Ist schon etwas älter.


Code: Alles auswählen

' Gambas module file


'''
' Name: ModuleMorseCode
' Author: Timothy Marshal-Nichols
' eMail: timothy.marshal-nichols@ntlworld.com
' Version: 1.0
' Version Date: May 2007
' Version History:
'
'''
' Licence Information
'
' This program is free software; you can redistribute it and/or modify
' it under the terms of the GNU General Public License as published by
' the Free Software Foundation; either version 2 of the License, or
' (at your option) any later version.
'
' This program is distributed in the hope that it will be useful,
' but WITHOUT ANY WARRANTY; without even the implied warranty of
' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
' GNU General Public License for more details.
'
' You should have received a copy of the GNU General Public License
' along with this program; if not, write to the Free Software
' Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
'
' http://www.gnu.org/licenses/gpl.html
'
'''
' Description:
'
' Very basic morse code players. Using SDL to play
' ogg sound files.
'
' Note that we downloaded the sound files from:
'   http://en.wikipedia.org/wiki/Morse_Code
'
'''
' Developed using Gambas2 Version
'
'  Version: 1.9.48
'
' Gambas Components Used:
'
' gb - Gambas Internal native classes
' gb.sdl.sound - Sound library based on SDL
'
' Look in the Project menu then Properties... and select
' the Components tab. Check that the listed components
' are in the project.
'
'''
' External Dependencies:
'
' None.
'
'''
' Class Usage:
'
' Call the Play() method with some text:
'
'   ModuleMorseCode.Play("some text")
'
' Call the Stop() method if you get fed up with the noise.
'
'    ModuleMorseCode.Stop()
'
'''

Public _timeTrigger As Timer
Private currentText As String

Public Sub _init()
  _timeTrigger = New Timer As "_timeTrigger"
  _timeTrigger.Delay = 250
   _timeTrigger.Delay = 150
End

'''
''' Public methods
'''

Public Sub Play(Text As String)
  If Trim(currentText) Then
    ' If we still have some text left then
    ' add a space and the new text
    currentText = currentText & " " & Text
  Else
    currentText = currentText & Text
  End If
  _timeTrigger.Enabled = True
End

Public Sub Stop()
  currentText = ""
End

'''
''' Timer event
'''

Public Sub _timeTrigger_Timer()
  Dim c As String
  ' Check if we still have some text left
  If currentText Then
    ' Check if we are still playing the current ogg file
    If Music.Pos = 0.0 Then
     
 
      ' No music file playing.
      ' Get next character. Note: characters are
      ' converted to upper case for our file names
      c = Upper(Left(currentText))
      currentText = Right(currentText, -1)
      If c Like "[0-9]" Then
      Wait 0.1
        ' Play numbers sound file
        Music.Load("cwsounds/" & c & "_number_morse_code.ogg")
        Music.Play()
'        FormMorseCode.Sending(c)
       '  FMain.Sending(c)
      Else If c Like "[A-Z]" Then
         Wait 0.1
        ' Play letters sound file
        Music.Load("cwsounds/" & c & "_morse_code.ogg")
        Music.Play()
        'FormMorseCode.Sending(c)
'        MainForm.Sending(c)
      Else
        ' Any other item we shall treat as a space
        ' i.e wait 0.7 of a second
       ' FormMorseCode.Sending("space")
'        MainForm.Sending("space")
         _timeTrigger.Enabled = False
         Wait 0.6
         _timeTrigger.Enabled = True
      End If
    End If
  Else
    ' No text left. So end timer
    'FormMorseCode.Sending("")
'    MainForm.Sending("")
    _timeTrigger.Enabled = False
  End If
   
End

''' End of ModuleMorseCode '''



flotte Grüße

Naubaddi
Foriker
Beiträge: 90
Registriert: Di 10. Jan 2012, 21:30
Kontaktdaten:

Re: Wie wird eine .ogg Datei abgespielt?

Beitrag von Naubaddi » Sa 31. Jan 2015, 15:51

Hi,

vuott hat geschrieben:...(you need activate the new gb.sdl2.audio Gambas component ! )


ja eine gb.sdl2.audio wäre das Richtige, bei gambas3 3.6.99+svn68 all trunk ist diese nicht vorhanden :cry: .

yoda hat geschrieben:...gb.sdl.sound - Sound library based on SDL...


Auch eine gb.sdl.sound ist nicht vorhanden.

Werde warten bis die nächste stabile Gambas Version erscheint, bis dahin funktioniert es mit cvlc recht gut.

Grüßle
Gruß, Naubaddi

vuott
Foriker
Beiträge: 73
Registriert: Fr 16. Jan 2015, 01:27
Kontaktdaten:

Re: Wie wird eine .ogg Datei abgespielt?

Beitrag von vuott » Sa 31. Jan 2015, 17:32

Naubaddi hat geschrieben:ja eine gb.sdl2.audio wäre das Richtige, bei gambas3 3.6.99+svn68 all trunk ist diese nicht vorhanden :cry: .

Hi,
Do you use SVN to update your Gambas ?
If "yes", if you have Gambas-3 and you update via SVN you'll have gb.SDL2.audio component.


Naubaddi hat geschrieben:Auch eine gb.sdl.sound ist nicht vorhanden.


...that is so strange ! :shock:
It's no possible you do not have gb.sdl.sound component !

Naubaddi
Foriker
Beiträge: 90
Registriert: Di 10. Jan 2012, 21:30
Kontaktdaten:

Re: Wie wird eine .ogg Datei abgespielt?

Beitrag von Naubaddi » Sa 31. Jan 2015, 17:59

Hi,

vuott hat geschrieben:...Do you use SVN to update your Gambas ?...


nein, ich benutze den Paketmanager von Ubuntu bzw. für Gambas:

Code: Alles auswählen

Gambas 3 trunk

There are binary packages for the latest /trunk made daily by the Gambas Team.
It allows you to test the latest development version without having to compile it!
First add the PPA to your sources.list. Open a terminal and do:
 $ sudo add-apt-repository ppa:gambas-team/gambas-daily
Next update the sources and install Gambas:
 $ sudo apt-get update
 $ sudo apt-get install gambas3


Bei gambas3 3.6.99+svn68 all trunk ist eine gb.media bei der ich nicht weiß wie es funktioniert, ein Versuch mit:

gambas code
' Gambas class file

Private $hPlayer As MediaPlayer

Public Sub Form_Open()
$hPlayer = New MediaPlayer As "MediaPlayer"
$hPlayer.URL = Media.URL("/home/new_gong.ogg")
$hPlayer.Play ' <-- ergibt die Fehlermeldung: Cannot set status
End


Wie schon geschrieben werde ich auf eine neue Gambas stable Version warten.

Grüßle
Gruß, Naubaddi

vuott
Foriker
Beiträge: 73
Registriert: Fr 16. Jan 2015, 01:27
Kontaktdaten:

Re: Wie wird eine .ogg Datei abgespielt?

Beitrag von vuott » Sa 31. Jan 2015, 18:17

Naubaddi hat geschrieben:Bei gambas3 3.6.99+svn68 all trunk ist eine gb.media bei der ich nicht weiß wie es funktioniert


Hello Naubaddi,

...ok, so you want to use gb.media.

So, I point out to you this page, that I wrote, in Wiki of italian Gambas Forum:
http://www.gambas-it.org/wiki/index.php ... e_gb.media

Look at and try the first example, there.

Naubaddi
Foriker
Beiträge: 90
Registriert: Di 10. Jan 2012, 21:30
Kontaktdaten:

Re: Wie wird eine .ogg Datei abgespielt?

Beitrag von Naubaddi » So 1. Feb 2015, 19:23

Hi,



besten DANK für das Beispiel, Musik mit gb.media funktioniert nun :D .

Grüßle
Gruß, Naubaddi

Naubaddi
Foriker
Beiträge: 90
Registriert: Di 10. Jan 2012, 21:30
Kontaktdaten:

Re: Wie wird eine .ogg Datei abgespielt?

Beitrag von Naubaddi » So 1. Feb 2015, 22:38

Hi,

nochmal BESTEN DANK für das Beispiel :D .

Die Routine für den Gong bzw. für die Gongs sieht nun so aus:

gambas code
' Gambas class file

Private mp As New MediaPlayer As "mp" ' MediaPlayer erstellen

Public Sub Form_Open() ' Programm starten
mp.URL = Media.URL("/home/Erbschaft_gong.ogg") ' Datei für den MediaPlayer (länge der Datei ca. 2,7 Sekunden)
PlayGong(4) ' zu PlaGong springen mit der Anzahl der Wiederholungen
Form_Close() ' zu Form_Close springen
End ' Ende von: Programm starten

Public Sub Form_Close() ' das Programm soll beendet werden
Me.Close ' Programm beenden
End ' Ende von: das Programm soll beendet werden

Public Sub PlayGong(iMal As Integer) ' x mal einen Gong abspielen
Dim iAktuell As Integer ' aktueller Gong
iAktuell = 1 ' der aktuelle Gong fängt mit 1 an
tGong.Delay = 1 ' Gong-Timer auf 1ms setzen
tGong.Start ' Gong-Timer starten
While iAktuell < iMal ' bis zum vorletzten Gong wiederholen (bei 1 Sekunde wird der Gong abgebrochen)
Inc iAktuell ' die Anzahl der Gongs um 1 erhöhen
mp.Play ' Gong-Datei abspielen
Wait 1 ' eine Sekunde warten
mp.Stop ' abspielen der Gong-Datei stoppen (der nächste Gong soll abgespielt werden)
Wend ' Ende von: bis zum vorletzten Gong wiederholen
mp.Play ' Gong-Datei abspielen
Wait 3 ' 3 Sekunden warten bis die Gong-Datei bis zum Ende abgespielt wurde
mp.Stop ' abspielen der Gong-Datei stoppen
End ' Ende von: x mal einen Gong abspielen


jetzt muß das nur noch in das Uhrenprogramm ClockWf eingesetzt werden.

Grüßle
Gruß, Naubaddi

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste