Rtaudio: a Cross-Platform C++ Class for Realtime Audio Input/Output

Total Page:16

File Type:pdf, Size:1020Kb

Rtaudio: a Cross-Platform C++ Class for Realtime Audio Input/Output In Proceedings of the 2002 International Computer Music Conference, G¨oteborg, Sweden 1 RtAudio: A Cross-Platform C++ Class for Realtime Audio Input/Output Gary P. Scavone [email protected] Center for Computer Research in Music and Acoustics Department of Music, Stanford University Stanford, California 94305-8180 USA Abstract other than those necessitated by the underlying platform-specific audio interfaces. This paper presents a cross-platform C++ class for realtime audio input and output streaming. RtAu- dio provides a flexible, easy to use application pro- 2 Features & Design Goals gramming interface (API) which allows complete audio system control, including device capability RtAudio is a C++ class which provides a com- querying, multiple concurrent streams, blocking mon API for realtime audio input/output across and callback functionality. RtAudio is currently Linux, Irix, and Windows operating systems. supported on Windows platforms using the Direct- RtAudio significantly simplifies the process of in- Sound API, Linux platforms using both the OSS terfacing with computer audio hardware. It was and ALSA APIs, and on Irix platforms. Support designed with the following goals: for OS-X and Steinberg ASIO drivers is planned • object-oriented C++ structure for Spring 2002. • single independent header and source file for easy inclusion in programming projects • blocking and callback functionality 1 Introduction • flexible, easy to use, audio device parameter control While programming languages have gained • automatic internal conversion for data for- standardized support across the myriad of com- mat, channel number compensation, de- puter platforms and operating systems in exis- interleaving, and byte-swapping tence, a commonly supported API for audio pro- • control over multiple audio streams and de- gramming is far from a reality. As a result, an vices with a single class instance attempt to provide multi-platform support for an • audio device capability probing audio application can prove difficult at best. To RtAudio incorporates the concept of audio further complicate matters, multiple audio driver streams, which represent independent audio out- interfaces often exist for a single operating system. put (playback) and/or input (recording) “connec- For example, Windows platforms have Direct- tions” to audio devices. Available audio devices Sound, Windows Multimedia Library, and ASIO and their capabilities can be enumerated and then (Steinberg) driver options, Linux platforms have specified when opening a stream. Multiple streams Open Sound System (OSS) and Advanced Linux can run at the same time and, when allowed by the Sound Architecture (ALSA) drivers, and Macin- underlying audio API, a single device can serve tosh platforms have Sound Manager, ASIO and multiple streams. Core Audio drivers. RtAudio was designed to pro- The RtAudio API provides both blocking (syn- vide a common interface across a variety of these chronous) and callback (asynchronous) function- APIs in as flexible, yet simple, manner as possible. ality. Callbacks offer a simple means for achiev- RtAudio was originally developed to provide ing non-blocking audio input/output. Blocking audio input/output support for the Synthesis functionality is often necessary for explicit con- ToolKit in C++ (STK) [Cook and Scavone 1999]. trol of multiple input/output stream synchroniza- However, the latest release of RtAudio (version tion or when audio must be synchronized with 2.0, January 2002) was designed to function in- other system events. All public RtAudio func- dependently from STK, as well as any libraries tions are thread-safe. This allows users to safely In Proceedings of the 2002 International Computer Music Conference, G¨oteborg, Sweden 2 embed blocking RtAudio functions within a multi- is supplied to a method or a driver error occurs. threaded programming structure of their own de- There are a number of cases within RtAudio where sign. warning messages may be displayed but an excep- RtAudio offers uniform support for 8-bit, 16- tion is not thrown. bit, 24-bit, and 32-bit signed integer data for- mats, as well as 32-bit and 64-bit floating point 3.1 Device Capabilities formats. When an audio device does not na- tively support a requested user format, RtAudio RtAudio provides the following functions for provides automatic format conversion. In addi- use in probing the number and capabilities of avail- tion, internal routines will automatically perform able audio devices: any byte-swapping, channel number compensa- int getDeviceCount (void); tion, and channel de-interleaving required by the underlying audio driver or hardware. void getDeviceInfo (int device, On Linux platforms, both native ALSA and RTAUDIO_DEVICE *info); OSS audio APIs are supported. Portability to other OSS supported systems, such as Solaris and The RTAUDIO DEVICE structure contains in- HP-UX, is untested but most likely easily achieved. formation commonly required in assessing the ca- The ALSA driver model was recently incorporated pabilities of an audio device, including its name, into the Linux development kernel and will likely minimum and maximum number of input, output, gain wide acceptance in the near future. The and duplex channels, supported sample rates, and ALSA API provides a more developed level of sup- native data formats. port for professional quality audio devices than OSS. On Windows platforms, only the Direct- 3.2 Stream Creation & Parameters Sound API is currently supported. On SGI plat- forms, the newer “al” API is supported. In addition to the default constructor, RtAudio The RtAudio API incorporates many of the provides an overloaded constructor which allows a concepts developed in the PortAudio project stream to be immediately opened with a given set [Bencina and Burk 2001]. RtAudio distinguishes of device parameters. Alternately, a stream can be itself from PortAudio in its object-oriented, C++ opened after instantiation in much the same way. framework, single-file encapsulation, native block- RtAudio (int *streamId, ing support, ALSA support, thread-safe routines, int outputDevice, and slightly less ambitious API (which makes int outputChannels, RtAudio less prone to bugs and easier to maintain int inputDevice, and extend). int inputChannels, All source code for RtAudio is made freely RTAUDIO_FORMAT format, available, allowing full user extensibility and cus- int sampleRate, tomization. RtAudio is distributed with a tutorial int *bufferSize, and complete API documentation in HTML, PDF, int numberOfBuffers); and RTF formats. int openStream (int outputDevice, RtAudio int outputChannels, 3 The API int inputDevice, int inputChannels, All uses of RtAudio must begin with object in- RTAUDIO_FORMAT format, stantiation. The default constructor RtAudio() int sampleRate, scans the underlying audio system to verify that int *bufferSize, at least one audio input/output device is available. int numberOfBuffers); RtAudio uses C++ exceptions to handle critical errors, necessitating try/catch blocks around most A stream is opened with specified output and member functions as well as constructors. Like- input devices, output and input channels, data for- wise, all uses of RtAudio must end with class de- mat, sample rate, and buffer parameters. When struction. successful, a stream identifier is returned which RtAudio uses a C++ exception handler called must be used for subsequent function calls on the RtError, which is declared and defined within the stream. Audio devices are identified by integer RtAudio class files. An RtError can be caught by values of one and higher, as enumerated by the type, providing a means for error correction or at getDeviceInfo() function. In addition, the sys- a minimum, more detailed error reporting. Al- tem default input/output devices are identified by most all RtAudio methods can ”throw” an RtEr- a zero value. When a device identifier of zero is ror, most typically if an invalid stream identifier In Proceedings of the 2002 International Computer Music Conference, G¨oteborg, Sweden 3 specified during stream creation, RtAudio first at- the user must first get a pointer to the stream tempts to open the default audio device(s) with the buffer, provided by RtAudio, for use in feeding data given parameters. If that fails, an attempt is made to/from the opened stream. Memory management to find a device or set of devices which will meet the for the stream buffer is automatically controlled given parameters. If all attempts are unsuccessful, by RtAudio. The bufferSize value returned dur- an RtError is thrown. When a positive, non-zero ing stream creation defines the length, in sample device value is specified, no additional devices are frames, of the stream buffer. Multichannel data in probed. Example program code is provided in the the stream buffer must be in interleaved order. appendix of this paper. char *const getStreamBuffer (int streamId); Because RtAudio can be used to simultaneously void tickStream (int streamId); control more than a single stream, it is necessary int streamWillBlock (int streamId); that the returned stream identifier be provided to nearly all public methods. After starting the stream, the sequence of The bufferSize parameter specifies the desired events then consists of filling or reading from number of sample frames which will be written to the stream buffer between calls to tickStream(). and/or read from a device per write/read oper- The tickStream() function blocks until the ation. Both the bufferSize and numberOfBuffers data within the stream buffer can be com-
Recommended publications
  • Porting Portaudio API on ASIO
    GRAME - Computer Music Research Lab. Technical Note - 01-11-06 Porting PortAudio API on ASIO Stéphane Letz November 2001 Grame - Computer Music Research Laboratory 9, rue du Garet BP 1185 69202 FR - LYON Cedex 01 [email protected] Abstract This document describes a port of the PortAudio API using the ASIO API on Macintosh and Windows. It explains technical choices used, buffer size adaptation techniques that guarantee minimal additional latency, results and limitations. 1 The ASIO API ASIO (Audio Streaming Input Ouput) is an API defined and proposed by Steinberg. It addesses the area of efficient audio processing, synchronization, low latency and extentibility on the hardware side. ASIO allows the handling of multi-channel professional audio cards, and different sample rates (32 kHz to 96 kHz), different sample formats (16, 24, 32 bits of 32/64 floating point formats). ASIO is available on MacOS and Windows. 2 PortAudio API PortAudio is a library that provides streaming audio input and output. It is a cross-platform API that works on Windows, Macintosh, Linux, SGI, FreeBSD and BeOS. This means that programs that need to process or generate an audio signal, can run on several different computers just by recompiling the source code. PortAudio is intended to promote the exchange of audio synthesis software between developers on different platforms. 3 Technical choices Porting PortAudio to ASIO means that some technical choices have to be made. The life cycle of the ASIO driver must be “mapped” to the life cycle of a PortAudio application. Each PortAudio function will be implemented using one or more ASIO functions.
    [Show full text]
  • Python-Sounddevice Release 0.4.2
    python-sounddevice Release 0.4.2 Matthias Geier 2021-07-18 Contents 1 Installation 2 2 Usage 3 2.1 Playback................................................3 2.2 Recording...............................................4 2.3 Simultaneous Playback and Recording................................4 2.4 Device Selection...........................................4 2.5 Callback Streams...........................................5 2.6 Blocking Read/Write Streams.....................................6 3 Example Programs 6 3.1 Play a Sound File...........................................6 3.2 Play a Very Long Sound File.....................................8 3.3 Play a Very Long Sound File without Using NumPy......................... 10 3.4 Play a Web Stream.......................................... 12 3.5 Play a Sine Signal........................................... 14 3.6 Input to Output Pass-Through..................................... 15 3.7 Plot Microphone Signal(s) in Real-Time............................... 17 3.8 Real-Time Text-Mode Spectrogram................................. 19 3.9 Recording with Arbitrary Duration.................................. 21 3.10 Using a stream in an asyncio coroutine............................... 23 3.11 Creating an asyncio generator for audio blocks........................... 24 4 Contributing 26 4.1 Reporting Problems.......................................... 26 4.2 Development Installation....................................... 28 4.3 Building the Documentation..................................... 28 5 API Documentation
    [Show full text]
  • The Open Master Hearing Aid (Openmha) Application Engineers' Manual
    The Open Master Hearing Aid (openMHA) 4.16.1 Application Engineers’ Manual © 2005-2021 by HörTech gGmbH, Marie-Curie-Str. 2, D–26129 Oldenburg, Germany The Open Master Hearing Aid (openMHA) – Application Engineers’ Manual HörTech gGmbH Marie-Curie-Str. 2 D–26129 Oldenburg iii LICENSE AGREEMENT This file is part of the HörTech Open Master Hearing Aid (openMHA) Copyright © 2005 2006 2007 2008 2009 2010 2012 2013 2014 2015 2016 HörTech gGmbH. Copyright © 2017 2018 2019 2020 2021 HörTech gGmbH. openMHA is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3 of the License. openMHA is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License, version 3 for more details. You should have received a copy of the GNU Affero General Public License, version 3 along with openMHA. If not, see <http://www.gnu.org/licenses/>. © 2005-2021 HörTech gGmbH, Oldenburg Contents 1 Introduction 1 1.1 Structure........................................ 1 1.2 Platform Services and Conventions......................... 2 2 The openMHA configuration language4 2.1 Structure of the openMHA configuration language................. 4 2.2 Communication between openMHA Plugins .................... 7 3 The openMHA host application8 3.1 Invocation of ’mha’ .................................. 8 3.2 Configuration variables of the openMHA host application............. 10 3.3 States of the openMHA host application ...................... 11 3.4 Audio abstraction layer................................ 11 4 GNU Octave/MATLAB tools 15 4.1 "mhactl_wrapper" - openMHA control interface for GNU Octave and MATLAB .
    [Show full text]
  • The Pulseaudio Sound Server Linux.Conf.Au 2007
    Introduction What is PulseAudio? Usage Internals Recipes Outlook The PulseAudio Sound Server linux.conf.au 2007 Lennart Poettering [email protected] Universit¨atHamburg, Department Informatik University of Hamburg, Department of Informatics Hamburg, Germany January 17th, 2007 Lennart Poettering The PulseAudio Sound Server 2 What is PulseAudio? 3 Usage 4 Internals 5 Recipes 6 Outlook Introduction What is PulseAudio? Usage Internals Recipes Outlook Contents 1 Introduction Lennart Poettering The PulseAudio Sound Server 3 Usage 4 Internals 5 Recipes 6 Outlook Introduction What is PulseAudio? Usage Internals Recipes Outlook Contents 1 Introduction 2 What is PulseAudio? Lennart Poettering The PulseAudio Sound Server 4 Internals 5 Recipes 6 Outlook Introduction What is PulseAudio? Usage Internals Recipes Outlook Contents 1 Introduction 2 What is PulseAudio? 3 Usage Lennart Poettering The PulseAudio Sound Server 5 Recipes 6 Outlook Introduction What is PulseAudio? Usage Internals Recipes Outlook Contents 1 Introduction 2 What is PulseAudio? 3 Usage 4 Internals Lennart Poettering The PulseAudio Sound Server 6 Outlook Introduction What is PulseAudio? Usage Internals Recipes Outlook Contents 1 Introduction 2 What is PulseAudio? 3 Usage 4 Internals 5 Recipes Lennart Poettering The PulseAudio Sound Server Introduction What is PulseAudio? Usage Internals Recipes Outlook Contents 1 Introduction 2 What is PulseAudio? 3 Usage 4 Internals 5 Recipes 6 Outlook Lennart Poettering The PulseAudio Sound Server Introduction What is PulseAudio? Usage Internals Recipes Outlook Who Am I? Student (Computer Science) from Hamburg, Germany Core Developer of PulseAudio, Avahi and a few other Free Software projects http://0pointer.de/lennart/ [email protected] IRC: mezcalero Lennart Poettering The PulseAudio Sound Server Introduction What is PulseAudio? Usage Internals Recipes Outlook Introduction Lennart Poettering The PulseAudio Sound Server It’s a mess! There are just too many widely adopted but competing and incompatible sound systems.
    [Show full text]
  • Mixxx User Manual Release 2.1.0
    Mixxx User Manual Release 2.1.0 The Mixxx Development Team Apr 15, 2018 Contents 1 Introduction to Mixxx 1 1.1 How Mixxx Works............................................1 2 Getting Started 3 2.1 Opening Mixxx..............................................3 2.2 Importing your audio files........................................3 2.3 Analyze your library...........................................4 2.4 Configuring sound input and output...................................4 3 An Overview of the Mixxx Interface7 3.1 The Deck Sections............................................8 3.2 The Mixer Section............................................ 17 3.3 The Sampler Section........................................... 20 3.4 The Effects Section............................................ 22 3.5 The Microphone Section......................................... 22 3.6 Preview Deck Section.......................................... 22 4 The Mixxx Library 24 4.1 Overview of the Library features..................................... 24 4.2 Tracks - View and edit your whole collection.............................. 25 4.3 Loading Tracks.............................................. 28 4.4 Finding Tracks (Search)......................................... 29 4.5 Previewing Tracks............................................ 30 4.6 Edit metadata of audio files....................................... 30 4.7 Auto DJ - Automate your mix...................................... 33 4.8 Playlists - Arranging tracks in a set order................................ 33 4.9 Crates -
    [Show full text]
  • Audiomath Documentation Release 1.16.1
    audiomath Documentation Release 1.16.1 Jeremy Hill Sep 25, 2021 Table of Contents 1 Installation 3 1.1 Compatibility and requirements.....................................3 1.2 Normal installation............................................3 1.3 Advanced installation (from version-controlled sources)........................4 2 How to. 5 2.1 Read a sound from a file into memory..................................5 2.2 Write a sound from memory into a file.................................5 2.3 Create a sound from scratch, in memory.................................6 2.4 Define a functionally-generated sound..................................6 2.5 Perform simple arithmetic........................................7 2.6 Extract a segment of a sound.......................................7 2.7 Extract selected channels from multi-channel sounds..........................8 2.8 Concatenate sounds in time (splicing)..................................8 2.9 Stack channels (multiplexing)......................................9 2.10 Pitch-shift or time-stretch a sound.................................... 10 2.11 Preprocess a sound using SoX...................................... 10 2.12 Manipulate a sound in other miscellaneous ways............................ 10 2.13 Plot a sound............................................... 11 2.14 Play sounds................................................ 11 2.15 Play sounds with more-precise latency, via PsychPortAudio .................... 14 2.16 Record a sound into memory....................................... 15 2.17 Record
    [Show full text]
  • Linux Audio Conference 2019
    Proceedings of the Linux Audio Conference 2019 March 23rd – 26th, 2019 Center for Computer Research in Music and Acoustics (CCRMA) Stanford University, USA “In Ping(uins) e trust! Published by CCRMA, Stanford University, California, US March 2019 All copyrights remain with the authors http://lac.linuxaudio.org/2019 ISBN 978-0-359-46387-9 Credits Layout: Frank Neumann and Romain Michon Typesetting: LATEX and pdfLaTeX Logo Design: The Linuxaudio.org logo and its variations copyright Thorsten Wilms c 2006, imported into "LAC 2014" logo by Robin Gareus Thanks to: Martin Monperrus for his webpage "Creating proceedings from PDF files" ii Partners and Sponsors Linuxaudio.org iii iv Foreword Welcome everyone to LAC 2019 at CCRMA! For the second time in its seventeen year history, the Linux Audio Conference (LAC) is hosted in the United Stated of America by the Center for Computer Research in Mu- sic and Acoustics (CCRMA) at Stanford University. With its informal workshop-like at- mosphere, LAC is a blend of scientific and technical papers, tutorials, sound installations, and concerts centered on the free GNU/Linux operating system and open-source free soft- ware for audio, multimedia, and musical applications. LAC is a unique platform during which members of this community gather to exchange ideas, draft new projects, and see old friends. In these times of increasing political tensions and of rising extremism throughout the world, we believe that emphasizing and promoting the universality of this type of event is of the utmost importance. The Linux audio community exists worldwide; we believe it should remain a priority to diversify LAC’s geographical location from year to year for the benefit of those who can’t afford to travel to the other side of the world.
    [Show full text]
  • Purebasic Vs Freepascal
    Purebasic vs freepascal click here to download Most mentioned BASIC dialects are not as multi platform as Lazarus or even Freepascal except Purebasic and Realbasic. Logged. Today I downloaded and installed Lazarus (based on Free Pascal) just to . Most of these extra libs for PureBasic are created in C/C++ or are Read DirectUIHWND class window and. But, if you want write native applications, not requiring a third-party dlls and platforms, or native and cross- platform applications, you can't use. I downloaded both Lazarus & PureBasic and tried both and they look OK. I can not decide I love the Laz IDE, it's much faster than www.doorway.ru and. If I could just install a file (like a mdb, or maybe a Firebird DB file), thats use this for its awesome platform support - have a look at PureBasic. There is a language out there called pure basic, which is actually the . just like I can see why people liked Delphi or FreePascal; it's a nicer. Today I'm writing about PureBasic, a portable programming language, that works on Compared to Lazarus which uses freepascal this is small. just use out of the box, e.g. Threading, DLL creation (or sharedobjects), XML, JSON, Sqlite. The following tables list notable software packages that are nominal IDEs; standalone tools . PureBasic · Fantaisie Software · Proprietary, Yes, Yes, Yes, AmigaOS .. Free Pascal IDE, Volunteers, / February 15, , Yes, Yes, Yes . PyQt · GPLv3 "or later", Yes, until version and since version , Yes, since. In my honest opinion, there is not any language which is the easiest to start with, you could start with C++ or with PureBasic, or with C.
    [Show full text]
  • Aalborg Universitet Towards an Open Digital Audio Workstation for Live
    Aalborg Universitet Towards an open digital audio workstation for live performance Dimitrov, Smilen DOI (link to publication from Publisher): 10.5278/vbn.phd.engsci.00028 Publication date: 2015 Document Version Publisher's PDF, also known as Version of record Link to publication from Aalborg University Citation for published version (APA): Dimitrov, S. (2015). Towards an open digital audio workstation for live performance: the development of an open soundcard. Aalborg Universitetsforlag. (Ph.d.-serien for Det Teknisk-Naturvidenskabelige Fakultet, Aalborg Universitet). DOI: 10.5278/vbn.phd.engsci.00028 General rights Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. ? Users may download and print one copy of any publication from the public portal for the purpose of private study or research. ? You may not further distribute the material or use it for any profit-making activity or commercial gain ? You may freely distribute the URL identifying the publication in the public portal ? Take down policy If you believe that this document breaches copyright please contact us at [email protected] providing details, and we will remove access to the work immediately and investigate your claim. Downloaded from vbn.aau.dk on: April 30, 2017 THE DEVELOPMENT OF AN OPEN SOUNDCARD THE DEVELOPMENT OF FOR LIVE PERFORMANCE: AUDIO WORKSTATION AN OPEN DIGITAL TOWARDS TOWARDS AN OPEN DIGITAL AUDIO WORKSTATION FOR LIVE PERFORMANCE: THE DEVELOPMENT OF AN OPEN SOUNDCARD BY SMILEN DIMITROV DISSERTATION SUBMITTED 2015 SMILEN DIMITROV Towards an open digital audio workstation for live performance: the development of an open soundcard Ph.D.
    [Show full text]
  • Mixxx User Manual Izdaja 2.2.2
    Mixxx User Manual Izdaja 2.2.2 The Mixxx Development Team 27 apr., 2021 Contents 1 Uvod v Mixxx 1 1.1 Delovanje Mixxx-a ............................................ 1 2 Kako začeti 3 2.1 Zagon Mixxx ............................................... 3 2.2 Uvoz zvočnih datotek ........................................... 3 2.3 Analizira vašo knjižnico ......................................... 4 2.4 Nastavitve vhodnih in izhodnih naprav .................................. 5 3 Pregled Mixxx vmesnika 7 3.1 Section Skin Settings ........................................... 8 3.2 Razdelki s predvajalnikom ........................................ 8 3.3 The Mixer Section ............................................ 18 3.4 The Sampler Section ........................................... 22 3.5 Razdelek Efekti .............................................. 24 3.6 The Microphone Section ......................................... 24 3.7 Preview Deck Section .......................................... 25 4 Mixxx knjižnica 26 4.1 Pregled funkciji knjižnice ......................................... 26 4.2 Tracks - View and edit your whole collection ............................... 27 4.3 Loading Tracks .............................................. 30 4.4 Finding Tracks (Search) ......................................... 31 4.5 Previewing Tracks ............................................ 32 4.6 Edit metadata of audio files ........................................ 32 4.7 Auto DJ - Automate your mix ...................................... 35 4.8 Playlists - Arranging
    [Show full text]
  • Ultragrid Update
    ULTRAGRID UPDATE Miloš Liška CESNET April 2nd 2018 NPAPW19, Prague UltraGrid Platform Technology an affordable platform for very high-quality interactive video (up to 8K) and audio transmissions use of commodity (gaming) hardware Linux and Windows PC and Mac OS platforms commodity video capture cards commodity GPU cards commodity sound cards any reasonable network as low latency as possible on commodity hardware open-source software, BSD (GPL) license User support, community M. Liška, CESNET, 2/20 UltraGrid News Development towards UltraGrid 1.6 243 files changed, 30150 insertions(+), 34950 deletions(-) Audio reimplementation (including experiments with ASIO backend) New GPUJPEG, arithmetic coder in progress NDI support, AJA display, 12-bit video support, SMPTE VC-5 Cineform support GUI improvements Development towards 360 video support Cameras such as Panasonic 360 Live Cam already available, with limited capabilities and huge latency (398.4±16.6 ms) M. Liška, CESNET, 3/20 Community Update – Opravdoví OPRAVDOVÍ Networked Performance Premiéra 26.9.2018 Trutnov (UFFO) Plzeň (Moving Station) M. Liška, CESNET, 4/20 Community Update – APAN M. Liška, CESNET, 5/20 Community Update – APAN M. Liška, CESNET, 6/20 Community Update – ZHdK TwinLab Performance M. Liška, CESNET, 7/20 Community Update – ZHdK M. Liška, CESNET, 8/20 Community Update – SFJAZZ M. Liška, CESNET, 9/20 Multiplatform Audio Transmissions This won’t be about using SDI/HDMI embedded or analog audio with video capture cards (Blackmagic’s etc.) Always works as expected Audio synchronized with video frames Audio latency corresponds to the video framerate (and is higher) 60 fps corresponds to 16.6 ms of latency (not end-to-end at all) M.
    [Show full text]
  • A FAUST Tutorial Etienne Gaudrain, Yann Orlarey
    A FAUST Tutorial Etienne Gaudrain, Yann Orlarey To cite this version: Etienne Gaudrain, Yann Orlarey. A FAUST Tutorial. manual, 2003. hal-02158895 HAL Id: hal-02158895 https://hal.archives-ouvertes.fr/hal-02158895 Submitted on 18 Jun 2019 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. A Faust Tutorial Grame, 9 rue du Garet, 69001 Lyon by Etienne Gaudrain, Yann Orlarey September 10, 2003 Special thanks to Samuel Bousard for the support, the reading and the corrections. Introduction Faust is a programming language designed for the creation of stream processors. The name Faust stands for Functional audio stream, and sug- gests both a musical and a devilish (!) side. It has been developed by Grame since 2000 [OFL02], to help programmers, but also composers and various sound hackers to build audio stream processors. The Faust language is based on functional programming paradigms [Hug89], but the Faust compiler pro- duces C++ code that is optimized by a λ-abstraction-based mechanism. The portability of C++ entails the portability of Faust if one can bring the good wrapper files that will make the C++ code compilable as a standalone application on your system.
    [Show full text]