|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
QBMaik
Anmeldungsdatum: 17.09.2004 Beiträge: 67 Wohnort: 25899 Niebüll
|
Verfasst am: 28.06.2005, 17:04 Titel: Midi, XM, MOD, MP3, WAV |
|
|
Ist es schon möglich, mit FreeBASIC Musik abzuspielen? Wie? |
|
Nach oben |
|
|
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 28.06.2005, 17:35 Titel: |
|
|
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 |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 28.06.2005, 19:20 Titel: |
|
|
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 _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 28.06.2005, 20:58 Titel: FMOD |
|
|
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 |
|
|
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 28.06.2005, 22:58 Titel: |
|
|
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 |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 29.06.2005, 15:01 Titel: |
|
|
Geil!!
Ich guck mir den code mal an und probier das alles zu verstehen. THX
Mfg
Michael |
|
Nach oben |
|
|
Tomtitom
Anmeldungsdatum: 20.09.2004 Beiträge: 308
|
Verfasst am: 29.06.2005, 20:12 Titel: |
|
|
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 |
|
|
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 29.06.2005, 20:49 Titel: |
|
|
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 |
|
|
Mecki Igel
Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
Verfasst am: 29.06.2005, 21:54 Titel: |
|
|
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
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.
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 29.06.2005, 22:28 Titel: |
|
|
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 |
|
|
Tomtitom
Anmeldungsdatum: 20.09.2004 Beiträge: 308
|
Verfasst am: 30.06.2005, 16:00 Titel: |
|
|
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 |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 30.06.2005, 18:59 Titel: |
|
|
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 |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 30.06.2005, 19:29 Titel: |
|
|
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 |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
|
|
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.
|
|