Market overview

Question: Can these Products receive OSC-TCP?

Puredata

Yes, bud dumpOSC does not work, you have to use netreceive and the external OSC / unpackOSC

en.flossmanuals.net/pure-data/ch065_osc/

puredata.info/community/projects/software/osc

Reaktor

Reaktor 5.1 seems not to accept tcp connections.

Supercollider

Accepts tcp by option: start with: scsynth -t <tcp-port> -u <udp-port>

MAX/MSP (5.1.8)

Yes, via net.tcp.recv und OSC-route.

maxobjects.com/?v=objects&id_objet=2

maxobjects.com/?v=objects&id_objet=2863

Processing

Yes, via oscP5:

www.sojamo.de/libraries/oscP5/

www.sojamo.de/libraries/oscP5/examples/oscP5tcp/oscP5tcp.pde

 

 

Fehlermessung

Der Fehler ist auf folgenden 2 Schreenshots dargestellt. Während der Sender 234 Nachrichten verschickt, kommen beim Empfänger gerade mal noch 100 an. Diese Werte können den Zählern der Sende-/Empfangsapplikation entnommen werden.

Der Parallel dazu laufende Netzwerkscanner liefert auf beiden Seiten exakt die gleichen Werte.

Wir können beobachten, dass der Nachrichtenverlust mit der Paketfrequenz steigt. Bei weniger als ca. 50 Nachrichten pro Sekunde gehen diese nicht verloren.

Bild 1: Sender, der Nachrichtenzähler befindet sich unten, rechts, als rotgedruckte Debug-Info: “sent messages:   234”. Beim Sender handelt es sich um eine C++/QT4-Applikation.

Bild 2: Empfänger: Hierbei handelt es sich um einen PureData-Patch. Der Nachrichtenzähler befindet sich im Fenster rechts aussen, im untersten Feld mit dem Wert 100.

TCP options to use

Working with Out-Of-Band Data: Setting the URG-Flag. This prevents that later packets have to wait for earlier, lost ones.

send(…,,MSG_OOB)

Setting the socket to TCP_NOWAIT: This sends small amounts of data immediately, without waiting for filling one packet.

m_socket->setSocketOption(QAbstractSocket::LowDelayOption, 1);

PSH-Flag….

packetlife.net/blog/2011/mar/2/tcp-flags-psh-and-urg/

Literature:

The GNU C Library Reference Manual, Edition 0.12

www.qtcentre.org/threads/45955-SOLVED-setting-QTcpSocket-TCP_NODELAY-option

doc.qt.nokia.com/4.7/qabstractsocket.html

Besprechung Konzept mit Mentor

Bedenken Mentor: TCP kann zu hohen Latenzzeiten führen, wegen der Retransmits und Sliding Window Size.

Vorschlag Mentor: Entwickeln eines eigenen, UDP-basierten Sicherungssystems.

Hypothese Student: Probleme mit Da die OSC-Pakete tendenziell eher klein sind (~32 bytes) und die Übertragungsstrecken kurz, fallen Verzögerungen durch warten auf Retransmits wenig ins Gewicht.

Fragen:

  • Wie genau verhält sich TCP beim verschicken von vielen kleinen Datenpakete. Kann dieser durch setzen des URG-Flags (Urgent) positiv beeinflusst werden?
  • Wie kann das URG-Flag gesetzt werden?
  • Wie können Stati der TCP-Verbindung vom Code aus abgefragt werden?

Literatur:

UNIX Network Programming: The sockets networking API
By W. Richard Stevens, Bill Fenner, Andrew M. Rudoff