Université Paris VIII Ecole Doctorale Cognition, Langage, Interaction Laboratoire Paragraphe – CiTu Sciences de l’Information et de la Communication The Ardour DAW – Latency Compensation and Anywhere-to-Anywhere Signal Routing Systems Robin Gareus Thesis presented in fulfilment of the requirements for the degree of Doctor of Philosophy 2017 Date: February 11, 2018 Revision: print-1-g09fb821 Keywords: Digital Audio, Latency, Latency Compensation, Process Graph, Syn- chronisation, Algorithms Mots-clés: Algorithmes, Synchronisation, Son – Enregistrement et reproduction – Techniques numériques, Trasmission numériques, Routage (informa- tique) Copyright: (cid:13)c2012-2017 Robin Gareus. This is an open-access article distributed under the terms of the Creative Commons Attribution 3.0 Unported License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited. Université Paris VIII Ecole Doctorale Cognition, Langage, Interaction Laboratoire Paragraphe – CiTu Sciences de l’Information et de la Communication The Ardour DAW – Latency Compensation and Anywhere-to-Anywhere Signal Routing Systems Robin Gareus supervised by Khaldoun Zreik, Prof. Dr. Digital Humanities Department Université Paris 8 defense: 8/Dec/2017 jury members Victor Lazzarini Laurent Pottier Maynooth University Université Jean Monnet Winfried Ritsch Isis Truck IEM Graz Université Paris 8 Contents Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IX Abstract (French) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XII Résumé substantiel en français 1 I On Latency and Digital Audio 53 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 1.1 Digital Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 1.2 Latency and Latency Compensation . . . . . . . . . . . . . . . . . . . 54 1.3 Signal Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 1.4 Latency compensation in anywhere-to-anywhere routing systems . . . 61 1.5 State of the art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 2 Research and Development . . . . . . . . . . . . . . . . . . . . . . . . 65 2.1 Background, motivation and a short history of Ardour . . . . . . . . 65 2.2 Prototyping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 2.3 Free Software & Collaborations . . . . . . . . . . . . . . . . . . . . . 69 II The Digital Audio Ecosystem 73 3 Sources of Latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 3.1 Sound propagation through air . . . . . . . . . . . . . . . . . . . . . 73 3.2 Digital-to-Analogue and Analogue-to-Digital conversion . . . . . . . . 73 IV 3.3 Computer Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . 74 3.4 Operating System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.5 Digital Signal Processing . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.6 Processing Period . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4 Input/Output Latency Measurement . . . . . . . . . . . . . . . . . . 77 5 Plug-ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 5.1 Examples of Latent Plugins . . . . . . . . . . . . . . . . . . . . . . . 80 5.2 Plugin Standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 III Architecture and Building Blocks 85 6 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 7 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 8 Internal Route Architecture . . . . . . . . . . . . . . . . . . . . . . . . 90 9 Automation Event Handling . . . . . . . . . . . . . . . . . . . . . . . . 91 10 Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 11 Portengine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 12 Aux Sends and Busses . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 13 IO-Processors and Deliveries . . . . . . . . . . . . . . . . . . . . . . . 99 IV Latency Compensation 103 14 Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 V 15 Time Alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 16 Execution and Latency Graphs . . . . . . . . . . . . . . . . . . . . . . 109 16.1 Routing and Feeds . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 16.2 Upstream/Capture Latency . . . . . . . . . . . . . . . . . . . . . . . 113 16.3 Downstream/Playback Latency . . . . . . . . . . . . . . . . . . . . . 113 16.4 Calculating Latencies . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 16.5 Send, Return and Insert Latency . . . . . . . . . . . . . . . . . . . . 117 16.6 Ambiguous Latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 16.7 Additional Graph Considerations . . . . . . . . . . . . . . . . . . . . 124 17 Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 17.1 The Process Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 17.2 The Process Callback . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 17.3 Parallel Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 18 Route Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 18.1 Setting Processor Latencies . . . . . . . . . . . . . . . . . . . . . . . 138 18.2 Processing Route Buffers . . . . . . . . . . . . . . . . . . . . . . . . . 139 18.3 Playback & Capture . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 18.4 Disk-writer - Write Behind . . . . . . . . . . . . . . . . . . . . . . . . 143 18.5 Disk-reader - Read Ahead . . . . . . . . . . . . . . . . . . . . . . . . 145 18.6 Capturing Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 18.7 Side-chains and Modulation . . . . . . . . . . . . . . . . . . . . . . . 148 19 Vari-speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 VI V Conclusion 151 VI Appendix 153 A Delaylines in Ardour . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 A.1 ARDOUR::DelayLine . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 A.2 ARDOUR::FixedDelay . . . . . . . . . . . . . . . . . . . . . . . . . . 153 B Verification Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 B.1 Bounce recording via physical cable . . . . . . . . . . . . . . . . . . . 154 B.2 Introspection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 B.3 No Delay Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 B.4 First Non Zero Sample . . . . . . . . . . . . . . . . . . . . . . . . . . 157 B.5 Audio/MIDI Alignment Testing . . . . . . . . . . . . . . . . . . . . . 157 C Audio Signal Measurement and Visualization . . . . . . . . . . . . . 159 C.1 On Measurements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 C.2 Introduction to Audio Signal Meters . . . . . . . . . . . . . . . . . . 160 C.3 Meter Types and Standards . . . . . . . . . . . . . . . . . . . . . . . 161 C.4 Standardisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 C.5 Software Implementation . . . . . . . . . . . . . . . . . . . . . . . . . 174 Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 List of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 List of Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 VII VIII IX Abstract In inherently latent digital systems it is not trivial to compensate for latency, particu- larly in situations of complex signal routing graphs as is the case in a Digital Audio Workstation. While the general problem is of mathematical nature, design complexities arise in real-time audio systems due to constraints by hardware, system-architecture and engineering. To construct a system providing for full-graph latency compensation with anywhere- to-anywhere routing capabilities, it is insufficient to merely describe mechanisms. The complete system has to be designed as one and prototyped to take real-world limitations into account. This research was carried out using Ardour, a digital audio workstation, which is freely available under the GPL free-software licence. This thesis is as much a design-report as it is research documentation. A complete breakdown of building-blocks and interaction is presented, most of which has also been implemented beyond a proof-of-concept with the goal to bridge the gap between professional audio production systems and freely accessible documentation for research and development. While ostensibly focusing on Ardour, this thesis describes generic concepts of Audio Workstations like Ports, Tracks, Busses, and DSP Processors, as well as operational interaction between them. Basic concepts common to all digital I/O processes and sources of latency are explained, and process- and latency graphs are illustrated to provide a complete picture. General issues related to time-alignment, both local, and global, as well as more DAW specific cases like parameter-automation and parallel-execution are discussed. Algorithmsaremodelledwithpseudocodewhereappropriateandapplication programming interfaces are presented as examples to concepts throughout the text. X Résumé Dans des systèmes numériques essentiellement latents, compenser la latence n’est pas trivial, en particulier lorsque les graphes de routage du signal sont complexes comme c’est souvent le cas dans une station audionumérique (DAW). Tandis que le problème général est de nature mathématique, des complications apparaissentdanslaconceptiondesystèmesaudioentempsréelàcausedescontraintes du matériel, de l’architecture du système, ou de l’ingénierie. Pour construire un système fournissant une compensation de latence sur l’intégralité du graphe avec possibilité de connecter n’importe quelle source à n’importe quelle destination, uniquement décrire les mécanismes est insuffisant. Le système complet doit être conçu d’un bloc à l’aide de prototypes pour prendre en compte les limitations du monde réel. Cette recherche a été menée en utilisant Ardour, une station audionumérique librement disponible sous licence libre GPL. Cette thèse est autant un rapport de conception qu’une documentation de recherche. Une analyse complète des éléments de base et de leurs interactions est présentée. La plupart ont été implémentés au delà de la démonstration de faisabilité, dans le but de combler l’écart entre les systèmes professionnels de production audio et la documentation librement accessible pour la recherche et le développement. Même si elle s’attache ostensiblement à Ardour, cette thèse décrit les concept génériques des station audio tels que les Ports, les pistes (Tracks), les bus (Busses) et les processeurs de traitement numériques du signal (Processors) ainsi que les interactions opérationnelles entre eux. Les concepts de base communs à toutes les entrées/sorties numériques sont expliqués ainsi que les sources de latence. Les graphes de traitement et de latence sont illustrés pour présenter une vue d’ensemble. Les problèmes généraux rencontrés lors de l’alignement temporel, tant local que
Description: