Platforms to show: All Mac Windows Linux Cross-Platform
/Audio/PortAudio Streaming Receiver
Required plugins for this example: MBS Audio Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /Audio/PortAudio Streaming Receiver
This example is the version from Sun, 17th Mar 2012.
Project "PortAudio Streaming Receiver.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Löschen"
Const kFileQuit = "Beenden"
Const kFileQuitShortcut = ""
End Class
Class Window1 Inherits Window
Control sock Inherits TCPSocket
ControlInstance sock Inherits TCPSocket
EventHandler Sub Connected()
msg "Connected"
InitAudio
End EventHandler
EventHandler Sub DataAvailable()
dim s as string
s=me.ReadAll
if c=nil then Return
if lenb(s)=0 then Return // nothing
dim m as MemoryBlock = s
if not c.AddFloatAudio(m) then
msg "Failed to play audio!"
else
if c.IsStreamActive<>1 then
dim e as integer=c.Start
if e<>0 then
msg "Audio Error: "+str(e)
end if
end if
end if
dim n as double = m.Size/4
'if LastTime=0 then
Msg "Received "+str(n)+" frames. "+str(floor(n/((Microseconds-LastTime)/1000000.0)))+" frames/s"
LastTime=Microseconds
'else
'ReceiveCount=ReceiveCount+n
'Msg "Received "+str(n)+" frames. "+str(ReceiveCount*(Microseconds-LastTime)/1000000.0)+" frames/s"
'end if
End EventHandler
EventHandler Sub Error()
if me.LastErrorCode<>102 then
MsgBox "Socket error: "+str(me.LastErrorCode)
msg "Socket error: "+str(me.LastErrorCode)
else
msg "Disconnected"
end if
PushButton1.Enabled=true
End EventHandler
End Control
Control EditField1 Inherits TextField
ControlInstance EditField1 Inherits TextField
End Control
Control StaticText1 Inherits Label
ControlInstance StaticText1 Inherits Label
End Control
Control PushButton1 Inherits PushButton
ControlInstance PushButton1 Inherits PushButton
EventHandler Sub Action()
PushButton1.Enabled=false
sock.Address=EditField1.Text
sock.Connect
End EventHandler
End Control
Control StaticText2 Inherits Label
ControlInstance StaticText2 Inherits Label
End Control
Control status Inherits Label
ControlInstance status Inherits Label
End Control
EventHandler Sub Close()
if c<>Nil then call c.Close
sock.Close
End EventHandler
Sub InitAudio()
dim e as integer
po=new PortAudioMBS
c=new PortAudioStreamBufferedMBS
c.NoUnderflow=True
e=c.OpenDefaultStream(1,8000.0)
if e=0 then
else
// On Linux 8000 is not supported?
msg "Audio Error: "+str(e)+" with host error: "+str(c.HostError)
end if
End Sub
Sub msg(s as string)
if status<>Nil then status.text=s
System.DebugLog s
End Sub
Property LastTime As Double
Property ReceiveCount As double
Property c As PortAudioStreamBufferedMBS
Property po As PortAudioMBS
End Class
MenuBar MenuBar1
MenuItem FileMenu = "&Ablage"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Bearbeiten"
MenuItem EditUndo = "&Rückgängig"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "&Ausschneiden"
MenuItem EditCopy = "&Kopieren"
MenuItem EditPaste = "&Einfügen"
MenuItem EditClear = "#App.kEditClear"
MenuItem UntitledMenu0 = "-"
MenuItem EditSelectAll = "&Alles auswählen"
End MenuBar
End Project
See also:
The items on this page are in the following plugins: MBS Audio Plugin.