from workshop 28th April 2PM. ap/UNIX process: dd, cat, FIFO, pipes for PD, jekyll, i_am, leaks with ap/xxxxx::
Transparency of process. coding at the commandline
0) pure:dyne (customised to include data radio, osctrans/dump and devdisplay)
see: https://devel.goto10.org/puredyne
and for our own module/iso: http://1010.co.uk/tech_notes2.html#4
Basic use (nesting?) and testing. Hardware recognition
Opening the terminal (xterm):
The classic: cat /dev/hda1 > /dev/dsp
and cat /dev/dsp
and use of devdisplay.
cat whatever | devdisplay
1) UNIX and commandline use - using the terminal - finding one's way around:
the shell: BASH, zsh - terminal/shell/commandline - history, completion, Ctrl-C
kernel and user-space (OS and hardware)
files and processes - exposure
documentation: man, --usage
filesystem (ls, ls -R, cd)
init and processes - ps, pstree, proc filesystem, file handlers, top, kill, killall, PIDs
devices as files - read and write (ls -laR /dev) eg. /dev/dsp /dev/urandom
STDIN and STDOUT
dangers...
2) Pipes and redirection. devices. /dev/dsp. /dev/urandom - piping to and from
Operators:
> |
cat /dev/dsp > recorder
cat recorder > /dev/dsp
more advanced:
tee: cat /dev/dsp | tee /dev/dsp > /dev/ttylistenpipe: http://www.vanheusden.com/listenpipe/
3) basic commands - tac:
tac - concatenate and print files in reverse
dd - dd if=source of=dest
at - echo "mail -s 'go directly to jail' m@1010.com < /dev/null" | at 15:25 (not in pure:dyne mail/at)kill
yes - rhythmic
split and csplit
strings
diff
grep
3.5) ap0202 and pipes
cells --usage
cell -m10000 -f / -o /dev/dsp -c piper
(also how to use to output to terminal:
cells -m1000 -i /dev/urandom -o /dev/tty
and:
xterm -e sh -c "/usr/bin/cells -m 10000 -f -o /dev/tty -s > /dev/null" )
4) xxxxx commandline tools: jekyll, i_am, devdisplay, osctrans, oscdump
jekyll: cat whatever | jekyll step samplesize > /dev/dsp i_am: cat whatever | i_am no_of_neurons inputs outputs > /dev/dsp OSC, osctrans and oscdump: the entry into networking osctrans: pipe to OSC (hardwired to /test namespace):: example usage cat whatever | osctrans 127.0.0.1 9999 (addr, port) and will send piped data as 8 bit values. oscdump: pipes from OSC (no namespace):: example usage oscdump 5252 > ~/pdfifo
5) promiscuOS introduction: a leaking OS
6) networking - (wireless - iwconfig, ifconfig, ports, UDP/TCP, netcat (nc) examples:
netcat:
chat (TCP):
nc -l -p 3333
nc 192.168.1.22 3333
pipe over network:
nc -l -p 3333 > /dev/dsp
cat /dev/dsp > nc 192.168.1.22 3333
or - for remote execution:
nc -l -p 3333 | zsh
7) interface to PD - piperead~/write externals. netcat, OSC
mkfifo first
ext13/piperead:
open /blah/blah <1< and <0< for start and stop
piperead~ num_of channels
see documentation patch: pipeio~.pd (though currently crashed pure:dyne pd)
Netsend and netreceive objects (pdsend executable also): <netreceive port UDP/TCP (1 or 0)< This input can be any stream of Pd messages separated by semicolons. use: nc 192.168.1.22 9999 OSC examples: <dumpOSC port< <OSCroute /test< <num<and partner sendOSC with connect IP PORT and send messages - see plenum examples
8) networked play
Further possibilities: shell scripting, Chicken Scheme, C code - forking and ptrace, GNU Emacs, sox
1] Listenpipe: http://www.vanheusden.com/listenpipe/ - lp01
2] Pd. piperead~ and pipewrite~ externals and our sample patches for plenum
3] pipes in ap0202 software
4] pipes in our own commandline software: OSC, neuronal, devdisplay, jekyll software
5] pipes in promiscuOS: promiscuOS_notes#7 (pipe.c in the kernel)
6] pluggability: plugging
7] pipes and process: OS -
pipes p.776+ (Understanding Linux Kernel) also the pipe code we found: lp-01 which copies file descriptors (pipe is only accessible to parent process). FIFO allows for arbitrary piping and is associated with a kernel buffer.
8] proposed leaking pipes and pools
9]
lsof | grep FIFO
10] (netcat) and for workshop:
1) basic understanding GNU/Linux and networking:
d) cat, dd and ls
i) what are pipes and how they work
j) what is a FIFO and how we can use named pipes
3) audio on Linux
a) what is a device?
b) what is /dev/dsp and how we can input and output on the command line
c) how we can use stuff like cat with /dev/dsp
d) what is sample rate. 8 bit/16 bit audio
3) netcat and pd
a) is basically networked cat but need to understand ports
b) maybe also pd in relation to netcat and pipes
c) how we can interface ap to pd
see also unix