From: Guillaume Pellerin Date: Mon, 30 Nov 2020 20:23:54 +0000 (+0100) Subject: add slides X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=b38584bed258022705b1570560919d0d67db23db;p=slides.git add slides --- diff --git a/src/slides/img/.directory b/src/slides/img/.directory new file mode 100644 index 0000000..c046b84 --- /dev/null +++ b/src/slides/img/.directory @@ -0,0 +1,4 @@ +[Dolphin] +PreviewsShown=true +Timestamp=2017,5,16,16,27,8 +Version=3 diff --git a/src/slides/img/EdisonPhonograph.jpg b/src/slides/img/EdisonPhonograph.jpg new file mode 100644 index 0000000..83c3f6e Binary files /dev/null and b/src/slides/img/EdisonPhonograph.jpg differ diff --git a/src/slides/img/Edisongoldmoulded.jpg b/src/slides/img/Edisongoldmoulded.jpg new file mode 100644 index 0000000..c38c95f Binary files /dev/null and b/src/slides/img/Edisongoldmoulded.jpg differ diff --git a/src/slides/img/Gillett3_a2cbe.gif b/src/slides/img/Gillett3_a2cbe.gif new file mode 100644 index 0000000..e42e574 Binary files /dev/null and b/src/slides/img/Gillett3_a2cbe.gif differ diff --git a/src/slides/img/POW_MB.png b/src/slides/img/POW_MB.png new file mode 100644 index 0000000..3536080 Binary files /dev/null and b/src/slides/img/POW_MB.png differ diff --git a/src/slides/img/TM_model.svg b/src/slides/img/TM_model.svg new file mode 100644 index 0000000..932f133 --- /dev/null +++ b/src/slides/img/TM_model.svg @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/slides/img/archeoph2.jpg b/src/slides/img/archeoph2.jpg new file mode 100644 index 0000000..df11d88 Binary files /dev/null and b/src/slides/img/archeoph2.jpg differ diff --git a/src/slides/index.md b/src/slides/index.md new file mode 100644 index 0000000..a85d938 --- /dev/null +++ b/src/slides/index.md @@ -0,0 +1,586 @@ +class: center, middle, ircam, inverse + +# Réseaux, open source et communs numériques + +## Guillaume Pellerin + +### Pôle Web, Dpt Innovation et Moyens de la Recherche, IRCAM + + + + + + + +#### Séminaire CY Université - 16/11/2020 - En ligne + + +--- +class: ircam + +# Plan + +1. Open Source +1. Réseaux +1. Communs numériques + + +--- +class: ircam + +# Introduction + +## Durabilité des formats + +.pull-left[ + + +Cylindre de cire + +] + +-- +.pull-right[ + + +Phonographe + +] + +--- +class: ircam + +# Introduction + +## Durabilité des formats + +.pull-left[ + + +Plan de phonographe + +] + +-- +.pull-right[ + + +L'Archeophone + +] + +--- +class: ircam + +# Introduction + +## Constats + +- la capitalisation des inventions (brevet) a concentré et centralisé les valeurs techniques +- la mondialisation libérale des échanges a favorisé la dillution des produits capitalisés à grande échelle +- le transfert de propriété s'établit selon une relation entre le coût intrinsèque de l'objet (lié au travail) et sa valeur symbolique +- le droit d'auteur ou d'une marque constitue un vecteur de potentiel privatif +- le numérique en mobilité a fait explosé les scénario d'usage et de tranfert des ressources et des valeurs + +## Objectifs + +- comprendre les réseaux, le développement participatif, le Web +- définir l'open source et ses applications +- localiser les communs numériques +- établir une formulation de l'écologie numérique + + +--- +class: ircam, center, middle, inverse + +# Open Source + +--- +class: ircam + +# Libre et Open Source + +## Enjeux + +- **protéger** juridiquement les inventions et les oeuvres +- **pérenniser** les matériaux, les produits et la forme juridique des oeuvres +- **libérer** les usages, les détournements et les réutilisation +- **nourrir** et impliquer des communautés +- **valoriser** les produits et fidéliser les partenaires +- **outiller** la pédagogie + +--- +class: ircam + +# Libre et Open Source + +## Logiciel libre + +"Le logiciel libre est caractérisé par sa liberté d’utilisation, un +développement collaboratif et sa redistribution à une communauté de +contributeurs et d’utilisateurs." (IRILL) + +## FLOSS + +- Free, as in speech +- Libre, as in french +- Open, as in bar +- Source, as in code +- Software, as in everywhere + +--- +class: ircam + +# Copyleft + +Le copyleft (🄯), parfois traduit comme gauche d'auteur, est l'autorisation donnée par l'auteur d'un travail soumis au droit d'auteur (œuvre d'art, texte, programme informatique ou autre) d'utiliser, d'étudier, de modifier et de diffuser son œuvre, dans la mesure où cette même autorisation reste préservée. + +https://fr.wikipedia.org/wiki/Copyleft + + + + +--- +class: ircam, tight + +# Licences + +## Logicielles + +- **Copyleft fort** : obligation de diffuser les œuvres dérivées sous la même licence, effet contaminant (GNU Public Licence, CeCILL A). +- **Copyleft faible** : permet l’utilisation du code dans un cadre potentiellement non libre tant que les modifications sur le projet en lui-même sont rediffusées (LGPL, Mozilla Public Licence, CeCILL B) +- **Non-copyleft** : licences permissives (MIT, BSD, Apache, CeCILL C) + +## Oeuvres, données + +- Creative Commons (by, sa, nc, nd) +- Artistic License +- Open Data Commons + +https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licenses + +https://creativecommons.org/share-your-work/ + + +--- +class: ircam + +# Licences libres + +## GNU Public License (GPL) + +- Richard Stallman, GNU (1983) +- Distributions GNU/Linux (RedHat, Debian, Unbuntu, etc.) +- Android / Linux + +## BSD Licence + +- Noyau BSD (inspiration Unix) +- FreeBSD +- Darwin (Apple, OSX) +- iOS + +--- +class: ircam + +# Licences libres + +## Creative Commons + +.pull-left[ + +- trois “couches” de licences +- CC BY +- CC BY-SA +- CC BY-ND +- CC BY-NC +- CC BY-NC-SA +- CC BY-NC-ND + +https://creativecommons.org/licenses/?lang=fr-FR + +] + +.pull-right[ + + + +] + +## Autres licences libres + +https://fr.wikipedia.org/wiki/Liste_de_licences_libres + + +--- +class: ircam + +# Linux + +.pull-left[ + +- réécriture du noyau d'Unix en 1991 par Linus Torvalds +- Linux Is Not UniX +- GPL +- ~3500 développeurs à travers le monde (bénévoles ou rémunérés) + +https://fr.wikipedia.org/wiki/Linux + +] + +.pull-right[ + + + +] + +--- +class: ircam + +# GNU + +.pull-left-30[ + +- ensemble de projets co-créés et publiés sous licence GPL +- système d'exploitation +- des milliers de développeurs à travers le monde (bénévoles ou rémunérés) +- distributions de logiciels non privateurs + +https://www.gnu.org/home.fr.html + +] + +.pull-right-70[ + + + + + +] + + +--- +class: ircam + +# Debian + +.pull-left[ + +- The universal operating system +- GNU / Linux +- 59000 paquets +- compatible avec toutes les architectures + +https://www.debian.org/ + +] + +.pull-right[ + + + + +] +--- +class: ircam + +# BSD + +.pull-left-30[ + +- Berkeley Sorfware Distribution +- BSD Licence +- Dérivartion multilples y compris propriétaires + +[BSD](https://fr.wikipedia.org/wiki/Berkeley_Software_Distribution) + +] + +.pull-right-70[ + + + +] + +--- +class: ircam, center, middle, inverse + +# Réseaux + +--- +class: ircam + +# Réseaux + +.pull-left-30[ + +- Internet +- Architecture +- Protocole IP +- Neutralité +- World Wide Web +] + +.pull-right-70[ + + + +] + +--- +class: ircam, tight + +# World Wide Web + +.pull-left[ +## http:// + +- 1989 : Tim Berners-Lee created the World Wide Web at CERN +- HTTP : HyperText Transfer Protocol +- URL : Uniform Resource Locator +- HTML : HyperText Markup Language (hyperlink) +- Server / Client Web (browser) +- [W3C](https://www.w3.org/) : 11k active particpants +] + +.pull-right[ +```HTML5 + + + + + title + + + + + + + +``` + + + +] + + +--- +class: ircam, tight + +# Réseaux + +## Sociaux, fermés et propriétaires + +- GAFAMs (Google, Apple, Facebook, Amazon, Microsoft) +- Facebook +- Twitter +- Instagram +- WhatsApp +- TikTok +- etc. + +### Quels problèmes à utiliser un système fermé mais gratuit ? + +- Vous êtes le produit +- Alimenter des données d'utilisation revendues (Google, Cambridge Analytica) +- Privatiser l'innovation +- Participe à la concentration des ressources (syndrome de l'hypermarché) + +### Problème : les GAFAMs produident désormais aussi du logiciel libre + +--- +class: ircam, tight + +# Réseaux + +## Sociaux, ouverts et libres + +- Signal +- Telegram +- Element (réseau Matrix) +- Diaspora +- Mastodon +- Reddit +- [Steemit](https://steemit.com/) + +## Ouverts mais sécurisés ? + +- Chiffrage de bout en bout +- Open source = code lisible et chevaux de Troie détectables +- Décentralisés + +--- +class: ircam, center, middle, inverse + +# Communs numériques + +--- +class: ircam + +# Communs numériques + +Un logiciel se construit à partir d'une multitude de briques conçues par différents auteurs dans différents langages + +## GitHub + +- système de dépôt + +## GitLab + +- idem GitHub mais libre et open source + +## SoftWare Heritage + +- archive universelle des logiciels +- 143 millions de projets + +https://www.softwareheritage.org/?lang=fr + +--- +class: ircam + +# Communautés + +.pull-left[ + +### History of Python + + + +https://www.youtube.com/embed/cNBtDstOTmA + +] + +.pull-right[ + +### Exemples de développement collaboratif + +- Linux & co +- Debian & co +- Wikipedia +- https://www.lafabriquedelaloi.fr/ +- https://github.com/steeve/france.code-civil +] + +--- +class: ircam + +# Exemples de solutions libres et open source + +- [Mozilla](https://www.mozilla.org/fr/firefox/new/) +- [Thunderbird](https://www.thunderbird.net/fr/) +- [LibreOffice](https://fr.libreoffice.org/) +- [NextCloud](https://nextcloud.com/) +- [Jitsi](https://meet.jit.si/) +- [PeerTube](https://joinpeertube.org/fr_FR/) +- [Framasoft](https://framasoft.org/fr/) + +## Modèles économiques + +- production participative +- services payant +- double licence + +--- +class: ircam + +# Innovation Ouverte + +- modes d'innovation fondés sur le partage, la collaboration (entre parties prenantes) +- favorise les approches alternatives éthiques ou solidaires +- consortiums et groupes d'intérêt collectif +- Exemples de projets + - Wikipedia + - [OpenStreepMap](https://www.openstreetmap.org/) + - KickStarter + - [EchoPen](http://www.echopen.org/) +- Open data + + +--- +class: ircam + +# Blockchains + +Une (ou un) blockchain, ou chaîne de blocs, est une technologie de stockage et de transmission d'informations sans organe de contrôle (Wikipedia) + +Objectifs : + +- décentraliser le stockage d'information +- sécuriser et pérenniser les échanges +- passer outre le recours à un tiers de confiance et à une autorité centrale + + +## Applications + +- [BitCoin](https://bitcoin.org/fr/) +- Ethereum +- Contrats intelligents (smart contract) +- Ballotchain +- ... + +--- +class: ircam + +# Hackers + +## Valeurs + +- autonomie du travail +- créativité technique +- libre circulation des informations + +## Hacking != piratage : détournement + +--- +class: ircam + +# Actualités + +- Facebook et les petits marchands +- Amazon et les livraisons de biens +- Spotify et les artistes émergents +- Zoom et les universités + + +--- +class: ircam + +# Conclusion + +## la production en licence libre permet de + +- sécuriser les droits d'auteurs (copyleft) +- contextualiser l'application des règles juridiques par rapport aux usages +- favoriser la dissémination technique et scientifique +- relier la valeur des créations à l'échelle et à l'usage +- impliquer les communautés d'intérêt à la survie des ressources (ressourceries) +- protéger les libertés individuelles et les données privées +- faciliter le reproductibilité des expériences +- prioriser l'éthique + +--- +class: ircam + +# Perspectives + +## Stratégies + +- embrasser la diversité +- s'informer sur l'émergence de nouveaux systèmes et réseaux +- éviter les produits hypermarchés et les solutions fermées (ex: Apple, Amazon, Zoom) +- investir et participer à des projets ouverts +- limiter la privatisation et défendre les communs + +--- +class: center, middle, ircam, inverse + +# Merci ! + +###guillaume.pellerin@ircam.fr / @yomguy + +pour + + + +Licence Creative Commons
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International. diff --git a/src/slides/qcm.md b/src/slides/qcm.md new file mode 100644 index 0000000..3731de7 --- /dev/null +++ b/src/slides/qcm.md @@ -0,0 +1,37 @@ +QCM - Réseaux, open source et communs numériques + +1. Un logiciel libre est : + +- une application dédiée à la liberté +- un ensemble de codes juridiques librement téléchargeable +- un programme informatique qu'on peut lire, modifier et re-publier +- une application gratuite + +2. Debian est : + +- une copie du projet Linux +- une distribution universelle de logiciels GNU / Linux +- une histoire d'amour entre Deborah et Ian +- un réseau de rencontres + +3. Creative Commons est : + +- une licence pour les arts +- un logiciel de dessin collaboratif +- une licence libre de partage de publication +- un catalogue de ressources numériques + + +4. La capitalisation boursière d'Apple s'élève à : + +- 120 dollars +- 2 millions de dollars +- 2 milliards de dollars +- 2000 milliards de dollars + +5. Blockchain est : + +- une monnaie d'échange électronique +- un système de chaîne de blocs centralisée +- un système de chaîne de blocs décentralisé +- un groupe d'électro-punk diff --git a/src/slides/resume.md b/src/slides/resume.md new file mode 100644 index 0000000..9073bc7 --- /dev/null +++ b/src/slides/resume.md @@ -0,0 +1 @@ +Si l'avènement des réseaux sociaux privés et centralisés a simplifié les communications inter-personnelles à l'échelle mondiale, il a dans le même temps limité les capacités des communautés humaines à définir par elles-même des outils numériques garantissant leurs libertés et leur autonomie. De la même manière, si les brevets devaient permettre de sécuriser les revenus liés aux droits d'auteur, les limites posées à l'exploitation libre des inventions fonctionnent comme des freins majeurs à l'innovation ouverte et au développement partagé. Cette conférence propose un tour d'horizon des concepts techniques et juridiques, des architectures et des usages du Web qui mettent en évidence l'intérêt des logiciels libres, des communs et des modes de décentratlisation en faveur d'une écologie numérique (on entend par là la définition d'une stratégie collective favorable aux activités humaines par l'intermédiaire de l'informatique mais qui en réduise la surface polluante, l'entropie et le rapport signal/bruit). L'exposé s'appuie sur de nombreux exemples et des cas d'usage courants comme la bureautique collaborative, la messagerie mobile et la diffusion musicale. diff --git a/src/slides/timeside-2020.md b/src/slides/timeside-2020.md deleted file mode 100644 index cca8a74..0000000 --- a/src/slides/timeside-2020.md +++ /dev/null @@ -1,793 +0,0 @@ -class: center, middle, ircam, inverse - -# TimeSide - -##Python audio processing framework and server made for the web - -###Guillaume Pellerin, Antoine Grandry, Martin Desrumaux - -###POW (Web Team), Innovation and Reasearch Mean Dpt, IRCAM - - - - - - - - - - - - - -#### Séminaire STMS - 14/10/2020 - IRCAM - ---- -class: ircam, large-list - -#Outline - -- Introduction -- History -- Core -- Server -- Player -- Perspectives - - ---- -class: ircam, tight - -#TimeSide - -## Context - -- digization > big data > platforms > machine learning > users & listeners -- more data sets, databases, formats, algorithm versions, open DSP libraries & communities -- difficulties to port and scale some algorithms on production platforms (DSP at scale) -- computer science need human data, digital humanities needs computers -- collaborative workflows, citizen sciences through the web - -## Constraints - -- continuous development, continuous integration -- reproducible research -- sustainable digital archiving -- copyrighted data -- open source and standards -- format evolution and abstraction -- duplicate and version everything -- access everywhere - ---- -class: ircam - -#TimeSide - -##History - -- 2007 : [Telemeta](https://telemeta.org) developed for the sound archives of the CNRS / Musée de l'Homme -- 2010 : TimeSide separation as a autonomous library and then a framework with a plugin oriented architecture -- 2011 : Telemeta v1.0 released and http://archives.crem-cnrs.fr/ -- 2013 : DIADEMS project (ANR) : external plugins -- 2015 : TimeSide server and RESTFul API prototypes -- 2015 : KAMoulox (ANR), DaCaRyh (Labex) projects -- 2016 : WASABI (ANR), CREM-NYU-Parisson projects - ---- -class: ircam - -# Telemeta - CREM - -
- -.center[http://archives.crem-cnrs.fr/] - ---- -class: ircam - -# Telemeta - CREM - -
- - ---- -class: ircam, tight -#Telemeta / TimeSide integration - -.pull-left[ - - -###Collaborative multimedia asset management system - -MIR + Musicology + Archiving = MIRchiving - -### Ecosystem - -- 20 public partners -- 15 historical developers (6000 commits) -- 500 users (CREM) -- and thousands of developers! (open source community) -- mutualized development model - -] - -.pull-right[ -.right[![image](img/telemeta_screenshot_en_2.png)] -
- -https://github.com/Parisson/Telemeta -] - - ---- -class: ircam - -#WASABI project - -##Web Audio and SemAntics in the Browser for Indexation - -- 42 months from 2016 Q4 to april 2020 Q4 -- 750 k€ project granted by the french Research National Agency - -## Consortium - -- INRIA (I3S) -- IRCAM (APM, AnaSyn, POW) -- Parisson -- Deezer R&D -- Radio France - - ---- -class: ircam - -#WASABI project - -##Objectives - -- Propose some new methodologies to index music in the web and audio contexts -- Link semantics (linked metadata) + acoustics (MIR data) -- Develop and publish some open source web services through original APIs - -##Use cases - -- enhanced web music browsing -- computational musicology -- data journalism -- music learning through modular web interfaces (schools) -- lyrics synchronization - - ---- -class: ircam -# WASABI platform architecture - -.pic-container[ - -] - ---- -class: ircam -# WASABI platform ([link](https://wasabi.i3s.unice.fr/)) - -.pic-container[ - -] - - ---- -class: ircam -# WASABI platform ([link](https://wasabi.i3s.unice.fr/)) - -.pic-container[ - -] - ---- -class: center, middle, ircam, inverse - -# timeside.core - - ---- -class: ircam, tight - -#TimeSide - -## Python audio processing framework and server made for the web - -https://github.com/Parisson/TimeSide - -##Goals - -* **Process** audio fast and asynchronous with **Python**, -* **Decode** audio frames from *any* audio or video media format into **Numpy arrays**, -* **Analyze** audio content with some **state-of-the-art** audio feature extraction libraries like **Aubio, Essentia, Librosa, Yaafe, VAMP** and pure python processors -* **Visualize** audio data with various fancy waveforms, spectrograms and other cool graphers, -* **Transcode** audio data in various media formats and stream them through web apps, -* **Serialize** feature analysis data through various portable formats (XML, JSON, HDF5) -* **Playback** and **interact on demand** through a smart high-level **HTML5 extensible player**, -* **Index**, **tag** and **annotate** audio archives with **cultural and semantic metadata**, -* **Deploy** and **scale** your own audio processing engine flawlessly through any infrastructure with **Docker** - - ---- -class: ircam - -#TimeSide - -##Python audio processing framework and server made for the web - -https://github.com/Parisson/TimeSide - -##Use cases - -- Scaled audio processing (filtering, transcoding, machine learning, etc...) -- Audio process prototyping -- Audio dynamic visualization -- Automatic segmentation and labelling synchronized with audio events -- Collaborative annotation -- Audio web services - -##License: AGPL v2 - ---- -class: ircam - -#timeside.core - -.pull-left-30[ - -##API & architecture - -- streaming oriented core engine -- data persistence - -] - -.pull-right-70[ -.right[![image-wh-bg](img/TimeSide_pipe.svg)] -] - ---- -class: ircam - -.pull-left-30[ - -#timeside.core - -##API & architecture - -- streaming oriented core engine -- data persistence -- processing API -- plugin architecture -- namespace -] - -.pull-right-70[ -```python -class DummyAnalyzer(Analyzer): - """A dummy analyzer returning random samples from audio frames""" - implements(IAnalyzer) - - @interfacedoc - def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None): - super(DummyAnalyzer, self).setup(channels, samplerate, blocksize, totalframes) - self.values = numpy.array([0]) - - @staticmethod - @interfacedoc - def id(): - return "dummy" - - @staticmethod - @interfacedoc - def name(): - return "Dummy analyzer" - - @staticmethod - @interfacedoc - def unit(): - return "None" - - def process(self, frames, eod=False): - size = frames.size - if size: - index = numpy.random.randint(0, size, 1) - self.values = numpy.append(self.values, frames[index]) - return frames, eod - - def post_process(self): - result = self.new_result(data_mode='value', time_mode='global') - result.data_object.value = self.values - self.add_result(result) - -``` -] - - ---- -class: ircam - -# timeside.core - -.pull-left-30[ - -##API & architecture - -- streaming oriented core engine -- data persistence -- processing API -- plugin architecture -- namespace -- ~500 unit tests -- docker packaged (Linux, OSX, Windows) -] - -.pull-right-70[ -```python -import timeside.core -from timeside.core import get_processor -from timeside.core.tools.test_samples import samples - -wavfile = samples['sweep.wav'] -decoder = get_processor('file_decoder')(wavfile) -grapher = get_processor('spectrogram')() -analyzer = get_processor('level')() -encoder = get_processor('vorbis_encoder')('sweep.ogg') - -pipe = (decoder | grapher | analyzer | encoder) -pipe.run() - -grapher.render(output='spectrogram.png') -print('Level:', analyzer.results) -Level: {'level.max': AnalyzerResult(...), 'level.rms': AnalyzerResult(...)} -``` - -```bash -$ git clone --recursive https://github.com/Parisson/TimeSide.git -$ docker-compose run app python3 manage.py shell -$ docker-compose up -``` - -https://timeside.readthedocs.io/en/latest/index.html - -] - - ---- -class: ircam - -# timeside.core - -##Plugin examples - -.pull-left[ -- FileDecoder, ArrayDecoder, LiveDecoder, AubioDecoder -- VorbisEncoder, WavEncoder, Mp3Encoder, FlacEncoder, OpusEncoder, etc. -- WaveformAnalyzer, SpectrogramAnalyzer -- AubioTemporal, AubioPitch, etc. -- Yaafe wrapper (graph oriented) -- librosa (function oriented) -- VampPyHost -- Essentia bridge -- ... -] - -.pull-right[ -- Speech detection -- Music detection -- Singing voice detection -- Monophony / Polyphony -- Dissonance -- Timbre Toolbox - -https://github.com/DIADEMS/timeside-diadems - -] - - ---- -class: ircam - -# timeside.core - -## What's new? - -###0.9.4 > 1.0.0a (released yesterday! 🎉 ) - -* 674 commits, 7 contributors -* Python 2.7 to 3.7 -* Drop GStreamer for Aubio as default decoder and encoder -* Regroup all dependencies on pip requirements, drop conda -* Add `Provider` object -* Add Provider plugins `deezer-preview`, `deezer-complete` and `youtube` -* Add loggers -* Improve Docker packaging and image building - ---- -class: ircam, middle, center, inverse - -#timeside.server - ---- -class: ircam, tight -#timeside.server - -.pull-left[ -## RESTful API built on TimeSide -👉 https://sandbox.wasabi.telemeta.org/timeside/api/ - -### Use cases -- **Upload** audio tracks -- **Retrieve** audio tracks from remote providers -- **Stream** original or transcoded sources -- **Run** on-demand analysis -- **Customize** processors parameters -- **Collect** track's annotation to build audio corpora -- **Deliver** and share several types of results: - - transcoded audio - - serialized analysis as JSON or image -- **Export/import** an audio analysis dataset -] - -.pull-right[ - -] - ---- -class: ircam, tight -# timeside.server - -.pull-left[ -## RESTful API built on TimeSide -👉 https://sandbox.wasabi.telemeta.org/timeside/api/ - -### Server design -- Based on Django REST Framework (DRF) -- **Interoperability** between other servers or frontends and TimeSide instance and its data -- Object-relational **database** in order to store music tracks and processing results -- **Models**: define essential fields and behaviors of stored data -- **queue-worker architecture** enables to run tasks asynchronously - -] - -.pull-right[ - -] - ---- -class: ircam, tight -# timeside.server - -.pull-left[ -## RESTful API built on TimeSide -👉 https://sandbox.wasabi.telemeta.org/timeside/api/ - -### What's new on server? -- Add audio providers (Deezer, Youtube) -- Switch from MySQL to PostgreSQL -- Add a JWT authentication -- Make the API follow the OpenAPI specification -- Build a TypeScript SDK on the REST API -- Add several tools, views, models and serializers -- Improve server unit testing -- Fix few bugs -- Python, Django, DRF and Celery upgrades - -] - -.pull-right[ - -] - - ---- -class: ircam, tight -# timeside.server - -.pull-left[ -## RESTful API built on TimeSide -👉 https://sandbox.wasabi.telemeta.org/timeside/api/ - -### Models - -- `Item`: audio content and metadata (external id) -- `Provider`: provide audio from a given plateform -- `Selection`: list of items (corpus) -- `Processor`: plugins with version and default parameters -- `Preset`: processor and a set of parameters -- `Experience`: list of presets forming a pipe (reproductible) -- `Task`: an experience and a selection -- `Result`: transcoded audio or numerical outputs (hdf5 file) -- `Annotation`: label audio file on a given time or segment - -] - -.pull-right[ - -] - - ---- -class: ircam -#timeside.server - -## RESTful API documentation - -auto-generated thanks to ReDoc on top of OpenAPI 👉 https://sandbox.wasabi.telemeta.org/timeside/api/docs/ - - - - ---- -class: ircam -#timeside.server - -.pull-left[ -## Workflow examples in WASABI Project - -### With providers - -- Youtube - - based on `youtube-dl` - - must be adaptable to YouTube's changes -- Deezer 30 seconds long preview - - consuming Deezer's API - - find another solution to full contents - -] - - -.pull-right[ - - -] - ---- - -class: ircam -#timeside.server - -.pull-left[ -## Workflow examples in WASABI Project - -### With server - -POC of a webservice - -- delivers audio analysis to another remote server -- enhance its musical metadata with results - -] - - -.pull-right[ - - -] - ---- -class: ircam -#timeside.server - -.pull-left[ -## Workflow examples in WASABI Project - -### Import/export of a run on Deezer's infrastructure - -POC of a sharing system of an audio analysis datasets - -- easy deployment thanks to docker -- audio does not have to be shared - -] - - -.pull-right[ - - -] - - ---- -class: ircam -#timeside.server - -.pull-left[ -## Workflow examples in WASABI Project - -### With a frontend player - -POC of a JavaScript app that consume the Rest API - -- serialize data as JSON or image -- deliver analysis track (spectrogram, waveform) -- deliver or get annotations on audio track - - -] - - -.pull-right[ - - -] - - ---- -class: ircam, middle, center, inverse - -#timeside.player - - ---- - -class: ircam -#timeside.player - -.pull-left-30[ -## v1 (SoundManager2) - -- on demand processing -- simple marker annotation -- bitmap image cache only -] - -.pull-right-70[ -.right[![image](img/SOLO_DUOdetection.png)] -] - ---- -class: ircam - -.pull-left[ -#timeside.player - -##v2 - -###Constraints - -- Handling multiple hours audio files -- Multiple user annotations and analysis tracks -- Analysis rendered on the frontend -- Zooming -] - -.pull-right[ -.right[![image](img/ui-telemeta-grand-2_1.png)] -] - - ---- -class: ircam, tight - -#timeside.player - -##API SDK (client library) - -.pull-left[ -- Timeside API: 75 routes -- openapi-generator - - Typescript - - Fetch - - OpenAPI v3 Schemas -- Improve schema support on DRF (PR) - - Components - - Customize default names -- Glue code - - Authentication - - Initialization on Browser / Node -- Documentation -] - - -.pull-right[ -```yaml - /timeside/api/analysis/: - get: - operationId: listAnalysis - parameters: [] - responses: - '200': - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Analysis' -``` -] - - -- SDK: https://github.com/Ircam-Web/timeside-sdk-js -- Node: https://github.com/Ircam-Web/timeside-scripts - -Opportunity: `openapi-generator` also supports Python, C/C++, Ruby, Go, Rust etc... - ---- -class: ircam, tight - -#timeside.player - -##Player - -🔧 Technologies -- Vue (composition-api): DOM Manipulation, Data reactivity -- D3 (SVG): Render waveform / Analysis -- HTML5 Audio -- Web Animations API -- Resize Observer -- Github Action for continuous test & deployment (npm, gh-page) -- Github: https://github.com/ircam-web/timeside-player - -🚀 Usage -- Standalone app -- Web library - - React - - Vue - - HTML - -🌐 Tested on Firefox & Chrome - ---- -class: ircam, middle, center - -# Demo time! - ---- -class: ircam, tight - -#Perspectives - -## Audio processing web service (SaaS) - -.pull-left[ -###TODO - -- Clustering and orchestration (Kubernetes, prototype ready) -- Implementing Websocket, ServerEvent or Webhook to avoid task status polling -- Parameters -- Scales -- Split repositories : core / server -- Test some JS MIR librairies -- More documentation, notebooks and tests - -] - -.pull-right[ - -###Use cases - -- MIRchiving (Telemeta 2, CMS embedding, MNHN, UNAM, UNESCO) -- Digitization and media packaging services (VectraCom, VDM, Gecko) -- Metadata enhanced streaming services (Spotify, Deezer, SoundCloud, Netflix) - -###Dual licencing - -- open source community release of the core framework (AGPL) -- proprietary (entreprise) release (SATT Lutech / Parisson / IRCAM Amplify) -] - ---- -class: center, middle, ircam, inverse - -# Thank you and kudos to all contributors! - - - -http://wasabihome.i3s.unice.fr/ - -###guillaume.pellerin@ircam.fr / @yomguy - - - - - - - - - -