.. index:: Art & Design .. index:: A&D .. _art & design: .. _art-design: ============= Art & Design ============= | https://en.wikipedia.org/wiki/Art | https://en.wikipedia.org/wiki/Design .. index:: Media .. _media: Media ******************* https://en.wikipedia.org/wiki/Media * ``__ * https://en.wikipedia.org/wiki/List_of_artistic_media .. index:: Visual Composition .. index:: Composition (Visual) .. _visual composition: Visual Composition ******************* | ``__ * https://en.wikipedia.org/wiki/Rule_of_thirds * ``__ * https://en.wikipedia.org/wiki/Lead_room .. index:: Graphic Design .. _graphic design: Graphic Design **************** | https://en.wikipedia.org/wiki/Graphic_design Web Design ~~~~~~~~~~~ See: :ref:`Web Design ` .. index:: BMP .. _bmp: BMP ~~~~ | https://en.wikipedia.org/wiki/BMP_file_format | File Extension: ``.bmp`` .. index:: GIMP .. _gimp: GIMP ~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/GIMP | Homepage: http://www.gimp.org/ | Download: http://www.gimp.org/downloads/ | Source: http://www.gimp.org/source/ | Source: git git://git.gnome.org/gimp | Docs: http://www.gimp.org/docs/ | Docs: http://docs.gimp.org/2.8/en/ | Docs: http://wiki.gimp.org/wiki/Main_Page | Docs: http://wiki.gimp.org/wiki/Hacking:Developer_FAQ GIMP (GNU Image Manipulation Program) is an extensible :ref:`open source` raster image editor (:ref:`BMP`, :ref:`PNG`, :ref:`JPEG`, :ref:`GIF`, `ICO`, ..., GIMP ``.xcf``). * GIMP plugins are shared at http://registry.gimp.org/popular .. index:: GIF .. _gif: GIF ~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/GIF GIF is a file format for sequences of images ("animations"). GIFs appear to load quickly because there is no media player or codec initialization time, but are actually less eficient than compressed video (e.g. :ref:`H.264`) because GIFs are not compressed and contain every frame of the animation. Video codecs compress the changes between frames, in order to avoid basically GIF. * https://en.wikipedia.org/wiki/Hampster_Dance (1990s) ` * `__ * https://en.wikipedia.org/wiki/Dancing_baby (1990s) * https://en.wikipedia.org/wiki/Real_Ultimate_Power (2002; should've had GIFs) * https://en.wikipedia.org/wiki/Dramatic_Chipmunk (2007; YouTube :ref:`tube site `) * 2015: Google+, Twitter, Facebook add support for GIFs .. index:: ICO .. _ico: ICO ~~~~~ | Wikipedia: ``__ ICO is a computer graphics file format for icons. * ICO files store multiple resolutions in one file. * :ref:`GIMP` can work with ICO files .. index:: Inkscape .. _inkscape: Inkscape ~~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Inkscape | Homepage: https://inkscape.org/en/ | Source: https://launchpad.net/~inkscape.dev | Source: bzr lp:inkscape | Download: https://inkscape.org/en/download/ | Docs: https://inkscape.org/en/learn/ | Docs: https://inkscape.org/en/learn/books/ | Docs: https://inkscape.org/en/doc/keys091.html | Docs: https://inkscape.org/en/doc/inkscape-man.html Inkscape is an :ref:`open source` vector graphics (:ref:`SVG` :ref:`XML`) editor. :ref:`SVG` graphics can scale to very large and very small resolutions (e.g. 1080P, 4K, 8K, HD, 1920px, poster-size) and remain smooth. * https://en.wikipedia.org/wiki/Scalable_Vector_Graphics * http://wiki.inkscape.org/wiki/index.php/Extension_repository .. index:: JPEG .. _jpeg: JPEG ~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/JPEG | File Extension: ``.jpg``, ``.jpeg`` .. index:: PNG .. _png: PNG ~~~~ | Wikipedia: https://en.wikipedia.org/wiki/PNG | File Extension: ``.png``, ``.png`` .. index:: SVG .. _svg: SVG ~~~~ | Wikipedia: https://en.wikipedia.org/wiki/SVG | File Extension: ``.svg`` .. index:: 3D Modeling .. _3d modeling: 3D Modeling ************* | https://en.wikipedia.org/wiki/3D_modeling | https://en.wikipedia.org/wiki/3D_rendering | https://en.wikipedia.org/wiki/3D_computer_graphics * https://en.wikipedia.org/wiki/3D_computer_graphics_software .. index:: Blender .. _blender: Blender ~~~~~~~~~ | Wikipedia: ``__ | Homepage: https://blender.org/ | Source: https://developer.blender.org/diffusion/ | Source: git git://git.blender.org/blender.git | Download: https://www.blender.org/download/ | Docs: https://www.blender.org/manual/ | Docs: https://www.blender.org/api/250PythonDoc/ Blender is an :ref:`open source` 3D computer graphics software for movies, apps, and games written in :ref:`C`, :ref:`C++`, and :ref:`Python`. * Blender has a scene graph over time *t* * Blender has multi-camera tracking * Blender has a :ref:`Python` API .. index:: NURBS .. _nurbs: NURBS ~~~~~~~ | ``__ NURBS ("Non-rational Uniform B-Splines") are scale-invariant n-dimensional models. * NURBS curves are sort of like :ref:`SVG` for :ref:`3D modeling`: they scale losslessly from the very small to the very large. .. index:: OpenGL .. _opengl: OpenGL ~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/OpenGL OpenGL is an API for 2D and 3D graphics on any platform which is implemented by all modern GPUs. .. index:: Rhinocerous 3D .. _rhinocerous 3d: Rhinocerous 3D ~~~~~~~~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Rhinoceros_3D | Homepage: http://www.rhino3d.com/ Rhinocerous 3D is a commercial :ref:`NURBS` :ref:`3d modeling` tool for :ref:`Windows` and :ref:`OSX`. .. index:: SketchUp .. _sketchup: SketchUp ~~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/SketchUp | Homepage: http://www.sketchup.com/ | Download: http://www.sketchup.com/download | Docs: http://www.sketchup.com/learn * SketchUp extensions can be shared at http://extensions.sketchup.com/ .. index:: WebGL .. _webgl: WebGL ~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/WebGL | Homepage: https://www.khronos.org/webgl/ | Standard: https://www.khronos.org/registry/webgl/specs/1.0/ | Docs: https://www.khronos.org/developers/reference-cards/ | Docs: https://www.khronos.org/webgl/wiki/ | Docs: http://caniuse.com/#search=webgl WebGL allows :ref:`Web Browsers ` to run :ref:`OpenGL` programs with :ref:`HTML5` and :ref:`Javascript`. * Lists of WebGL implementations: https://www.khronos.org/webgl/wiki/User_Contributions https://en.wikipedia.org/wiki/Category:WebGL * WebGL Chrome Experiments: https://www.chromeexperiments.com/webgl See: :ref:`data visualization tools` .. index:: Computer-mediated Reality .. index:: Mediated Reality .. _mediated reality: Mediated Reality ****************** | Wikipedia: https://en.wikipedia.org/wiki/Computer-mediated_reality * https://en.wikipedia.org/wiki/Computer-mediated_reality#/media/File:Viraugmixmodmediated_reality.png .. index:: Mixed Reality .. _mixed reality: Mixed Reality ~~~~~~~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Mixed_reality .. index:: Augmented Reality .. _augmented reality: ------------------- Augmented Reality ------------------- | Wikipedia: https://en.wikipedia.org/wiki/Augmented_reality .. index:: Virtual Reality .. _vr: .. _virtual reality: Virtual Reality ================= | https://en.wikipedia.org/wiki/Virtual_reality .. index:: Mediated Reality Mediums .. _mediated reality mediums: Mediated reality mediums ~~~~~~~~~~~~~~~~~~~~~~~~~ .. index:: Google Cardboard .. _google cardboard: ------------------ Google Cardboard ------------------ | Wikipedia: https://en.wikipedia.org/wiki/Google_Cardboard | Homepage: https://www.google.com/get/cardboard/ * :ref:`Android` Smartphone + Google Cardboard viewer * https://www.google.com/get/cardboard/get-cardboard/ .. index:: Google Glass .. _google glass: ------------- Google Glass ------------- | Wikipedia: https://en.wikipedia.org/wiki/Google_Glass | Homepage: https://www.google.com/glass/ * Glasses frame + projective .. index:: HTC Vive .. _htc vive: --------- HTC Vive --------- | Wikipedia: https://en.wikipedia.org/wiki/HTC_Vive | Homepage: https://www.htcvive.com/us/ * Valve :ref:`Steam` VR .. index:: Oculus VR .. _oculus vr: ------------ Oculus VR ------------ | Wikipedia: https://en.wikipedia.org/wiki/Oculus_VR | Homepage: https://www.oculus.com/ .. index:: Oculus Rift .. _oculus rift: Oculus Rift ============ | Wikipedia: https://en.wikipedia.org/wiki/Oculus_Rift | Homepage: https://www.oculus.com/en-us/rift/ .. index:: Oculus Gear VR .. _oculus gear vr: Samsung Gear VR ================= | Wikipedia: https://en.wikipedia.org/wiki/Samsung_Gear_VR | Homepage: https://www.oculus.com/en-us/gear-vr/ * Samsung Galaxy :ref:`Android` Smartphone + Samsung Ocular Gear VR Headset .. index:: Windows Holographic .. _windows holographic: --------------------- Windows Holographic --------------------- | Wikipedia: https://en.wikipedia.org/wiki/Windows_Holographic | Docs: https://dev.windows.com/en-us/holographic | Docs: https://dev.windows.com/en-us/holographic/documentation * :ref:`Windows` 10 .. index:: Microsoft HoloLens .. _microsoft hololens: Microsoft HoloLens ===================== | Wikipedia: https://en.wikipedia.org/wiki/Microsoft_HoloLens | Homepage: https://www.microsoft.com/microsoft-hololens/en-us | Docs: https://www.microsoft.com/microsoft-hololens/en-us/developers .. index:: Photography .. _photography: Photography ************ | https://en.wikipedia.org/wiki/Photography | https://en.wikipedia.org/wiki/Outline_of_photography | https://en.wikipedia.org/wiki/Digital_photography | https://en.wikipedia.org/wiki/Photography_and_the_law | https://en.wikipedia.org/wiki/Digital_darkroom * https://en.wikipedia.org/wiki/Category:Photo_software * https://en.wikipedia.org/wiki/Category:Free_photo_software * https://en.wikipedia.org/wiki/Image_editing See: :ref:`Visual Composition` .. index:: Videography .. _videography: Videography ************ | https://en.wikipedia.org/wiki/Videography | https://en.wikipedia.org/wiki/Cinematography See: :ref:`Visual Composition` .. index:: Video Production .. index:: Video Editing .. index:: NLES .. index:: Post-production .. _video production: Video Production **************** | https://en.wikipedia.org/wiki/Video_production | https://en.wikipedia.org/wiki/Video_editing | https://en.wikipedia.org/wiki/Non-linear_editing_system | https://en.wikipedia.org/wiki/Post-production * https://en.wikipedia.org/wiki/Video_editing_software * https://en.wikipedia.org/wiki/Comparison_of_video_editing_software * https://en.wikipedia.org/wiki/Category:Video_editing_software * https://en.wikipedia.org/wiki/Category:Free_video_software See: :ref:`visual composition`, :ref:`screen captures` .. index:: Cinelerra .. _cinelerra: Cinelerra ~~~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Cinelerra | Homepage: http://cinelerra.org/ | Source: git git://git.cinelerra-cv.org/CinelerraCV.git | Docs: http://cinelerra-cv.org/docs.php | Docs: http://cinelerra-cv.org/docs/cinelerra_cv_manual_en.html .. index:: CinePaint .. _cinepaint: CinePaint ~~~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/CinePaint | Homepage: http://www.cinepaint.org/ | Homepage: http://sourceforge.net/projects/cinepaint/ | Source: http://sourceforge.net/p/cinepaint/code/ CinePaint is an :ref:`open source` tool for hand-painting video frames. .. index:: FFmpeg .. _ffmpeg: FFmpeg ~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/FFmpeg | Homepage: https://www.ffmpeg.org/ | Download: https://www.ffmpeg.org/download.html | Source: git git://source.ffmpeg.org/ffmpeg.git | Docs: https://www.ffmpeg.org/documentation.html | Docs: http://www.itbroadcastanddigitalcinema.com/ffmpeg_howto.html FFmpeg is an audio/video transcoding library with support for very many codecs and a great command line interface (``ffmpeg``). * FFmpeg can be used to rescale audio/video to a different resolution * FFmpeg can be used to (re-)encode audio/video .. index:: FLV .. _flv: FLV ~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Flash_Video FLV ("Flash Video") is a media file container format for sharing media; especially over :ref:`HTTP`. * FLV can be downloaded in segments (is "seekable") * FLV contains :ref:`MPEG`-4 encoded content * FLV supports :ref:`H.264` :ref:`MPEG`-4 video * Most :ref:`Tube Sites` (natively) support FLV .. index:: HandBrake .. _handbrake: HandBrake ~~~~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/HandBrake | Homepage: https://handbrake.fr/ | Download: https://handbrake.fr/downloads.php HandBrake is an offline batch GUI audio/video transcoding tool. * HandBrake can use :ref:`FFmpeg` for transcoding * HandBrake helps with rescaling a video for e.g. mobile devices with limited bandwidth ahead-of-time .. index:: H.264 .. _h.264: H.264 ~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC H.264 (or :ref:`MPEG`-4 AVC) is a widely implemented video compression codec. * Blu-ray discs are encoded with H.264 * HDTV, digital cable, and digital satellite are encoded with H.264 * Hulu, iTunes, Vimeo, VEVO, and YouTube all encode video with H.264 .. note:: Some mobile devices include hardware support for H.264 decoding, which can save CPU time and battery, resulting in smoother playback. .. index:: Lightworks .. _lightworks: Lightworks ~~~~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Lightworks | Homepage: http://www.lwks.com/ | Download: http://www.lwks.com/index.php?option=com_lwks&view=download&Itemid=206 | Source: | Docs: http://www.lwks.com/index.php?option=com_lwks&view=download&Itemid=206&tab=4 | Docs: http://www.lwks.com/index.php?option=com_content&view=article&id=162&Itemid=246 Lightworks is a professional video editing software tool. * Lightworks is included in :ref:`DreamStudio` .. index:: LiVES .. _lives: LiVES ~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/LiVES | Homepage: http://lives-video.com/ | Download: http://lives-video.com/index.php?do=downloads | Download: http://lives-video.com/index.php?do=addons | Project: http://sourceforge.net/projects/lives/ | Source: svn http://svn.code.sf.net/p/lives/code/trunk | Docs: http://lives-video.com/index.php?do=documentation | Docs: http://lives-video.com/manual/LiVES_manual.html | Docs: http://lives-video.com/index.php?do=tutorial-wiki | Docs: http://lives-video.com/doxygen/LiVES/files.html | Video: http://sourceforge.net/projects/lives/ LiVES is an :ref:`open source` video editing and realtime :ref:`VJing ` software tool written in :ref:`C`, :ref:`Perl`, and :ref:`Python`. * LiVES has full undo and redo ("nondestructive editing") * LiVES has strong native support for networked streaming * LiVES has support for :ref:`LADSPA`, :ref:`JACK`, :ref:`MIDI` .. index:: MPEG .. _mpeg: MPEG ~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Moving_Picture_Experts_Group | Homepage: http://mpeg.chiariglione.org/ MPEG is a standards body formed by :ref:`ISO` and :ref:`IEC`. .. _mpeg-1: .. _mpeg-2: .. _mpeg-3: .. _mpeg-4: .. _mp4: * https://en.wikipedia.org/wiki/MPEG-1 (MP3) * https://en.wikipedia.org/wiki/MPEG-2 (MP3, DVD, Digital Cable/Satellite) * https://en.wikipedia.org/wiki/MPEG-3 * https://en.wikipedia.org/wiki/MPEG-4 * https://en.wikipedia.org/wiki/MPEG-4_Part_14 (MP4, ``.mp4``, ``.m4a``) * https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC (:ref:`H.264`) * :ref:`MPEG-DASH` (Adaptive bitrate streaming) .. index:: Screenwriting .. _screenwriting: Screenwriting ************** | https://en.wikipedia.org/wiki/Screenwriting * ``__ * [ ] fountainio, vim fountainio See: :ref:`Small Business > Concept ` .. index:: Fountain.io .. _fountain.io: Fountain.io ~~~~~~~~~~~~~ | Homepage: http://fountain.io/ | Source: git https://github.com/nyousefi/Fountain | Docs: http://fountain.io/faq | Docs: http://fountain.io/syntax | Docs: http://fountain.io/howto | Docs: http://fountain.io/apps Fountain.io is a Lightweight Markup Language similar to :ref:`Markdown` with extensions for writing formatted screenplays with e.g. Scene Headings, Characters, Action (scene description; cues), Dialogue. * http://fountain.io/apps lists application plugins and integrations .. index:: Songwriting .. _songwriting: Songwriting ************* | https://en.wikipedia.org/wiki/Songwriter | https://en.wikipedia.org/wiki/Lyrics .. index:: Poetry .. _poetry: Poetry ~~~~~~~ | https://en.wikipedia.org/wiki/Poetry * ``__ * ``__ * https://en.wikipedia.org/wiki/Consonance_and_dissonance .. index:: Scorewriting .. _scorewriting: Scorewriting *************** | https://en.wikipedia.org/wiki/Scorewriter | https://en.wikipedia.org/wiki/Sheet_music | https://en.wikipedia.org/wiki/Comparison_of_scorewriters .. index:: LilyPond .. _lilypond: LilyPond ~~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/LilyPond | Homepage: http://www.lilypond.org/ | Download: http://www.lilypond.org/download.html | Source: http://download.linuxaudio.org/lilypond/source/?C=N;O=D | Source: git http://git.savannah.gnu.org/r/lilypond.git | Docs: http://www.lilypond.org/manuals.html | Docs: http://www.lilypond.org/doc/v2.19/Documentation/contributor-big-page.html LilyPond is an :ref:`open source` software tool for writing and engraving musical score compositions with support for :ref:`MIDI`, :ref:`MusicXML` written in :ref:`C`, Scheme, and :ref:`Python` .. index:: MuseScore .. _musescore: MuseScore ~~~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/MuseScore | Homepage: https://musescore.org/ | Download: https://musescore.org/en/download | Source: git https://github.com/musescore/MuseScore | Docs: https://musescore.org/en/handbook | Docs: https://musescore.org/en/development MuseScore is an :ref:`open source` software tool for writing and engraving musical score compositions with support for :ref:`MIDI`, :ref:`MusicXML` written in :ref:`C++` and :ref:`Qt`. * MuseScore can read/write to :ref:`MusicXML`, :ref:`MIDI`, GuitarPro * MuseScore can write to PDF, SVG, PNG, PostScript * MuseScore can save audio to WAV, FLAC, MP3, OGG * There are MuseScore apps for :ref:`iOS` and :ref:`Android` * MuseScore.com hosts sheet music: https://musescore.com/sheetmusic * https://musescore.com/sheetmusic?instruments=7 (#guitar) .. index:: Musical Notation .. _musical notation: Musical Notation ~~~~~~~~~~~~~~~~~ | https://en.wikipedia.org/wiki/Musical_notation | https://en.wikipedia.org/wiki/List_of_musical_symbols | https://simple.wikipedia.org/wiki/Sheet_music | https://en.wikipedia.org/wiki/Sheet_music | https://en.wikipedia.org/wiki/Lead_sheet | https://en.wikipedia.org/wiki/Chord_chart .. index:: MusicXML .. _musicxml: ---------- MusicXML ---------- | Wikipedia: https://en.wikipedia.org/wiki/MusicXML | File Extension: ``.xml``, ``.mxl`` | Homepage: http://www.musicxml.com/ | Standard: http://www.musicxml.com/for-developers/ | Standard: http://www.musicxml.com/for-developers/musicxml-dtd/ | Standard: http://www.musicxml.com/for-developers/musicxml-xsd/ MusicXML is an :ref:`XML` standard for :ref:`musical notation`. * :ref:`MIDI` can be represented in :ref:`MusicXML`. .. index:: Tablature .. _tablature: ---------- Tablature ---------- | Wikipedia: https://en.wikipedia.org/wiki/Tablature Tablature is :ref:`Musical Notation` mapped onto instrument positions (e.g. guitar frets) and spaced. There are many tab formats; ASCII chord diagrams being the most classic. .. index:: Rosegarden .. _rosegarden: Rosegarden ~~~~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Rosegarden | Homepage: http://www.rosegardenmusic.com/ Rosegarden is an :ref:`open source` digital audio workstation for score composition. - :ref:`MIDI` and Hydrogen file import - :ref:`MIDI`, :ref:`Csound`, :ref:`LilyPond` and :ref:`MusicXML` file export (including PostScript and PDF output file generation of score) .. index:: TablEdit .. _tabledit: TablEdit ~~~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/TablEdit_Tablature_Editor | Homepage: http://www.tabledit.com/ | Download: http://www.tabledit.com/download/ | Docs: http://el-kay.com/tabledit/ | Docs: http://www.tabledit.com/faq/ | Videos: https://www.youtube.com/user/TablatureEditor TablEdit is a musical :ref:`tablature` ("tab") :ref:`musical composition` tool with support for :ref:`MusicXML`, :ref:`LilyPond`, :ref:`MIDI`. .. index:: Musical Composition .. _musical composition: Musical Composition ******************** | https://en.wikipedia.org/wiki/Musical_composition | https://en.wikipedia.org/wiki/Orchestration | https://en.wikipedia.org/wiki/Composer | https://en.wikipedia.org/wiki/Music_theory | ``__ .. index:: Audio Synthesis .. _audio synthesis: Audio Synthesis ~~~~~~~~~~~~~~~~~ | https://en.wikipedia.org/wiki/Audio_synthesis | https://en.wikipedia.org/wiki/Synthesizer | https://en.wikipedia.org/wiki/Synth https://en.wikipedia.org/wiki/Comparison_of_audio_synthesis_environments * https://en.wikipedia.org/wiki/Electronic_musical_instrument * https://en.wikipedia.org/wiki/Musical_keyboard * https://en.wikipedia.org/wiki/Electric_piano * https://en.wikipedia.org/wiki/Digital_piano * https://en.wikipedia.org/wiki/Effects_unit ("effects pedal") .. index:: ChucK .. _chuck: ChucK ~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/ChucK | Homepage: http://chuck.cs.princeton.edu/ | Homepage: http://chuck.stanford.edu/ | Download: http://chuck.cs.princeton.edu/release/ | Source: http://chuck.cs.princeton.edu/release/files/ | Standard: http://chuck.cs.princeton.edu/doc/language/ | Docs: http://chuck.cs.princeton.edu/doc/ | Docs: http://chuck.cs.princeton.edu/doc/program/ | Docs: http://chuck.cs.princeton.edu/doc/program/otfp.html Chuck is an :ref:`open source` realtime, concurrent :ref:`musical composition` :ref:`audio synthesis` programming language. * ChucK supports "On the Fly Programming": code and loops can be changed while the ChucK program is running * ChucK supports :ref:`JACK` * ChucK works with :ref:`STK` Synthesis Toolkit .. index:: Csound .. _csound: Csound ~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Csound | Homepage: http://csound.github.io/ | Project: http://sourceforge.net/projects/csound/ | Source: git https://github.com/csound/csound | Docs: http://csound.github.io/documentation.html | Docs: http://csound.github.io/docs/manual/index.html | Docs: http://booki.flossmanuals.net/csound/introduction/ Csound is an :ref:`open source` :ref:`musical composition` :ref:`audio synthesis` programming library API. * Csound works on :ref:`Linux`, :ref:`OSX`, :ref:`Windows`, :ref:`Browsers` (emscripten (:ref:`Javascript`)), Chrome Native Client (PNaCl), :ref:`iOS`, and :ref:`Android` * Csound supports :ref:`MIDI` * Csound ships with the OLPC XO laptops .. epigraph:: Csound is simultaneously both 'old school' and 'new school'. --- http://booki.flossmanuals.net/csound/introduction/ .. index:: Hookpad .. _hookpad: Hookpad ~~~~~~~~ | Homepage: http://www.hooktheory.com/hookpad/ | Docs: http://www.hooktheory.com/hookpad/docs | Docs: http://www.hooktheory.com/hookpad/shortcuts Hookpad is a web-based tool for :ref:`Musical Composition` * http://www.hooktheory.com/hookpad/new * http://www.hooktheory.com/education * *Hooktheory I: Music Theory* (Book) http://www.hooktheory.com/music-theory-for-songwriting .. index:: Hydrogen .. _hydrogen: Hydrogen ~~~~~~~~~ | Wikipedia: ``__ | Homepage: http://hydrogen-music.org/hcms/ | Source: git https://github.com/hydrogen-music/hydrogen | Docs: http://hydrogen-music.org/hcms/node/393 | Docs: http://hydrogen-music.org/hcms/node/5 Hydrogen is an :ref:`open source` drum machine software with support for :ref:`JACK`, ALSA, :ref:`MIDI`, and drumkits. * Hydogen is included in :ref:`DreamStudio`. .. index:: MIDI .. _midi: MIDI ~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/MIDI | https://en.wikipedia.org/wiki/MIDI_controller | https://en.wikipedia.org/wiki/DJ_digital_controller .. index:: STK .. _stk: STK ~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Synthesis_Toolkit | Homepage: https://ccrma.stanford.edu/software/stk/ | Download: https://ccrma.stanford.edu/software/stk/download.html | Source: git https://github.com/thestk/stk/ | Docs: https://ccrma.stanford.edu/software/stk/information.html | Docs: https://ccrma.stanford.edu/software/stk/classes.html | Docs: https://ccrma.stanford.edu/software/stk/tutorial.html STK is a realtime audio synthesis :ref:`C++` library API for simulating physical and synthesized sounds. * :ref:`ChucK` works with :ref:`STK` .. index:: VST .. index:: Virtual Studio Technology .. _vst: VST ~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Virtual_Studio_Technology | Homepage: VST is a reusable audio transform API for :ref:`Audio Synthesis` and :ref:`Sound Production` tools. * A VST plugin is a :ref:`packaged ` module of instruments, effects, and/or :ref:`MIDI` code * A VST host is a program which can run VST plugins * :ref:`Ardour` * :ref:`Audacity` * ACID, Adobe Premiere, Cakewalk, FL Studio, Sound Forge, Vegas .. index:: Sound Production .. _sound production: Sound Production ***************** | https://en.wikipedia.org/wiki/Sound | https://en.wikipedia.org/wiki/Sound_recording_and_reproduction | https://en.wikipedia.org/wiki/Audio_engineer * https://en.wikipedia.org/wiki/Mixing_console https://en.wikipedia.org/wiki/Comparison_of_free_software_for_audio https://en.wikipedia.org/wiki/List_of_Linux_audio_software https://en.wikipedia.org/wiki/Comparison_of_digital_audio_editors https://en.wikipedia.org/wiki/Recording_studio .. index:: Acoustical Engineering .. _acoustical engineering: Acoustical Engineering ~~~~~~~~~~~~~~~~~~~~~~~~ | https://en.wikipedia.org/wiki/Acoustical_engineering .. index:: DJ .. _dj: DJ ~~~ | https://en.wikipedia.org/wiki/Disc_jockey .. index:: AAC .. _aac: AAC ~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Advanced_Audio_Coding AAC is an audio compression standard designed to replace :ref:`MP3`. AAC is a component of :ref:`MPEG`-4 audio ("MP4"). * AAC is a *lossy* audio compression algorithm * iTunes files are in AAC format (MPEG-4 Audio, MP4, M4a) .. index:: Ardour .. _ardour: Ardour ~~~~~~~ | Wikipedia: ``__ | Homepage: https://ardour.org/ | Ardour is an :ref:`open source` Digital Audio Workstation (DAW) for multi-track recording, editing, and mixing. * Ardour supports :ref:`JACK`, :ref:`MIDI` sequencing (drum machines), AudioUnit, :ref:`LADSPA`, LV2, Mackie control protocol, OSC * Ardour can sync one video in the timeline. * Ardour integrates with external control surfaces (soundboard, mixing console, audio production surface). * Ardour is included in :ref:`Ubuntu Studio`. .. index:: Audacity .. _audacity: Audacity ~~~~~~~~~~ | Wikipedia: ``__ | Homepage: http://audacityteam.org/ | Download: http://audacityteam.org/download/ | Download: http://audacityteam.org/download/plugins | Source: git https://github.com/audacity/audacity | Docs: http://audacityteam.org/help/documentation | Docs: http://wiki.audacityteam.org/wiki/Audacity_Wiki_Home_Page | Docs: http://wiki.audacityteam.org/wiki/Plugins | Docs: http://wiki.audacityteam.org/wiki/Creating_your_own_Plug-in | Docs: http://wiki.audacityteam.org/wiki/Category:Tutorial Audacity is an :ref:`open source` sound recording and editing software tool. * Audacity supports LADSPA, and LV2 * Audacity is included in :ref:`DreamStudio`, :ref:`Ubuntu Studio` .. index:: FLAC .. _flac: FLAC ~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/FLAC | Homepage: https://xiph.org/flac/ | Download: https://xiph.org/flac/download.html | Source: git https://git.xiph.org/flac.git | Docs: https://xiph.org/flac/documentation.html FLAC is an :ref:`open source` lossless audio codec. * :ref:`FLAC` files are, on average, like 10x (TODO ?) the file size of e.g. :ref:`MP3`, because they encode the full spectrum. .. index:: JACK .. _jack: JACK ~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/JACK_Audio_Connection_Kit | Homepage: http://jackaudio.org/ | Download: http://jackaudio.org/downloads/ | Docs: https://github.com/jackaudio/jackaudio.github.com/wiki | Docs: http://jackaudio.org/api/ JACK is a low-latency ("realtime") sound server for :ref:`POSIX` operating sytems (:ref:`Linux`, :ref:`OSX`, :ref:`Windows`) written in :ref:`C` and :ref:`C++`. * List of JACK-supporting applications: http://jackaudio.org/applications/ * :ref:`Ardour` * :ref:`Audacity` * :ref:`LiVES` * :ref:`Mixxx` * :ref:`Blender` * :ref:`VLC` .. index:: LADSPA .. _ladspa: LADSPA ~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/LADSPA | Homepage: http://www.ladspa.org/ LADSPA ("Linux Audio Developer's Simple Plugin API") is an :ref:`open source` standard for audio filters and effects written in :ref:`C`. * :ref:`Ardour`, :ref:`Audacity`, :ref:`LiVES`, and :ref:`Rosegarden` all support LADSPA .. index:: Mixxx .. _mixxx: Mixxx ~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Mixxx | Homepage: http://mixxx.org/ | Source: git https://github.com/mixxxdj/mixxx | Download: http://mixxx.org/download/ | Download: http://mixxx.org/download/#stable | Docs: http://mixxx.org/manual/latest/ | Docs: http://mixxx.org/wiki/doku.php/ | Docs: http://mixxx.org/wiki/doku.php/hardware_compatibility#sound_cards | Docs: http://mixxx.org/wiki/doku.php/hardware_compatibility#controller_mappings Mixxx is an :ref:`open source` sound recording, mixing, editing, beatmatching, and production software tool with :ref:`MIDI` and HID :ref:`DJ` controller support (for use with keyboards, analog turntables, CD players) written in :ref:`C++`, :ref:`Qt`, :ref:`XML`, and :ref:`Javascript`. * Mixx has dual and quad decks with scratchable waveforms and beatmatching indicators ("cue points"), time stretching, beat looping, EQ, crossfading * Mixx supports timecoded vinyl and CDs .. index:: MP3 .. _mp3: MP3 ~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/MP3 MP3 refers to one of two :ref:`MPEG` audio codecs. * MP3 can be around a tenth the size of a raw :ref:`WAV` file * MP3 can be CBR ("Constant Bitrate") or VBR ("Variable Bitrate") depending on the encoding parameters * MP3 is a *lossy* audio compression algorithm * Amazon Music (Amazon MP3) files are in MP3 format See also: :ref:`AAC`, FLAC, Ogg, SHN .. index:: PulseAudio .. _pulseaudio: PulseAudio ~~~~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/PulseAudio | Homepage: http://www.freedesktop.org/wiki/Software/PulseAudio/ | Source: git git://anongit.freedesktop.org/pulseaudio/pulseaudio | Source: http://cgit.freedesktop.org/pulseaudio/pulseaudio/ | Download: http://www.freedesktop.org/wiki/Software/PulseAudio/Download/ | Docs: http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/ | Docs: http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/ | Docs: http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/ | Docs: http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Network/ | Docs: http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/ | Docs: http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/ | Docs: http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/ModuleAPI/ | Docs: http://freedesktop.org/software/pulseaudio/doxygen/ | Docs: https://wiki.ubuntu.com/PulseAudio | Docs: https://wiki.archlinux.org/index.php/PulseAudio | Docs: https://wiki.debian.org/PulseAudio | Docs: https://wiki.gentoo.org/wiki/PulseAudio | Docs: http://mpd.wikia.com/wiki/PulseAudio PulseAudio is an :ref:`open source` realtime sound server. * How can I use PulseAudio to stream music from my main PC to my LAN with multiple PCs with speakers? * How can I use PulseAudio to share a single LINE-IN/MIC jack on the entire LAN? * How can I use PulseAudio as an RTP based N:N multicast conferencing solution for the LAN? * PulseAudio runs on FreeBSD, NetBSD, OpenBSD, :ref:`Linux`, Solaris, :ref:`OSX`, and :ref:`Windows` * There are many PulseAudio modules for the PulseAudio ModuleAPI http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/ * module-native-protocol-unix, module-native-protocol-tcp -- PulseAudio native protocol * module-rtp-send, module-rtp-recv -- RTP * module-raop-discover, module-raop-sink -- AirPlay * module-jack-sink, module-jack-source, module-jackdbus-detect -- :ref:`JACK` * module-loopback, module-echo-cancel, module-equalizer-sink, module-ladspa-sink :ref:`LADSPA`, module-switch-on-connect, module-rescue-streams, module-device-restore, module-stream-restore, module-card-restore -- sink, source, filters * module-pipe-sink, module-pipe-source, module-always-sink, module-null-sink * module-zeroconf-publish, module-zeroconf-discover -- ZeroConf / Bonjour peer discovery (local multicast LAN/WLAN segment) * module-bluetooth-discover, module-bluetooth-policy, module-bluetooth-proximity -- Bluetooth A2DP audio peer discovery * module-lirc -- Infrared remote volume control * module-cli -- ``pactl`` commandline interface * There are a number of volume control and mixer apps for PulseAudio. * ``pactl`` -- PulseAudio control CLI utility * ``pacmd`` -- PulseAudio runtime reconfiguration utility * ``pacat`` -- ``cat`` for PulseAudio servers (play (un)encoded audio) * ``pavucontrol`` -- PulseAudio taskbar widget (:ref:`Gnome`) * ``paprefs`` -- PulseAudio preferences config GUI (:ref:`Gnome`) * ``pax11publish`` -- PulseAudio / :ref:`X11` GUI synchronization .. code:: bash man pulse-cli-syntax man pactl pactl info pactl list pactl load-module module-native-protocol-tcp pacmd load-module module-native-protocol-tcp A :ref:`Bash` script to supports pushing all system audio from one machine to another (e.g. speakers connected to a PC or a Pi on the other side of the room): * https://github.com/westurner/dotfiles/blob/master/scripts/pulse.sh .. index:: WAV .. _wav: WAV ~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/WAV WAV ("Waveform Audio Format") is a file format for storing an uncompressed audio bitstream. * Like WAV, Audio CDs are encoded with PCM; but unlike WAV, Audio CDs are encoded with PCM and *Red Book audio* .. index:: Audio/Visual Production .. _avproduction: Audio/Visual Production ************************* | https://en.wikipedia.org/wiki/Audiovisual_art | ``__ | https://en.wikipedia.org/wiki/Remix_culture * https://en.wikipedia.org/wiki/Compression_artifact#Artistic_use .. index:: VJ .. _vj: VJ ~~~ | https://en.wikipedia.org/wiki/VJing | https://en.wikipedia.org/wiki/DVJ | https://en.wikipedia.org/wiki/Video_synthesizer | https://en.wikipedia.org/wiki/Music_visualization | https://en.wikipedia.org/wiki/VJing#Common_technical_setups .. index:: Advanced Visualization Studio .. _advanced visualization-studio: Advanced Visualization Studio ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Advanced_Visualization_Studio | Homepage: http://www.1014.org/code/nullsoft/avs/ | Source: http://www.1014.org/code/nullsoft/avs/avs_src.zip Advanced Visualization Studio is a GUI tool for developing music visualization presets for the Winamp media player. .. index:: Geiss .. _geiss: Geiss ~~~~~ | Homepage: http://www.geisswerks.com/geiss/ | Docs: http://www.geisswerks.com/geiss/shots.html Geiss is a Winamp plugin for music visualization. Windows 95/98/ME/2000/XP/Vista, DirectX 3.0 or later, and a 200 MHz or faster processor. You can also run Geiss on Linux, using Wine. To use the plugin, you must have Winamp... if you don't already use Winamp, just download the screensaver version of Geiss. .. index:: libvisual .. _libvisual: libvisual ~~~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Libvisual | Homepage: http://libvisual.org/ | Source: git https://github.com/Libvisual/libvisual | Docs: http://libvisual.org/docs/ | Docs: http://libvisual.org/docs/annotated.html | Docs: https://github.com/Libvisual/libvisual/wiki | Docs: https://github.com/Libvisual/libvisual/wiki/Documentation | Docs: https://github.com/Libvisual/libvisual/wiki/Hacking-guide libvisual is a :ref:`C` API for music visualizations which enables integration and reuse with a number of media players. * https://github.com/Libvisual/libvisual/tree/master/libvisual-plugins/plugins/actor * https://github.com/Libvisual/libvisual/tree/master/libvisual-plugins/plugins/input * https://github.com/Libvisual/libvisual/tree/master/libvisual-plugins/plugins/morph .. index:: Milkdrop .. _milkdrop: MilkDrop ~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/MilkDrop | Homepage: http://www.geisswerks.com/milkdrop/ | Source: http://sourceforge.net/projects/milkdrop2/ | File Extension: ``.milk`` | Docs: http://www.geisswerks.com/about_milkdrop.html | Docs: http://www.geisswerks.com/milkdrop/milkdrop.html | Docs: http://www.geisswerks.com/milkdrop/milkdrop_preset_authoring.html MilkDrop is a visualization tool which runs *MilkDrop presets* * https://en.wikipedia.org/wiki/MilkDrop * :ref:`Kodi` supports MilkDrop visualizations. .. index:: MilkDrop Presets .. _milkdrop presets: ----------------- MilkDrop Presets ----------------- | Docs: http://www.geisswerks.com/milkdrop/milkdrop_preset_authoring.html * https://github.com/xbmc/xbmc/tree/master/addons/visualization.milkdrop/presets * http://www.theisozone.com/downloads/xbox/homebrew-apps/xbmc-visualizations/ (2007, ~9000 presets) http://forum.kodi.tv/showthread.php?tid=24616 * http://ghostco.de/milkdrop_pack/ * http://www.milkdrop.tk/ * http://forums.winamp.com/forumdisplay.php?f=84 * http://www.geisswerks.com/milkdrop/favorite_presets_2013_12.zip .. index:: ProjectM .. _projectm: ProjectM ~~~~~~~~ | Source: https://github.com/projectM-visualizer/projectm ProjectM is an :ref:`open source` implementation of :ref:`MilkDrop` with :ref:`OpenGL`. * :ref:`MilkDrop Presets` work with ProjectM * ProjectM is available for :ref:`Linux`, Unix * ProjectM is available for :ref:`iOS` and :ref:`Android` .. index:: Resolume .. _resolume: Resolume ~~~~~~~~ | Homepage: http://resolume.com | Download: http://resolume.com/download/ | Docs: http://resolume.com/download/ | Docs: http://resolume.com/software/tutorials | Docs: http://resolume.com/manual/en/r4/start Resolume Arena and Avenue are realtime DVJ audiovisual production tools for live visuals. * Resolume Arena is designed for **multi-projector setups** ("projection mapping", "projection blending") .. index:: vvvs .. _vvvs: vvvv ~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Vvvv | Homepage: http://vvvv.org/ | Download: http://vvvv.org/downloads | Docs: http://vvvv.org/documentation/documentation | Docs: http://vvvv.org/documentation/devvvveloping vvvv ("v4") is a realtime audiovisual production tool for :ref:`Windows` written in Delphi and C# .NET. .. index:: Web Production .. _web production: Web Production ***************** .. index:: M3U .. _m3u: M3U ~~~~~ | Wikipedia: https://git.xiph.org/flac.git M3U is an audio playlist format. * An M3U file includes unqualified file :term:`URLs ` (e.g. ``C:/music/file.mp3`` or ``/srv/music/file.mp3``) * An M3U file incldues HTTP :term:`URLs ` (e.g. `` * :ref:`VLC` can playback (read) :ref:`M3U` playlists. .. index:: PLS .. _pls: PLS ~~~~ | Wikipedia: ``__ PLS is an audio playlist format. * ShoutCAST / IceCAST streams are shared in :ref:`PLS` format. * :ref:`VLC` can playback (read) :ref:`PLS` playlists. .. index:: Popcorn Maker .. _popcorn maker: Popcorn Maker ~~~~~~~~~~~~~~ | Homepage: https://popcorn.webmaker.org/ Popcorn Maker is an :ref:`open source` tool for creating multitrack web media presentations. * Popcorn Maker is a Mozilla Webmaker tool: https://webmaker.org/en-US/tools .. index:: Stream Annotation .. _stream annotation: Stream Annotation ~~~~~~~~~~~~~~~~~~~ Media codecs do not solve for commenting, other tools support commenting on points or ranges of timecodes (e.g. "this part is great!" or "who is that?") * :ref:`OpenAnnotation` * SoundCloud, MixCloud .. index:: OpenAnnotation .. _openannotation: --------------------- OpenAnnotation --------------------- :ref:`OpenAnnotation ` is an :ref:`open source` :ref:`RDF` standard for threaded commenting on things with URLs and URIs. OpenAnnotation *annotations* (comments with metadata) can be stored on (*synced with*) a central server, generally under a key, URN, or URI: * Key: yA-NYmO8dDk * URN: urn:x-youtubevideo:yA-NYmO8dDk * URL: https://www.youtube.com/watch?v=yA-NYmO8dDk * URL: https://www.youtube.com/watch?v=yA-NYmO8dDk&list=PLt_DvKGJ_QLbqVMAiFRzts--Y9xZvxLDG&index=2 * URL: https://youtu.be/yA-NYmO8dDk * ShortURL: https://goo.gl/J4NJXs * :ref:`Hypothesis` is one implementation of an :ref:`OpenAnnotation ` RDF server API (:ref:`Python`, Pyramid) * There's a :ref:`Javascript` sidebar bookmarklet for :ref:`Hypothesis` :ref:`oa` comments. * There's a :ref:`Firefox` sidebar extension for :ref:`Hypothesis` :ref:`oa` comments. * There's a :ref:`Javascript` widget for Hypothesis :ref:`oa` comments: .. code:: html * There's a bookmarklet for Hypothesis :ref:`oa` comments: `Hypothesis Bookmarklet `__ ``owl:sameAs``: :ref:`Knowledge Engineering > Web Standards > OA ` .. index:: XSPF .. _xspf: XSPF ~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/XML_Shareable_Playlist_Format | Homepage: http://xspf.org/ | Standard: http://xspf.org/xspf-v1.html | Docs: http://xspf.org/applications/ XSPF (*XML Shareable Playlist Format*) is an :ref:`open source` media playlist format for files with :term:`URIs `, :term:`URNs `, and :term:`URLs `. * XSPF understands ``file://``-schema-prefixed local paths. * XSPF understands ``http://``-prefixed remote paths. * XSPF is designed to be utilized with a **content resolver**; which CAN or COULD lookup alternate representations of resources from a given set of resource collections. * "What a playlist is not" http://xspf.org/xspf-v1.html#rfc.section.3.2 * XSPF solves for all of the use cases of :ref:`m3u` and :ref:`pls`. * :ref:`VLC` can playback (read) :ref:`XSPF` playlists. What cannot be done with XSPF? * Cue points, crossfading, gap times * HTML content schema.org/description _HTML * schema.org/CreativeWork .. index:: JSPF .. _jspf: ------ JSPF ------ | Homepage: http://xspf.org/jspf/ JSPF (:ref:`JSON` *Shareable Playlist Format*) is an :ref:`open source` media playlist format for files with :term:`URIs `, :term:`URNs `, and :term:`URLs `. - [ ] Find/create :ref:`JSON-LD` ``@context`` for :ref:`JSPF`. .. index:: Web Distribution .. _web distribution: Web Distribution ***************** | https://en.wikipedia.org/wiki/Streaming_media | https://en.wikipedia.org/wiki/New_media * New Web :ref:`Media` (:ref:`Web Content `) are shared through :ref:`web standards` like TCP/IP, :ref:`HTTP`, :ref:`HTML`, and :ref:`webrtc` * Streaming a video with seek and rewind is a bit different than downloading / streaming / buffering a file from beginning to end + :ref:`BitTorrent`, :ref:`HTTP Live Streaming`, and :ref:`MPEG-DASH` download segments of files over :ref:`HTTP` by specifying the ``Content-Range:`` header in ``GET`` requests * Web scale audio / video requires less bandwidth when efficiently distributed through a file / stream distribution / caching / archiving network: * :ref:`CDN` * :ref:`BitTorrent` * :ref:`Named Data Networking` .. index:: CDN .. index:: Content Delivery Network .. _cdn: CDN ~~~~ | Wikipedia: https://en.wikipedia.org/wiki/Content_delivery_network | https://en.wikipedia.org/wiki/Content_delivery_network#Notable_content_delivery_service_providers | https://en.wikipedia.org/wiki/Cache#Computing A CDN ("Content Delivery Network") is a service and infrastructure designed for serving :ref:`web content` efficiently and geodistributedly. CDN Services: * Akamai (:ref:`OpenStack`) * :ref:`AWS` CloudFront * CDNJS (free): https://cdnjs.com/libraries * CloudFlare (free plan; optional DNS HTTPS static file compression) * Fastly: :ref:`GitHub Pages`, :ref:`PyPI` * Google: https://developers.google.com/speed/libraries/ * Rackspace CDN (:ref:`OpenStack` Swift) CDN APIs * :ref:`OpenStack` Poppy CDN API (+ :ref:`OpenStack` Swift) https://wiki.openstack.org/wiki/Poppy * :ref:`libcloud` Object Storage API: https://libcloud.readthedocs.io/en/latest/supported_providers.html#object-storage * :ref:`Ceph` Object Gateway: :ref:`aws` S3 API and :ref:`OpenStack` Swift API http://ceph.com/docs/next/radosgw/ .. index:: BitTorrent .. _bittorrent: BitTorrent ~~~~~~~~~~~~ | Wikipedia: https://en.wikipedia.org/wiki/BitTorrent | https://en.wikipedia.org/wiki/Comparison_of_BitTorrent_clients | https://en.wikipedia.org/wiki/Comparison_of_BitTorrent_tracker_software BitTorrent is a file distribution protocol built on top of :ref:`HTTP`. * A BitTorrent client downloads pieces of files over :ref:`HTTP` from **peers** discovered through a tracker or another peer discovery protocol (such as a :ref:`DHT`). * BitTorrent magnet URIs open in an installed BitTorrent downloading program (e.g. BitTorrent, uTorrent, Transmission (:ref:`Gnome`), Deluge (:ref:`Gnome`)) * There are programs to retrieve the latest ``.torrent`` files from RSS and Atom feeds (e.g. a released [episode] of a series or topic) * BitTorrent can be run headlessly (as a server daemon) e.g. with an HTTP API, SMTP pattern, web interface, or SSH for enqueuing torrents to download to a central location. * BitTorrent does not preserve file permissions or extended attributes, but archives can. * For a time, BitTorrent accounted for the largest slice of web traffic; but "now accounts for only 6.3% of total traffic in North America". https://www.sandvine.com/trends/global-internet-phenomena/ .. glossary:: BitTorrent Torrent File A BitTorrent ``.torrent`` file includes: * SHA-1 checksum hashes of all the pieces of all the files * (optional) a :ref:`DHT` key (for trackerless peer discovery) * (optional) a list of HTTP :term:`BitTorrent Tracker` URLs * (optional) a list of HTTP :term:`Web Seeds `. https://en.wikipedia.org/wiki/Torrent_file BitTorrent Tracker A BitTorrent Tracker maintains a list of recently connected peers from which matching pieces can be downloaded. BitTorrent Client A BitTorrent Client opens a :term:`BitTorrent Torrent File`, registers with the given :term:`BitTorrent Trackers `, looks for peers in a :ref:`DHT`, downloads the pieces of the files listed by choosing faster (more efficient, less costly, ~more local) peers to download from, and, according to the configuration, uploads pieces to other peers. BitTorrent Seed A BitTorrent Seed is a complete, checksummed copy of all of the pieces of all the files in a :term:`BitTorrent Torrent File` which a peer is sharing through a :term:`BitTorrent tracker` or a :ref:`DHT`. Web Seeding Web Seeding is when one or more :ref:`HTTP` servers serve default standby :term:`seeds ` (thus ensuring :ref:`Availability` when no-one is online). https://en.wikipedia.org/wiki/BitTorrent#Web_seeding Use Cases: * http://academictorrents.com/ * https://tug.org/mactex/MacTeX.pkg.torrent * http://torrent.ubuntu.com:6969 * https://torrent.fedoraproject.org/ * :ref:`Debtorrent` * https://bundles.bittorrent.com/ .. note:: "Scrambled" DRM content (which may or may not just work when I just copy the file to my other device) can be shared over BitTorrent all the same. .. index:: debtorrent .. _debtorrent: ------------ debtorrent ------------ | Homepage: https://wiki.debian.org/DebTorrent | Standard: https://wiki.debian.org/DebTorrent/Protocol | Source: svn svn://svn.debian.org/debtorrent/debtorrent/trunk debtorrent downloads :ref:`APT` :ref:`DEB` :ref:`packages` with :ref:`BitTorrent` for :ref:`Linux` distribtions like :ref:`Ubuntu` and/or :ref:`Debian`. * debtorrent can efficiently transfer packages to many local or remote machines (instead of downloading the same file from the other side of the network multiple times) :: sudo apt-get install debtorrent echo 'deb debtorrent://localhost:9988/foo distro main' | \ sudo tee -a /etc/apt/sources.list * https://github.com/saltstack-formulas/apt-formula/blob/master/apt/transports/debtorrent.sls .. index:: webtorrent .. _webtorrent: ------------ webtorrent ------------ | Source: git https://github.com/feross/webtorrent webtorrent is a :ref:`bittorrent` client written in :ref:`Javascript` that can run in :ref:`browsers` with :ref:`webrtc` support or :ref:`node.js`. * With nodejs, webtorrent can stream to AirPlay, Chromecast, :ref:`VLC` * webtorrent can work with :ref:`HTML5` ``