Mikro und Soundliveausgabe?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

#Reaper

Newsposter

Betreff: Mikro und Soundliveausgabe?

BeitragSo, Jun 17, 2007 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Also der Titel sagt glaube ich schon alles Wink

Ist es denn mit BMax (von Haus aus) möglich, Sound live auszugeben und auch den Input vom Mikro live aufzunehmen?

Ich weiß nur, dass man mit BMax Sounds runtime erstellen kann, aber Live ist das ja nicht... Sad
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Vertex

BeitragSo, Jun 17, 2007 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist mir nicht bekannt, dass das mit dem Soundmodul von BRL geht.

Ich kann dir hier nur OpenAL empfehlen:
https://www.blitzforum.de/foru...hp?t=22116

a) kann man sehr einfach Aufnahmen von Mikro, LineIn usw. machen
b) kann man mit Queue Buffers in Echtzeit Sound ausgeben.

a) mit alcGetString(Null, ALC_CAPTURE_DEVICE_SPECIFIER) erhälst du eine Liste aller Aufnahmegeräte. Dann mit alcCaptureOpenDevice öffnest du einen Recorder mit dem angegebenen Aufnahmeformat(also Samplefrequenz, und Format). Mit alcGetIntegerv(Recorder, ALC_CAPTURE_SAMPLES, 4, Varptr(Samples)) fragst du ab, wie viel Samples im OpenAL's internen Ringbuffer bereit liegen und mit alcCaptureSamples(Recorder, Buffer, Size) holst du die Samples aus dem Buffer.

Die Samples kannst du nun in einer WAV oder PCM Datei bspw. direkt speichern oder mir OggVorbis direkt in OGG Datei komprimieren(Vorbis ist die kostenlose Alternative zu MP3 mit besserer Qualität bei kleinere Datenrate)

b) Queue Buffers stellst du dir wie bei Front- und Backbuffer vor. Während man in den Backbuffer gerade seine Samples rendert wird der Frontbuffer schon abgespielt. Damit lassen sich bspw. Audiodaten streamen(siehe mein OggVorbis Player).

mfg olli
vertex.dreamfall.at | GitHub
 

#Reaper

Newsposter

BeitragSo, Jun 17, 2007 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, danke für die Infos Smile

Aber eine Frage: Ist dein OpenAL-Modul nicht ziemlich das gleiche wie das Brl OpenAL-Modul? Wenn nicht, was sind denn da die Unterschiede? Smile


Edit:
Wie verwendet man alcGetString()? Weiß nicht was ich mit dem Byte anfangen soll Sad
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Vertex

BeitragSo, Jun 17, 2007 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Unterschiede sind:
BRL nutzt beispielsweise LoadLibraryA, um an die Funktionsadressen zu kommen. Ich habe mein Modul noch nie unter Linux oder gar Mac getestet, deswegen weiß ich nicht, ob es da auch läuft. Das von BRL auf alle Fälle. Weiterhin hat BRL eine eingebaute Doku. Dafür arbeitet Vertex.OpenAL im Super Strict Modus, hat hübscheren Code und definiert Funktionen für al, alut, alc und alext.

Für Windows bevorzuge ich also mein Modul. Für Linux und Mac müsste ich schauen, ob ich vllt. was dran schrauben muss.

Ansonsten
Code: [AUSKLAPPEN]
SuperStrict

Framework Vertex.OpenAL

Local Specifiers:String[], ..
      Specifier:String

Specifiers = EnumerateRecorders()
If Not Specifiers Then
   WriteStdout("Error~n")
   End
EndIf

For Specifier = EachIn Specifiers
   WriteStdout("-"+Specifier+"~n")
Next

WriteStdout("~nready~n")
End

Function EnumerateRecorders:String[]()
   Local List       : Byte Ptr, ..
         Specifiers : String[], ..
         Specifier  : String

   List = alcGetString(Null, ALC_CAPTURE_DEVICE_SPECIFIER)
   If Not List Then Return Null

   While List[0]
      Specifiers = Specifiers[..Specifiers.Length + 1]
      Specifiers[Specifiers.Length - 1] = String.FromCString(List)
      List :+ Specifiers[Specifiers.Length - 1].Length + 1
   Wend

   Return Specifiers
End Function


Vllt. kann ich mal meine ganzen Sources von meinem Audiosystem veröffentlichen, da wäre das alles dabei auch mit FFT Analyse, Noisefilter und Autokorrelation.

mfg olli
vertex.dreamfall.at | GitHub
 

#Reaper

Newsposter

BeitragSo, Jun 17, 2007 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke! Smile
Unter Windows geht es, aber unter Linux leider nicht Sad

Code: [AUSKLAPPEN]
/home/reaper/Programme/BlitzMax/tmp/.bmx/untitled1.bmx.console.release.linux.x86.o: In function `bb_EnumerateRecorders':
(code+0xfc): undefined reference to `alcGetString'
collect2: ld returned 1 exit status
Build Error: Failed to link /home/reaper/Programme/BlitzMax/tmp/untitled1
Process complete




Edit:
Wieso schmiert bei mir das Vorbis Example ab, wenn ich in den Explorer gehe? Shocked
Bzw. es schmiert nicht ab, sondern es Endet einfach mitten drinen mit "Process complete" :-/
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group