WEBODY est une pièce sonore à propos du sexe en réseau, et plus spécifiquement des “sextapes” disponibles sur le web, matériau pornographique de plus en plus répandu avec la massification des “webcams” grand public et légères (laptops, smartphones), l’accès grandissant à Internet et au travers de pratiques de sexe “live stream”, camgirls monétisées, etc.
Cette pièce prend pour parti d’écouter ce corpus médiatique, produit et partagé dans le réseau multipoint du web, rendu public et archivé par l’intermédiaire de diverses plateformes, blogs… Il s’agira de considérer ce corpus uniquement dans sa dimension sonore, faisant l’hypothèse d’une pornographie audio (une pornophonie?), en le privant de la visualité prédominante dans la représentation sexuelle, afin d’entendre ce que ce matériau audio nous dit à propos de nos usages et représentations des corps, des technologies, des genres, des réseaux sociaux…
La méthode de composition restera au plus près du document brut, et le détaillant par les moyens de l’amplification, du filtrage, du cut-up ou de la manipulation temporelle des échantillons. Continuer la lecture de webody
Catégorie : projet
[ph_msl]

[ph_msl] is a multislider GUI with persitent parameters for interface/graphic setup and conceived as an « abstraction ».
It relies on 4 « compiled » externals from 3 libraries – mostly in order to perform dynamic-patching, state-saving and user events capture :
– 6 about color-format conversion :
ph_iem2rgb
ph_rgb2iem
To try it : download & uncompress the archive below :
> ph_msl_updated (11/07/2016)
It has been tested with pd-0.46-7 and pd-0.47-1 on MacOS X 10.10.5, and necessary libraries from the « deken » utility.
I’m happy to receive any comments on this : phae_dot_ilias_at_gmail_dot_com
prototype et montage de « Disponer el viento »
session#1 : Proof of concept / Conférence de présentation
user input simulation
Copyrighted Silence : structuration des données et métadonnées
le script RIP.py :
# -*- coding: utf-8 -*-
'''
RIP PROCESS
- rip current CD in drive to "CD_xxx" directory
- create current "rip_info.xml" in "CD_XXX" directory
- rip audio into .wav files to "waverip" subdirectory
- update global "rip_process.xml"
'''
import pymedia.removable.cd as cd
import sys, wave, struct, os
import datetime
import lxml.etree as ET
import random
import CS_lib
# --- LOAD "rip_process.xml"
rip_process_path = os.path.normpath(CS_lib.DATAPATH+"/rip_process.xml")
parser = ET.XMLParser(remove_blank_text=True)
tree = ET.parse(rip_process_path, parser)
rip_process = tree.getroot()
cds = rip_process.findall("cd")
newCD_id = len(cds) + 1
# --- get basic info
print("Be sure to insert CD in drive...")
print("and input human readable labels below")
artistLabel = raw_input("Artist : ")
albumLabel = raw_input("Album : ")
now = datetime.datetime.now()
print("this is local time")
print(now)
# --- créer le dossier "CD_xxx" et son sous-dossier "waverip"
os.chdir(CS_lib.DATAPATH)
newCD_relDir = "CD_"+str(newCD_id)
os.mkdir(newCD_relDir)
newCD_dir = os.path.normpath(CS_lib.DATAPATH+"/"+newCD_relDir)
os.chdir(newCD_relDir)
os.mkdir("waverip")
newCD_waverip_dir = os.path.normpath(newCD_dir+"/waverip")
# --- Ouvrir le media, choisir le bon lecteur
cd.init()
driveNo = raw_input("Choose drive no. (on "+str(cd.getCount())+" drive(s) found) : ")
if driveNo == '':
driveNo = str(CS_lib.default_CDDriveNo)
c = cd.CD(int(driveNo))
# --- Récupérer les propriétés dont la Table Of Content (TOC), et le nombre de pistes
cd_props = c.getProperties()
print("opened cd")
newCD_tracksNb = len(cd_props['titles'])
print ("with "+str(newCD_tracksNb)+" track(s)")
currentTrackPos = 0
rip_info = ET.Element('rip_info')
# Itérer parmi les pistes
for tr_no in xrange(len(cd_props['titles'])):
# --- ouvrir piste
tr = c.open(cd_props['titles'][tr_no])
# --- calcul de la durée
tr_len_in_frames = int(cd_props['TOC'][tr_no][1])
tr_len_in_smp = tr_len_in_frames * 588
tr_len_min = (tr_len_in_smp / 44100) / 60
tr_len_sec = (tr_len_in_smp / 44100) % 60
tr_len_ms = int(((tr_len_in_smp / 44100.0) % 1.0) * 1000)
# --- affichage données de piste
print '--- TRACK %s ---' % (tr_no + 1)
print '%s frames = %s samples' % (tr_len_in_frames, tr_len_in_smp)
print '%s\'%s\":%s' % (tr_len_min, tr_len_sec, tr_len_ms)
# --- création du .wav et extraction des données vers fichier
wavefile_path = os.path.normpath(newCD_waverip_dir+"/TR_"+str(tr_no+1)+".wav")
wfile = wave.open(wavefile_path, 'w')
wfile.setparams((2, 2, 44100, 0, 'NONE', 'not compressed'))
wfile.writeframes(tr.read(tr_len_in_smp * 4))
wfile.close()
tr.close()
# --- ajout des données pour rip_info
track_info = ET.SubElement(rip_info, 'track', id=str(tr_no+1))
track_length = ET.SubElement(track_info, 'length_in_smp')
track_length.text = str(tr_len_in_smp)
track_position = ET.SubElement(track_info, 'position_in_smp')
track_position.text = str(currentTrackPos)
currentTrackPos += tr_len_in_smp
# --- fin du rip, éjection du CD
c.eject()
# --- Enregistrer "rip_info.xml"
xmlstring = ET.tostring(rip_info, pretty_print=True)
rip_info_path = os.path.normpath(newCD_dir+"/rip_info.xml")
output = open(rip_info_path, 'w')
output.write(xmlstring)
output.close()
print "rip_info.xml created"
# --- mettre à jour rip_process
newCD = ET.Element("cd", attrib={'id':str(newCD_id)})
artist = ET.SubElement(newCD, 'artist')
artist.text = artistLabel
album = ET.SubElement(newCD, 'album')
album.text = albumLabel
rip_date = ET.SubElement(newCD, 'rip_date')
now = datetime.datetime.now()
rip_date.text = now.strftime("%Y-%m-%d %H:%M:%S")
tracksNb = ET.SubElement(newCD, 'tracksNb')
tracksNb.text = str(newCD_tracksNb)
rip_process.append(newCD)
#xmlstring = CS_lib.prettify(rip_process)
xmlstring = ET.tostring(rip_process, pretty_print=True)
output = open(rip_process_path, 'w')
output.write(xmlstring)
output.close()
print "rip_process.xml updated"
le fichier ./rip_process.xml :
<rip_process>
<cd id="1">
<artist>Margo</artist>
<album>Furtive Furies</album>
<rip_date>2015-09-16 23:53:10</rip_date>
<tracksNb>13</tracksNb>
</cd>
<cd id="2">
<artist>Motorhead</artist>
<album>Dirty Love</album>
<rip_date>2015-09-16 23:59:39</rip_date>
<tracksNb>11</tracksNb>
</cd>
<cd id="3">
<artist>Portishead</artist>
<album>Portishead</album>
<rip_date>2015-09-17 00:06:08</rip_date>
<tracksNb>11</tracksNb>
</cd>
<cd id="4">
<artist>Laurie Anderson</artist>
<album>Bright Red</album>
<rip_date>2015-09-17 00:49:39</rip_date>
<tracksNb>14</tracksNb>
</cd>
<cd id="5">
<artist>MIS (Mexican Institute of Sound)</artist>
<album>Politico</album>
<rip_date>2015-09-17 01:01:02</rip_date>
<tracksNb>13</tracksNb>
</cd>
<cd id="6">
<artist>Robert Wyatt</artist>
<album>Rock Bottom</album>
<rip_date>2015-09-17 01:43:47</rip_date>
<tracksNb>6</tracksNb>
</cd>
<cd id="7">
<artist>KMFDM</artist>
<album>WWIII</album>
<rip_date>2015-09-17 01:51:50</rip_date>
<tracksNb>11</tracksNb>
</cd>
</rip_process>
exemple d’un fichier ./CD_xxx/rip_info.xml :
<rip_info>
<track id="1">
<length_in_smp>7952700</length_in_smp>
<position_in_smp>0</position_in_smp>
</track>
<track id="2">
<length_in_smp>11660628</length_in_smp>
<position_in_smp>7952700</position_in_smp>
</track>
<track id="3">
<length_in_smp>14457156</length_in_smp>
<position_in_smp>19613328</position_in_smp>
</track>
<track id="4">
<length_in_smp>10254132</length_in_smp>
<position_in_smp>34070484</position_in_smp>
</track>
<track id="5">
<length_in_smp>12640236</length_in_smp>
<position_in_smp>44324616</position_in_smp>
</track>
<track id="6">
<length_in_smp>8336076</length_in_smp>
<position_in_smp>56964852</position_in_smp>
</track>
<track id="7">
<length_in_smp>8220828</length_in_smp>
<position_in_smp>65300928</position_in_smp>
</track>
<track id="8">
<length_in_smp>15575532</length_in_smp>
<position_in_smp>73521756</position_in_smp>
</track>
<track id="9">
<length_in_smp>10181808</length_in_smp>
<position_in_smp>89097288</position_in_smp>
</track>
<track id="10">
<length_in_smp>7172424</length_in_smp>
<position_in_smp>99279096</position_in_smp>
</track>
<track id="11">
<length_in_smp>9042852</length_in_smp>
<position_in_smp>106451520</position_in_smp>
</track>
<track id="12">
<length_in_smp>13088880</length_in_smp>
<position_in_smp>115494372</position_in_smp>
</track>
<track id="13">
<length_in_smp>32832156</length_in_smp>
<position_in_smp>128583252</position_in_smp>
</track>
</rip_info>
44K1’00 »
Premier essai, à la fenêtre de chez moi, côté cathédrale, durant le mois d’août
Cette idée vient de l’envie encore une fois de « résumer » un lieu, de l’embrasser dans une dimensions plus à notre échelle.
Pour rentrer dans le concret, il s’agit d’enregistrer l’activité « sonore », la vibration de l’air, à des fréquences qui ne sont plus audibles mais qui sont quand même peut-être des périodes, de récurrences, peut-être même des harmonies. Ainsi on enregistre avec un micro, mais à un taux d’échantillonnage de 80Hz. Selon le théorème de Nyquist, la plus haute fréquence pouvant être représentée est donc 40Hz, donc à mon audition inaudible je crois, en tout cas, je n’arrive pas à la reproduire sur mes haut-parleurs.
Là c’est l’activité de la ville qui formerait des fréquences dans ce spectre inaudible, et peut-être même pas sonore, infrasonore. Le passage des voitures produirait-t-il une fréquence qui n’est pas DC, mais légèrement oscillante, à je ne sais pas 0,37Hz (toutes les 2,720 secondes) ?
Est-ce qu’il y a une fréquence ou ensemble de fréquences qui représenterait le sommeil de la ville, son éveil… l’oscillation d’une activité « bruitante » ?
Est-ce que ce processus n’enregistre pas seulement le bruit électrique ? Mais alors ce bruit électrique n’est-il pas aussi important que ce qui se passe à la fenêtre ? Plus important, ce bruit « propre » (self noise) sonne-t-il plus dans ce processus d’enregistrement que l’activité extérieure, le paysage ?
En tout cas, on aura pris soin de filtrer assez radicalement les fréquences supérieures à la fréquence de Nyquist (SR/2), soit 40Hz et au-delà.
[Courbe de réponse du filtre en entrée (filtre anti-repli du spectre (eng: anti-foldover filter) }
La finalité de cet enregistrement est d’être reproduit à un taux plus élevé pour transposer ces fréquences inaudibles dans le spectre audible. Par conséquent, ce signal « sous-échantillonné » est reproduit à 44100Hz (norme CD). Ainsi le signal le plus haut enregistré (40 Hz en théorie) est transposé à 22 050 Hz (humainement inaudible), et 20Hz à 11 025Hz.
Et 100Hz entendu correspondent à une fréquence enregistrée de 0,184058Hz soit une période de 5,5125 secondes.
[Tableau de correspondance spectre enregistré/spectre reproduit sur une échelle logarithmique]
(Hz) -> période
40 = 13,7 sec
80 = 6,9 sec160 = 3,4 sec
320 = 1,7 sec
640 = 861 ms
1k2 = 430 ms
2k5 = 215 ms
5k1 = 108 ms (9,3Hz)
10k = 54ms (18Hz)
Chose amusante c’est qu’à ce taux de transposition, 80Hz reproduits à 44100Hz, les 80 minutes d’un CD représentent 44100 minutes d’enregistrement, soit 30 jours et 15 heures.
Il faudrait faire l’essai avec des signaux test, par exemple un bruit blanc avec très lent LFO sur l’amplitude (par exemple 100/551,25 Hz, comme on disait, une période d’environ 5 secondes). Voir si cette variation d’amplitude produit bien une relative sinusoïde à faible taux d’échantillonnage.
plagiat audio : quelques liens
FORUM « SAMPLES »
http://saceml.deepsound.net/archives/archi3.html
http://saceml.deepsound.net/archives/archi4.html
http://saceml.deepsound.net/archives/archi75.html
ARTICLES « SAMPLES »
http://www.konbini.com/fr/entertainment-2/sampling-et-droits-dauteur/
https://en.wikipedia.org/wiki/Legal_issues_surrounding_music_sampling
https://fr.wikipedia.org/wiki/%C3%89chantillon_%28musique%29#Questions_juridiques
python wave
bases en python >>> FLOSS Manual : Initiation à Python >>> http://www.flossmanualsfr.net/initiation-a-python/
la librairie « wave » assez simple d’utilisation : https://docs.python.org/2/library/wave.html
premier tests sous python :
# -*- coding:utf-8 -*-
import wave, struct
sndfile = wave.open("Lusitania.wav", 'r')
print sndfile.getparams()
sndfile.setpos(48200)
frames = sndfile.readframes(12)
print(len(frames))
i = 0
while i < len(frames):
oneframe = frames[i:i+2]
print(len(oneframe))
data = struct.unpack("<h", oneframe)
print(data)
i+= 2
sndfile.close()
également la librairie externe PyMedia (http://www.pymedia.org) qui permet de lire directement un CD Audio
à noter les spécificités du CD Audio (voir notamment https://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio#Frames_and_timecode_frames) : il semblerait que, au moins dans la TOC (Table Of Content) les durées et positions soient inscrites en « frames » de 588 paire d’échantillons (gauche et droite) soit 1/75e de seconde (588 x 75 = 44100). Donc il s’agit du « grain », de l’unité minimale de durée.
(à vérifier tout de même avec un autre outil (par ex : rip puis pd [soundfiler] voir si on a des durées qui ne sont pas multiples de 588)
également à propos du format WAVE : un bon document >> http://web.archive.org/web/20080113195252/http://www.borg.com/~jglatt/tech/wave.htm
organismes phono-logiciels (OlinuXino)
notes sur l’installation & la configuration du système et de puredata
Continuer la lecture de organismes phono-logiciels (OlinuXino)


























