Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Midi, XM, MOD, MP3, WAV

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
QBMaik



Anmeldungsdatum: 17.09.2004
Beiträge: 67
Wohnort: 25899 Niebüll

BeitragVerfasst am: 28.06.2005, 17:04    Titel: Midi, XM, MOD, MP3, WAV Antworten mit Zitat

Ist es schon möglich, mit FreeBASIC Musik abzuspielen? Wie?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 28.06.2005, 17:35    Titel: Antworten mit Zitat

Hallo.
Hier wurde das schonmal besprochen

Damit kann man wave dateien abspielen. Mit der WINAPI kann man auch mp3 und andere abspielen. Wie das geht weiß ich auch nicht.

Mfg
Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 28.06.2005, 19:20    Titel: Antworten mit Zitat

Hallo.

WAV ist wohl erst mal am einfachsten zu handlen. Wenn ich mal Zeit finde, schreibe ich auch noch ein Beispiel für andere Formate. Wenn dir die Dateigröße wichtig ist, kannst du die WAV-Dateien ja RLE komprimieren und entpackst sie bei der Installation. Überhaupt lassen sich WAVs ganz gut mit ZIP komprimieren.

Viele Grüße!
Sebastian

//edit: 1111 happy
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1875
Wohnort: D59192

BeitragVerfasst am: 28.06.2005, 20:58    Titel: FMOD Antworten mit Zitat

Hallo,
wenn es nicht darum geht " das Rad neu zu erfinden" dh. alle Routinen selbst zu schreiben, sollte man sich mal FMOD ansehen.
http://www.fmod.de/

FreeBASIC hat schon eine "Schnittstelle" für die fmod.dll.
http://www.freebasic.net/index.php/link

Allerdings muß man sich die DLL hier laden
http://www.fmod.org/files/fmodapi374win.zip fast 2MB.

Aber dann macht es richtig Spaß mit FMod zu experimentieren.
Beispiel für Hintergrundmusik:
Code:
'$INCLUDE: 'fmod.bi'
' Initialisieren FMOD with 44000Hz, 8 channels.
FSOUND_Init(44000, 8, 0)   
Dim HintergrundMusik As Integer

HintergrundMusik = FMUSIC_LoadSong("gangsta.mid")
If HintergrundMusik = 0 Then
  Print "Fehler beim laden der MIDI Datei!"
  GoTo FClose
End If 

'FMUSIC_SetLooping(HintergrundMusik, 1)
FMUSIC_PlaySong(HintergrundMusik)
While InKey$ = ""
  FSOUND_Update
Wend

Print "nocheinmal Taste druecken.."
FClose:
FSOUND_Close
sleep
End


Beispiel für mp3:
Code:
'$INCLUDE: 'fmod.bi'
' 48kHz sample rate, 8 channels.
FSOUND_Init(48000, 8, 0)   
Dim mp3Sound As Integer

mp3Sound = FSOUND_Sample_Load(FSOUND_FREE, "tutut.mp3", 0, 0, 0)
If mp3Sound = 0 Then
  Print "Fehler beim laden der mp3 Datei!"
  GoTo FClose
End If 

FSOUND_Sample_SetMode(mp3Sound, FSOUND_LOOP_NORMAL)
FSOUND_PlaySound(FSOUND_FREE, mp3Sound)

While InKey$ = ""
  FSOUND_Update
Wend

Print "nocheinmal Taste druecken.."
FClose:
FSOUND_Close
sleep
End


Gruß
Volta
Hier die Beispiele als fmod_bspl.zip
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 28.06.2005, 22:58    Titel: Antworten mit Zitat

Das kann man auch mit 3kb lösen:

Code:

screen 12
DIM volume(0 to 1)
''
''
dim tmp as string

for i% =1 to LEN(command$)
   tmp$=MID$(command$,i,1)
   if tmp$ <> CHR$(34) THEN datei$=datei$+tmp$
next i%

select case datei$
   case ""
      INPUT "Welche datei soll gespiel werden??",dateiname$
   case else
      CLS
      PRINT "Die datei ";command$;" wird gespielt."
      dateiname$=TRIM$(datei$)
end select

Declare Function mciSendString Lib "winmm.dll" _
  Alias "mciSendStringA" (ByVal lpszCommand As String, _
  ByVal lpszReturnString As String, _
  ByVal cchReturnLength As Long, _
  ByVal hwndCallback As Long) As Long
Declare Function GetShortPathName Lib "kernel32" _
  Alias "GetShortPathNameA" (ByVal lpszLongPath As String, _
  ByVal lpszShortPath As String, _
  ByVal cchBuffer As Long) As Long

   
Function Mp3Play(sFile As String, sAlias As String) As Integer
  Dim sBuffer As String
  Dim lResult As Long
  Dim sf AS STRING
  sf = Space$(255)
  sBuffer = Space$(255)
  sf = sFile
  lResult = GetShortPathName(sf, sBuffer, Len(sBuffer))
  If lResult <> 0 Then
    sBuffer = RTRIM$(sBuffer)
    If mciSendString("open " + sBuffer + " type MPEGVideo alias "+sAlias , 0, 0, 0) = 0 Then
      mciSendString "play "+sAlias+" from 0", 0, 0, 0
      Exit Function
    End If
  End If
End Function

'
'`Hiermit konnte man wave dateien anhalten und stoppen. Mit mp3 klappt
''das noch nicht.
'
Sub WAVEClose(sAlias As String)
  mciSendString "stop " + sAlias, 0, 0, 0
  mciSendString "close " + sAlias, 0, 0, 0
End Sub

Sub WAVEPause(sAlias as String)
   mciSendString "stop " + sAlias, 0, 0, 0
end sub

sub WAVEWeiter(sAlias as string)
   mciSendString "play " + sAlias, 0, 0, 0
end sub

'Dieser FreeBasic Code spielt einen WAV Sound ganz einfach über die WinAPI ab.
'Jeder Sound bekommt eine individuelle Kennung zugeordnet. Über diese Kennung, im Beispiel
'»fbsound« kann das Abspielen des Sounds auch unterbrochen werden. Dazu dient die Sub
'WAVEStop, der diese Kennung als Argument übergeben wird.
'Viel Spaß mit dem Code! Sebastian Steiner, sebastian_steiner[ätt]gmx.de
'
'
''Ergänzung von Michael Laumen(michaellaumen@web.de):
''Dieser Code wurde so verändert, dass er jetzt mp3
''dateien spielen kann. Der Grundcode stammt aber von sebastiasn steiner.
''Das spielen kann man leider noch nicht unterbrechen, da ein fehler von der lib gemeldet wird.
'


nummer$="soundnr1"
resultat = Mp3Play(dateiname$,nummer$)


do
   sleep 1
   a$=inkey$
   if a$=CHR$(27) then exit do
loop

END


Ich hab mir mal 15min Zeit genommen und im inet was gesucht. Ich hab sebastians code verändert. Ich habe auch einen kommentar hinzugefügt. Mit dem Programm kann man mp3 dateien verknüpfen, die werden dann damit abgespielt(man muss keinen dateiname mehr eintippen)

@sebastian: Guck dir das mal an und mach auch so, dass man dateien stoppen kann. Das bekomme ich nciht hin.(dein kommentar hab ich noch erhalten. Ist ja hauptsächlich von dir)

Mfg
Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 29.06.2005, 14:28    Titel: Antworten mit Zitat

Hallo.

So, ich hab euch jetzt mal ein kleines Beispiel geschrieben, mit dem alle gängigen Formate abgespielt werden können. lächeln Man kann die Wiedergabe pausieren, wieder fortsetzen und beenden. Außerdem wird die aktuelle Abspielposition und die Gesamtlänge beides via WinAPI ermittelt und ausgegeben. Der Download findet sich hier:
http://home.arcor.de/ssteiner/qbforum/fbsound.zip (EXE Datei und Source enthalten)

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 29.06.2005, 15:01    Titel: Antworten mit Zitat

Geil!!
Ich guck mir den code mal an und probier das alles zu verstehen. durchgeknallt THX


Mfg
Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Tomtitom



Anmeldungsdatum: 20.09.2004
Beiträge: 308

BeitragVerfasst am: 29.06.2005, 20:12    Titel: Antworten mit Zitat

also denke erstmal für den Code Sebi, aber scheinbar scheint das nicht so 100% zu klappen, ich habe ein paar mp3s durchprobiert und bei einerhat man nur komische Geräusche gehört, irgendwie verzerrt und bei einigen anderen kamen so komische Klopfgeräusche zwischendurch!?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 29.06.2005, 20:49    Titel: Antworten mit Zitat

Bei mir klappt bei allen getesteten songs alles zu 100%. Komisch. Vielleicht hast du nciht die richtigen mp3 codecs instaliert. Das Programm greift ja auf windows zu. Oder hängt das mit der bitrate zusammen?? Ich habe nur mp3s mit 192kbit/sek. Vielleicht hört sich das bei weniger bits/sek schlechter an.

Mfg
Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 29.06.2005, 21:54    Titel: Antworten mit Zitat

Jau, ich denke auch, dass die WinAPI einfach nicht so dieser ganzen Codec-Welt gewachsen ist, wie es WinAmp oder der WindoofPlayer sind. Oder werden die Codecs vom WMplayer frai zugänglich gespeichert für die API? Eher nicht, denk ich mal lächeln

Der Code ist jetzt übrigens dank Sebi's Upload-Freudigkeit auch auf www.FreeBASIC.de in den Downloads verfügbar.

@Volta, privat: Probier's doch jetzt nochmal!
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 29.06.2005, 22:28    Titel: Antworten mit Zitat

Hallo.

Also bei mir hat der Source auch mit allen getesteten MP3s und WAVs funktioniert. Ich kann mir da eigentlich auch nur ein Codecproblem oder eine unübliche Bitrate o.ä. als Ursache vorstellen. Die Codecs, die du unter Windows installiert hast, stehen der WinAPI in der Regel auch zur Verfügung.

@Tomtitom: Schade, dass es nicht 100% bei dir klappt. Versuch doch mal einen der vielen Audiokoverter, die man im Netz findet, um die MP3s, die Probleme machen, mal in ein Standardformat zu bringen. Vielleicht ist da ja wirklich irgendein exotischer Codec dran schuld. Also das muss eindeutig an den MP3s liegen. Übrigens: Mit dem Rechtemanagement geschützte WMAs wird man mit dem Source nicht abspielen können. Hast du solche Dinger vielleicht versucht?

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Tomtitom



Anmeldungsdatum: 20.09.2004
Beiträge: 308

BeitragVerfasst am: 30.06.2005, 16:00    Titel: Antworten mit Zitat

naja, also ich habe schon mit Absicht vielleicht etwas schwierigere Audiodateien durchprobiert, weil ich eben wissen wollte, wie gut das Programm ist. Ich denke mal auch, dass die meisten Programme normal laufen. Die eine mp3 die überhaupt nicht hörbar war hatte 64 kbps und 22 hz

Ich wollte im Prinzip ja nur sagen, dass man eben nicht jede Audiodatei fehlerfrei damit abspielen kann.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 30.06.2005, 16:10    Titel: Antworten mit Zitat

D'rum hab ich ja geschrieben "alle gängigen Audioformate"... zwinkern
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 30.06.2005, 18:59    Titel: Antworten mit Zitat

Könnte man das ganze auch in eine library umwandel??

So stelle ich mir das dann vor:
Code:

'resultat=soundplay(aktion$,[dateiname$],sAlias$)

'und dann ein song öffnen:

resultat=soundplay("OPEN","D:\1.mp3","meinsound")
if resultat = 0 then
   PRINT "Der song wird jetzt gespielt."
ELSE
   end
end if

resultat=soundplay("PLAY","","meinsound")


So ist das idiotensicher und jeder kann das dann einfach in Programme einbauen. Kann man sowas machen oder ist das zuviel arbeit??

Mfg
Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 30.06.2005, 19:02    Titel: Antworten mit Zitat

Hallo.

Ich finde, dass die Subs nicht sonderlich schwer zu verwenden sind.
Was die Routinen PlaySound, mStop, mPause usw. machen, sollte doch so schwer nicht zu kapieren sein, oder?! durchgeknallt grinsen

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 30.06.2005, 19:29    Titel: Antworten mit Zitat

Kompliziert ist das nicht. Nur dadurch wird der quellcode von nem programm größer. Dann sieht das alles viel komplizierter aus. So geht das aber auch sehr gut. War ja nurn vorschlag.

Mfg
Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 30.06.2005, 21:18    Titel: Antworten mit Zitat

Hallo.

War auch nicht böse gemeint, aber man kann's mit der Vereinfachung auch übertreiben. Dann sind wir ja schon fast bei BlitzBasic... grinsen

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz