==== script purrr des pieds à la tête ====
cas debian stretch sur noyau 4
cd /usr/src #ou on veut...
## install dependances
echo 'flex automake tcl8.5-dev tk8.5-dev tcl-dev tk-dev libtool tkpng tclxapian bison fakeroot libnss3 libgconf2-4 python-tk byacc subversion git python-dev libasound2-dev libjack-jackd2-dev libasound2-plugins qjackctl libfftw3-dev libvorbis-dev libbluetooth-dev ubuntustudio-audio-plugins libmp3lame-dev libspeex-dev libgsl0-dev portaudio19-dev libgl1-mesa-dev libglu1-mesa-dev libglew-dev libmagick++-dev libftgl-dev libgmerlin-dev libgmerlin-avdec-dev libavifile-0.7-dev libmpeg3-dev libquicktime-dev libv4l-dev libraw1394-dev libdc1394-22-dev ladspa-sdk dssi-dev tap-plugins ladspa-foo-plugins lua5.2-dev lua5.2 invada-studio-plugins-ladspa blepvco swh-plugins mcp-plugins cmt blop slv2-jack omins rev-plugins libslv2-dev dssi-utils vco-plugins wah-plugins fil-plugins mda-lv2 libsmpeg0 libjpeg62 flite1-dev libgsm1-dev libgtk2.0-dev libstk0-dev libsndobj-dev libfluidsynth-dev fluid-soundfont-gm zita-njbridge rsync liblua50-dev' > dep
for i in `cat dep`
do
apt install -y $i
done
# si Gem nous interesse
sudo apt-get install bison flex automake libasound2-dev libjack-jackd2-dev
libtool libbluetooth-dev libgl1-mesa-dev libglu1-mesa-dev libglew-dev
libmagick++-dev libftgl-dev libgmerlin-dev libgmerlin-avdec-dev
libavifile-0.7-dev libmpeg3-dev libquicktime-dev libv4l-dev libraw1394-dev
libdc1394-22-dev libfftw3-dev libvorbis-dev ladspa-sdk dssi-dev tap-plugins
invada-studio-plugins-ladspa blepvco swh-plugins mcp-plugins cmt blop
liblilv-dev omins rev-plugins dssi-utils vco-plugins wah-plugins
fil-plugins mda-lv2 libmp3lame-dev libspeex-dev libgsl-dev portaudio19-dev
liblua5.3-dev python-dev libsmpeg0 libjpeg-turbo8 flite1-dev libgsm1-dev
libgtk2.0-dev git libstk0-dev libsndobj-dev libfluidsynth-dev
fluid-soundfont-gm byacc
## install partie gpio
cd /usr/src
##git clone https://github.com/friendlyarm/WiringNP # ne connait plus la NEO???
wget http://bricoles.du-libre.org/lib/exe/fetch.php?media=pd:wiringnp.tar.gz
mv fetch*wiringnp.tar.gz wiringnp.tar.gz
tar xvf wiringnp.tar.gz
cd WiringNP
./build clean
./build static
# purrr
cd /usr/src
git clone https://git.purrdata.net/jwilkes/purr-data.git
cd purr-data/l2ork_addons/raspberry_pi/disis_gpio
mv wiringPi wiringPi.PI
cp -a /usr/src/WiringNP wiringPi
#ajout -fPIC pour nos ARM
cd /usr/src/purr-data/l2ork_addons/raspberry_pi
sed -i ./makefile.include -e "s/LINUXCFLAGS = -DPD -O2 /LINUXCFLAGS = -DPD -O2 -fPIC /"
# modif dependance rsp
cd /usr/src/purr-data
sed -i packages/linux_make/debian/control.raspbian -e "s/libgsl0ldbl\,/libgsl0ldbl\| libgsl2\,/"
cd /usr/src/purr-data/l2ork_addons
./tar_em_up.sh -R
# pb avec Gem et pkgconfig a resoudre (ln -s /usr/bin/pkg-config /usr/bin/pkgconfig ...
#dans /usr/src/purr-data/packages/linux_make/Makefile , mettre en commentaire ? pkgconfig ?
# -mv -f $(DESTDIR)$(libpddir)/../pkgconfig $(DESTDIR)$(libpddir)/
# quand tout est ok on devrait avoir un pd...deb dans /usr/src/purr-data/packages/linux_make sinon
cd /usr/src/purr-data/packages/linux_make/build/
tar cvfz ../purr-v-2.4.3-A.tgz ./* # choisir le nom de l'archive... car il semble que le .deb ne se fasse pas
# pour l'installation
cd /
tar xvf /usr/src/purr-data/packages/linux_make/purr-v-2.4.3-A.tgz
=== ouverture du mixer audio et des entrée uart,i2c etc ===
Dans le cas noyau 4 mettre dans le fichier /boot/armbianEnv.txt
armbianEnv.txt
verbosity=1
logo=disabled
console=both
disp_mode=1920x1080p60
overlay_prefix=sun8i-h3
overlays=usbhost1 usbhost2 analog-codec i2c0 pps-gpio spi-spidev uart1 uart2
rootdev=UUID=a9473195-8c3d-4340-99fa-36e07f900eda
rootfstype=ext4
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
rebooter pour la prise en compte
apt install fluxbox xterm tightvncserver xfonts-base x11-xserver-utils
su pi
vncpasswd
vncserver # une fois pour pouvoir fixer le fichier .vnc/xstartup
=== Patch et objets Purr ===
l'idée étant d'avoir des machines qui envoient du pâté en streaming vers une machine qui héberge icecast2 et des machines qui reçoivent la sauce pour en faire des choses. il y a au moins une machine de réception avec icecast qui peut etre celle de commande d'interfaces, moteur etc .. ou de production de son.
* http://write.flossmanuals.net/pure-data/audio-streaming/
* objet mp3cast de unauthorized
* http://aug.ment.org/readanysf/
Il pourrait y avoir un gestionnaire genre webradio du style https://www.sourcefabric.org/en/airtime/ ou [[ http://liquidsoap.fm/doc-dev/quick_start.html| liquisoap]] avec des entrées/sorties vers Internet possibles...
Un qui fonctionne ffmpeg
- : modprobe snd-aloop pcm_substreams=2
- : .asoundrc
# .asoundrc
pcm.multi {
type route;
slave.pcm {
type multi;
slaves.a.pcm "output"; # ou slaves.a.pcm "loopout";
slaves.b.pcm "loopin";
slaves.a.channels 2;
slaves.b.channels 2;
bindings.0.slave a;
bindings.0.channel 0;
bindings.1.slave a;
bindings.1.channel 1;
bindings.2.slave b;
bindings.2.channel 0;
bindings.3.slave b;
bindings.3.channel 1;
}
ttable.0.0 1;
ttable.1.1 1;
ttable.0.2 1;
ttable.1.3 1;
}
pcm.!default {
type plug
slave.pcm "multi"
}
ctl.!default {
type hw
card 0
}
pcm.output {
type hw
card 0
rate 44100
periods 128
period_time 0
period_size 1024 # must be power of 2
buffer_size 8192
}
pcm.loopin {
type plug
rate 44100
periods 128
period_time 0
period_size 1024 # must be power of 2
buffer_size 8192
slave.pcm "hw:Loopback,0,0"
}
pcm.loopout {
type plug
rate 44100
periods 128
period_time 0
period_size 1024 # must be power of 2
buffer_size 8192
slave.pcm "hw:Loopback,1,0"
}
{{ :pd:asound.tgz |}}
apt install ffmpeg
avec serveur , ici local
- ffserver -f ffserver.conf # avec server.conf
- ffmpeg -f alsa -ac 2 -i hw:Loopback,1,0 -acodec mp2 -b:a 128k http://localhost:8090/feed1.ffm
- mplayer http://192.168.2.88:8090/stream.mp3 # par ex
server.conf:
# Port on which the server is listening. You must select a different
# port from your standard HTTP web server if it is running on the same
# computer.
HTTPPort 8090
# Address on which the server is bound. Only useful if you have
# several network interfaces.
HTTPBindAddress 0.0.0.0
# Number of simultaneous HTTP connections that can be handled. It has
# to be defined *before* the MaxClients parameter, since it defines the
# MaxClients maximum limit.
MaxHTTPConnections 200
# Number of simultaneous requests that can be handled. Since FFServer
# is very fast, it is more likely that you will want to leave this high
# and use MaxBandwidth, below.
MaxClients 100
# This the maximum amount of kbit/sec that you are prepared to
# consume when streaming to clients.
MaxBandwidth 1000
# Access log file (uses standard Apache log file format)
# '-' is the standard output.
CustomLog -
# Suppress that if you want to launch ffserver as a daemon.
#NoDaemon
##################################################################
# Definition of the live feeds. Each live feed contains one video
# and/or audio sequence coming from an ffmpeg encoder or another
# ffserver. This sequence may be encoded simultaneously with several
# codecs at several resolutions.
# You must use 'ffmpeg' to send a live feed to ffserver. In this
# example, you can type:
#
# ffmpeg http://localhost:8090/feed1.ffm
# ffserver can also do time shifting. It means that it can stream any
# previously recorded live stream. The request should contain:
# "http://xxxx?date=[YYYY-MM-DDT][[HH:]MM:]SS[.m...]".You must specify
# a path where the feed is stored on disk. You also specify the
# maximum size of the feed, where zero means unlimited. Default:
# File=/tmp/feed_name.ffm FileMaxSize=5M
File /tmp/feed1.ffm
FileMaxSize 200K
# You could specify
# ReadOnlyFile /saved/specialvideo.ffm
# This marks the file as readonly and it will not be deleted or updated.
# Specify launch in order to start ffmpeg automatically.
# First ffmpeg must be defined with an appropriate path if needed,
# after that options can follow, but avoid adding the http:// field
#Launch ffmpeg
# Only allow connections from localhost to the feed.
#ACL allow 127.0.0.1
##################################################################
# Now you can define each stream which will be generated from the
# original audio and video stream. Each format has a filename (here
# 'test1.mpg'). FFServer will send this stream when answering a
# request containing this filename.
# MP3 audio
Feed feed1.ffm
Format mp2
AudioCodec libmp3lame
AudioBitRate 128
AudioChannels 2
AudioSampleRate 44100
NoVideo
# Ogg Vorbis audio
#
#Feed feed1.ffm
#Format ogg
#AudioCodec libvorbis
#Title "Stream title"
#AudioBitRate 64
#AudioChannels 2
#AudioSampleRate 44100
#NoVideo
#
##################################################################
# Special streams
# Server status
Format status
# Only allow local people to get the status
ACL allow localhost
ACL allow 192.168.2.0 192.168.2.255
#FaviconURL http://pond1.gladstonefamily.net:8080/favicon.ico
# Redirect index.html to the appropriate site
URL http://www.ffmpeg.org/
directe sans serveur (mais sans trop de gain en ressource):
- fmpeg -f alsa -ac 2 -i hw:Loopback,1,0 -acodec libmp3lame -b 128k -f rtp rtp://clientip:6000
- sur le client
- avec mplayer stream.sdp
- faire un fchier texte stream.sdp
o=- 0 0 IN IP4 clientip
c=IN IP4 clientip
m=audio 6000 RTP/AVP 14
acces par fluxbox, pensez vncpasswd et vncserver
apt install fluxbox xterm tightvncserver xfonts-base x11-xserver-utils