commit: 7a580eb2ddbdbf1d6a05d017cc39440fb8cae37e
parent c31091253ce216b00f1e3b679fd589da035b261a
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date: Wed, 8 Mar 2023 23:29:21 +0100
images/linux-audio-output*: Regenerate
Diffstat:
5 files changed, 538 insertions(+), 539 deletions(-)
diff --git a/images/linux-audio-output-current.dot b/images/linux-audio-output-current.dot
@@ -11,7 +11,6 @@ digraph "Linux Audio Output APIs (current-only)" {
server [ shape=octagon fillcolor=orange ];
driver [ shape=hexagon fillcolor=yellow ];
hardware [ shape=box fillcolor=cyan ];
- //{ rank=same hardware driver server }
}
diff --git a/images/linux-audio-output-current.png b/images/linux-audio-output-current.png
Binary files differ.
diff --git a/images/linux-audio-output-current.svg b/images/linux-audio-output-current.svg
@@ -1,64 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.47.1 (20210417.1919)
+<!-- Generated by graphviz version 5.0.1 (20220820.1526)
-->
<!-- Title: Linux Audio Output APIs (current-only) Pages: 1 -->
-<svg width="1809pt" height="734pt"
- viewBox="0.00 0.00 1808.57 734.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="1645pt" height="734pt"
+ viewBox="0.00 0.00 1645.00 734.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 730)">
<title>Linux Audio Output APIs (current-only)</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-730 1804.57,-730 1804.57,4 -4,4"/>
-<text text-anchor="middle" x="900.29" y="-37.8" font-family="Times,serif" font-size="14.00">Linux Audio Output APIs (current-only)</text>
-<text text-anchor="middle" x="900.29" y="-22.8" font-family="Times,serif" font-size="14.00"> CC-BY 4.0 © 2020-2021 Haelwenn (lanodan) Monnier</text>
-<text text-anchor="middle" x="900.29" y="-7.8" font-family="Times,serif" font-size="14.00"> https://hacktivis.me/articles/linux-audio-output</text>
+<polygon fill="white" stroke="none" points="-4,4 -4,-730 1641,-730 1641,4 -4,4"/>
+<text text-anchor="middle" x="818.5" y="-37.8" font-family="Times,serif" font-size="14.00">Linux Audio Output APIs (current-only)</text>
+<text text-anchor="middle" x="818.5" y="-22.8" font-family="Times,serif" font-size="14.00"> CC-BY 4.0 © 2020-2021 Haelwenn (lanodan) Monnier</text>
+<text text-anchor="middle" x="818.5" y="-7.8" font-family="Times,serif" font-size="14.00"> https://hacktivis.me/articles/linux-audio-output</text>
<g id="clust1" class="cluster">
<title>cluster_legend</title>
-<polygon fill="none" stroke="black" points="556,-643 556,-718 872,-718 872,-643 556,-643"/>
-<text text-anchor="middle" x="714" y="-702.8" font-family="Times,serif" font-size="14.00">Legend</text>
+<polygon fill="none" stroke="black" points="529,-643 529,-718 792,-718 792,-643 529,-643"/>
+<text text-anchor="middle" x="660.5" y="-702.8" font-family="Times,serif" font-size="14.00">Legend</text>
</g>
<!-- server -->
<g id="node1" class="node">
<title>server</title>
-<polygon fill="orange" stroke="black" points="863.73,-661.54 863.73,-676.46 838.11,-687 801.89,-687 776.27,-676.46 776.27,-661.54 801.89,-651 838.11,-651 863.73,-661.54"/>
-<text text-anchor="middle" x="820" y="-665.3" font-family="Times,serif" font-size="14.00">server</text>
+<polygon fill="orange" stroke="black" points="784.35,-661.54 784.35,-676.46 763.64,-687 734.36,-687 713.65,-676.46 713.65,-661.54 734.36,-651 763.64,-651 784.35,-661.54"/>
+<text text-anchor="middle" x="749" y="-665.3" font-family="Times,serif" font-size="14.00">server</text>
</g>
<!-- driver -->
<g id="node2" class="node">
<title>driver</title>
-<polygon fill="yellow" stroke="black" points="758.06,-669 735.53,-687 690.47,-687 667.94,-669 690.47,-651 735.53,-651 758.06,-669"/>
-<text text-anchor="middle" x="713" y="-665.3" font-family="Times,serif" font-size="14.00">driver</text>
+<polygon fill="yellow" stroke="black" points="695.55,-669 677.27,-687 640.73,-687 622.45,-669 640.73,-651 677.27,-651 695.55,-669"/>
+<text text-anchor="middle" x="659" y="-665.3" font-family="Times,serif" font-size="14.00">driver</text>
</g>
<!-- hardware -->
<g id="node3" class="node">
<title>hardware</title>
-<polygon fill="cyan" stroke="black" points="649.5,-687 564.5,-687 564.5,-651 649.5,-651 649.5,-687"/>
-<text text-anchor="middle" x="607" y="-665.3" font-family="Times,serif" font-size="14.00">hardware</text>
+<polygon fill="cyan" stroke="black" points="604.5,-687 537.5,-687 537.5,-651 604.5,-651 604.5,-687"/>
+<text text-anchor="middle" x="571" y="-665.3" font-family="Times,serif" font-size="14.00">hardware</text>
</g>
<!-- sound card -->
<g id="node4" class="node">
<title>sound card</title>
-<polygon fill="cyan" stroke="black" points="1072.5,-89 977.5,-89 977.5,-53 1072.5,-53 1072.5,-89"/>
-<text text-anchor="middle" x="1025" y="-67.3" font-family="Times,serif" font-size="14.00">sound card</text>
+<polygon fill="cyan" stroke="black" points="966,-89 890,-89 890,-53 966,-53 966,-89"/>
+<text text-anchor="middle" x="928" y="-67.3" font-family="Times,serif" font-size="14.00">sound card</text>
</g>
<!-- phone modem -->
<g id="node5" class="node">
<title>phone modem</title>
-<polygon fill="cyan" stroke="black" points="1356.5,-89 1239.5,-89 1239.5,-53 1356.5,-53 1356.5,-89"/>
-<text text-anchor="middle" x="1298" y="-67.3" font-family="Times,serif" font-size="14.00">phone modem</text>
+<polygon fill="cyan" stroke="black" points="1215.5,-89 1120.5,-89 1120.5,-53 1215.5,-53 1215.5,-89"/>
+<text text-anchor="middle" x="1168" y="-67.3" font-family="Times,serif" font-size="14.00">phone modem</text>
</g>
<!-- bluetooth -->
<g id="node6" class="node">
<title>bluetooth</title>
-<polygon fill="cyan" stroke="black" points="1181.5,-89 1096.5,-89 1096.5,-53 1181.5,-53 1181.5,-89"/>
-<text text-anchor="middle" x="1139" y="-67.3" font-family="Times,serif" font-size="14.00">bluetooth</text>
+<polygon fill="cyan" stroke="black" points="1067,-89 999,-89 999,-53 1067,-53 1067,-89"/>
+<text text-anchor="middle" x="1033" y="-67.3" font-family="Times,serif" font-size="14.00">bluetooth</text>
</g>
<!-- portaudio -->
<g id="node7" class="node">
<title>portaudio</title>
<g id="a_node7"><a xlink:href="https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/" xlink:title="portaudio">
-<ellipse fill="lightgrey" stroke="black" cx="681" cy="-523" rx="55.79" ry="18"/>
-<text text-anchor="middle" x="681" y="-519.3" font-family="Times,serif" font-size="14.00">portaudio</text>
+<ellipse fill="lightgrey" stroke="black" cx="621" cy="-523" rx="44.39" ry="18"/>
+<text text-anchor="middle" x="621" y="-519.3" font-family="Times,serif" font-size="14.00">portaudio</text>
</a>
</g>
</g>
@@ -66,650 +66,650 @@
<g id="node8" class="node">
<title>ALSA</title>
<g id="a_node8"><a xlink:href="https://alsa-project.org/wiki/Asoundrc#Plugins" xlink:title="ALSA">
-<polygon fill="yellow" stroke="black" points="1136.05,-450 1115.53,-468 1074.47,-468 1053.95,-450 1074.47,-432 1115.53,-432 1136.05,-450"/>
-<text text-anchor="middle" x="1095" y="-446.3" font-family="Times,serif" font-size="14.00">ALSA</text>
+<polygon fill="yellow" stroke="black" points="1035.05,-450 1015.53,-468 976.47,-468 956.95,-450 976.47,-432 1015.53,-432 1035.05,-450"/>
+<text text-anchor="middle" x="996" y="-446.3" font-family="Times,serif" font-size="14.00">ALSA</text>
</a>
</g>
</g>
<!-- portaudio->ALSA -->
<g id="edge1" class="edge">
<title>portaudio->ALSA</title>
-<path fill="none" stroke="black" d="M729.18,-513.84C746.45,-510.97 766.09,-507.77 784,-505 812.4,-500.6 1011.96,-474.32 1040,-468 1045.36,-466.79 1050.96,-465.32 1056.44,-463.75"/>
-<polygon fill="black" stroke="black" points="1057.54,-467.07 1066.11,-460.86 1055.53,-460.37 1057.54,-467.07"/>
+<path fill="none" stroke="black" d="M660.38,-514.44C676.38,-511.42 695.06,-507.96 712,-505 737.17,-500.6 914.09,-473.72 939,-468 945.21,-466.57 951.73,-464.85 958.07,-463.05"/>
+<polygon fill="black" stroke="black" points="959.17,-466.37 967.78,-460.2 957.2,-459.66 959.17,-466.37"/>
</g>
<!-- JACK -->
<g id="node9" class="node">
<title>JACK</title>
<g id="a_node9"><a xlink:href="https://jackaudio.org/" xlink:title="JACK">
-<polygon fill="orange" stroke="black" points="1428.07,-296.54 1428.07,-311.46 1406.36,-322 1375.64,-322 1353.93,-311.46 1353.93,-296.54 1375.64,-286 1406.36,-286 1428.07,-296.54"/>
-<text text-anchor="middle" x="1391" y="-300.3" font-family="Times,serif" font-size="14.00">JACK</text>
+<polygon fill="orange" stroke="black" points="1319.35,-296.54 1319.35,-311.46 1298.64,-322 1269.36,-322 1248.65,-311.46 1248.65,-296.54 1269.36,-286 1298.64,-286 1319.35,-296.54"/>
+<text text-anchor="middle" x="1284" y="-300.3" font-family="Times,serif" font-size="14.00">JACK</text>
</a>
</g>
</g>
<!-- portaudio->JACK -->
<g id="edge2" class="edge">
<title>portaudio->JACK</title>
-<path fill="none" stroke="black" d="M703.38,-506.41C732.39,-486.8 785.05,-453.12 834,-432 940.67,-385.97 971.85,-385.36 1085,-359 1175.64,-337.89 1283.08,-320.71 1343.52,-311.75"/>
-<polygon fill="black" stroke="black" points="1344.14,-315.19 1353.52,-310.27 1343.12,-308.27 1344.14,-315.19"/>
+<path fill="none" stroke="black" d="M638.97,-506.19C662.36,-486.34 705.21,-452.41 747,-432 849.47,-381.95 882.11,-385.66 993,-359 1079.07,-338.3 1181.08,-321.01 1238.6,-311.91"/>
+<polygon fill="black" stroke="black" points="1239.47,-315.31 1248.81,-310.31 1238.39,-308.4 1239.47,-315.31"/>
</g>
<!-- sndio -->
<g id="node10" class="node">
<title>sndio</title>
<g id="a_node10"><a xlink:href="http://www.sndio.org/" xlink:title="sndio">
-<polygon fill="orange" stroke="black" points="727.89,-296.54 727.89,-311.46 705.11,-322 672.89,-322 650.11,-311.46 650.11,-296.54 672.89,-286 705.11,-286 727.89,-296.54"/>
-<text text-anchor="middle" x="689" y="-300.3" font-family="Times,serif" font-size="14.00">sndio</text>
+<polygon fill="orange" stroke="black" points="634.22,-296.54 634.22,-311.46 615.35,-322 588.65,-322 569.78,-311.46 569.78,-296.54 588.65,-286 615.35,-286 634.22,-296.54"/>
+<text text-anchor="middle" x="602" y="-300.3" font-family="Times,serif" font-size="14.00">sndio</text>
</a>
</g>
</g>
<!-- portaudio->sndio -->
<g id="edge3" class="edge">
<title>portaudio->sndio</title>
-<path fill="none" stroke="black" d="M682.9,-505C684,-494.38 685.31,-480.41 686,-468 688.65,-420.27 689.11,-364.56 689.11,-332.19"/>
-<polygon fill="black" stroke="black" points="692.61,-332.14 689.1,-322.15 685.61,-332.15 692.61,-332.14"/>
+<path fill="none" stroke="black" d="M619.51,-504.97C616.23,-467.51 608.36,-377.68 604.39,-332.26"/>
+<polygon fill="black" stroke="black" points="607.87,-331.91 603.51,-322.25 600.9,-332.52 607.87,-331.91"/>
</g>
<!-- ALSA->sound card -->
<g id="edge49" class="edge">
<title>ALSA->sound card</title>
-<path fill="none" stroke="green" d="M1065.7,-439.19C1040.1,-428.54 1007,-408.82 1007,-378 1007,-378 1007,-378 1007,-157 1007,-137.33 1011.67,-115.63 1016.26,-99.09"/>
-<polygon fill="green" stroke="green" points="1019.75,-99.61 1019.21,-89.03 1013.03,-97.64 1019.75,-99.61"/>
+<path fill="none" stroke="green" d="M968.82,-438.92C944.62,-427.98 913,-407.96 913,-378 913,-378 913,-378 913,-157 913,-137.46 916.89,-115.76 920.71,-99.18"/>
+<polygon fill="green" stroke="green" points="924.2,-99.64 923.17,-89.1 917.4,-97.99 924.2,-99.64"/>
</g>
<!-- ALSA->JACK -->
<g id="edge51" class="edge">
<title>ALSA->JACK</title>
-<path fill="none" stroke="black" d="M1138.71,-441.38C1156.47,-438.35 1177.2,-434.9 1196,-432 1252.78,-423.23 1275.94,-445.47 1324,-414 1339.61,-403.78 1363.59,-360.03 1378.23,-331.16"/>
-<polygon fill="black" stroke="black" points="1137.89,-437.97 1128.63,-443.11 1139.08,-444.87 1137.89,-437.97"/>
-<polygon fill="black" stroke="black" points="1381.46,-332.52 1382.81,-322.01 1375.2,-329.38 1381.46,-332.52"/>
+<path fill="none" stroke="black" d="M1037.56,-441.22C1054.16,-438.2 1073.46,-434.8 1091,-432 1147.73,-422.94 1171.15,-445.79 1219,-414 1234.42,-403.76 1257.59,-360.01 1271.71,-331.15"/>
+<polygon fill="black" stroke="black" points="1036.82,-437.79 1027.62,-443.04 1038.08,-444.68 1036.82,-437.79"/>
+<polygon fill="black" stroke="black" points="1274.93,-332.53 1276.12,-322 1268.62,-329.49 1274.93,-332.53"/>
</g>
<!-- PulseAudio -->
<g id="node11" class="node">
<title>PulseAudio</title>
<g id="a_node11"><a xlink:href="https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/" xlink:title="PulseAudio">
-<polygon fill="orange" stroke="black" points="1229.57,-369.54 1229.57,-384.46 1189.99,-395 1134.01,-395 1094.43,-384.46 1094.43,-369.54 1134.01,-359 1189.99,-359 1229.57,-369.54"/>
-<text text-anchor="middle" x="1162" y="-373.3" font-family="Times,serif" font-size="14.00">PulseAudio</text>
+<polygon fill="orange" stroke="black" points="1114.06,-369.54 1114.06,-384.46 1081.22,-395 1034.78,-395 1001.94,-384.46 1001.94,-369.54 1034.78,-359 1081.22,-359 1114.06,-369.54"/>
+<text text-anchor="middle" x="1058" y="-373.3" font-family="Times,serif" font-size="14.00">PulseAudio</text>
</a>
</g>
</g>
<!-- ALSA->PulseAudio -->
<g id="edge50" class="edge">
<title>ALSA->PulseAudio</title>
-<path fill="none" stroke="black" d="M1105.34,-431.81C1112.8,-422.92 1123.01,-411.91 1132.76,-402.17"/>
-<polygon fill="black" stroke="black" points="1135.36,-404.52 1140.07,-395.03 1130.47,-399.51 1135.36,-404.52"/>
+<path fill="none" stroke="black" d="M1005.13,-431.81C1011.9,-423 1021.21,-412.13 1030.19,-402.46"/>
+<polygon fill="black" stroke="black" points="1032.91,-404.68 1037.27,-395.03 1027.84,-399.86 1032.91,-404.68"/>
</g>
<!-- bluez -->
<g id="node12" class="node">
<title>bluez</title>
-<polygon fill="yellow" stroke="black" points="1183.06,-158 1161.03,-176 1116.97,-176 1094.94,-158 1116.97,-140 1161.03,-140 1183.06,-158"/>
-<text text-anchor="middle" x="1139" y="-154.3" font-family="Times,serif" font-size="14.00">BlueZ</text>
+<polygon fill="yellow" stroke="black" points="1070.55,-158 1051.77,-176 1014.23,-176 995.45,-158 1014.23,-140 1051.77,-140 1070.55,-158"/>
+<text text-anchor="middle" x="1033" y="-154.3" font-family="Times,serif" font-size="14.00">BlueZ</text>
</g>
<!-- ALSA->bluez -->
<g id="edge16" class="edge">
<title>ALSA->bluez</title>
-<path fill="none" stroke="black" d="M1089.32,-431.86C1079.37,-399.21 1061.25,-326.06 1077,-267 1085.19,-236.29 1104.42,-205.24 1119.3,-184.36"/>
-<polygon fill="black" stroke="black" points="1122.29,-186.21 1125.38,-176.07 1116.64,-182.07 1122.29,-186.21"/>
+<path fill="none" stroke="black" d="M990.4,-431.93C980.56,-399.38 962.51,-326.41 977,-267 984.36,-236.84 1001.73,-205.7 1015.19,-184.66"/>
+<polygon fill="black" stroke="black" points="1018.12,-186.57 1020.68,-176.29 1012.27,-182.73 1018.12,-186.57"/>
</g>
<!-- PipeWire -->
<g id="node15" class="node">
<title>PipeWire</title>
<g id="a_node15"><a xlink:href="http://pipewire.org/" xlink:title="PipeWire">
-<polygon fill="orange" stroke="black" points="1406.87,-223.54 1406.87,-238.46 1372.97,-249 1325.03,-249 1291.13,-238.46 1291.13,-223.54 1325.03,-213 1372.97,-213 1406.87,-223.54"/>
-<text text-anchor="middle" x="1349" y="-227.3" font-family="Times,serif" font-size="14.00">PipeWire</text>
+<polygon fill="orange" stroke="black" points="1281.68,-223.54 1281.68,-238.46 1253.75,-249 1214.25,-249 1186.32,-238.46 1186.32,-223.54 1214.25,-213 1253.75,-213 1281.68,-223.54"/>
+<text text-anchor="middle" x="1234" y="-227.3" font-family="Times,serif" font-size="14.00">PipeWire</text>
</a>
</g>
</g>
<!-- ALSA->PipeWire -->
<g id="edge11" class="edge">
<title>ALSA->PipeWire</title>
-<path fill="none" stroke="black" d="M1137.26,-439.52C1167.59,-431.27 1208.36,-417.1 1239,-395 1288.1,-359.58 1321.96,-295.02 1338.13,-258.69"/>
-<polygon fill="black" stroke="black" points="1136.19,-436.18 1127.4,-442.1 1137.96,-442.95 1136.19,-436.18"/>
-<polygon fill="black" stroke="black" points="1341.46,-259.8 1342.22,-249.23 1335.04,-257.02 1341.46,-259.8"/>
+<path fill="none" stroke="black" d="M1034.59,-437.26C1060.91,-428.17 1095.79,-413.93 1123,-395 1159.65,-369.51 1166.91,-358.92 1192,-322 1205.56,-302.05 1216.84,-277.04 1224.28,-258.45"/>
+<polygon fill="black" stroke="black" points="1033.32,-433.99 1024.95,-440.49 1035.55,-440.63 1033.32,-433.99"/>
+<polygon fill="black" stroke="black" points="1227.55,-259.7 1227.91,-249.11 1221.03,-257.16 1227.55,-259.7"/>
</g>
<!-- JACK->PipeWire -->
<g id="edge12" class="edge">
<title>JACK->PipeWire</title>
-<path fill="none" stroke="black" d="M1375.57,-276.92C1371.87,-270.67 1367.93,-264 1364.24,-257.76"/>
-<polygon fill="black" stroke="black" points="1372.73,-278.99 1380.83,-285.81 1378.75,-275.42 1372.73,-278.99"/>
-<polygon fill="black" stroke="black" points="1367.18,-255.85 1359.07,-249.03 1361.15,-259.42 1367.18,-255.85"/>
+<path fill="none" stroke="black" d="M1266.04,-277.5C1261.46,-271 1256.54,-264.01 1251.96,-257.5"/>
+<polygon fill="black" stroke="black" points="1263.28,-279.65 1271.9,-285.81 1269,-275.62 1263.28,-279.65"/>
+<polygon fill="black" stroke="black" points="1254.61,-255.19 1245.99,-249.03 1248.89,-259.22 1254.61,-255.19"/>
</g>
<!-- sndio->ALSA -->
<g id="edge32" class="edge">
<title>sndio->ALSA</title>
-<path fill="none" stroke="black" d="M728.21,-319.25C786.06,-340.24 897.73,-380.58 993,-414 1013.91,-421.34 1037.29,-429.37 1056.39,-435.89"/>
-<polygon fill="black" stroke="black" points="729.32,-315.93 718.73,-315.81 726.93,-322.51 729.32,-315.93"/>
-<polygon fill="black" stroke="black" points="1055.35,-439.23 1065.95,-439.15 1057.61,-432.61 1055.35,-439.23"/>
+<path fill="none" stroke="black" d="M638.06,-318.31C693.92,-338.9 804.78,-379.71 899,-414 918.73,-421.18 940.74,-429.13 958.8,-435.63"/>
+<polygon fill="black" stroke="black" points="639.2,-315 628.61,-314.82 636.78,-321.56 639.2,-315"/>
+<polygon fill="black" stroke="black" points="957.8,-438.99 968.39,-439.08 960.17,-432.4 957.8,-438.99"/>
</g>
<!-- PulseAudio->sound card -->
<g id="edge5" class="edge">
<title>PulseAudio->sound card</title>
-<path fill="none" stroke="green" d="M1154.24,-358.78C1131.4,-308.1 1064.28,-159.16 1036.87,-98.33"/>
-<polygon fill="green" stroke="green" points="1039.97,-96.71 1032.67,-89.03 1033.59,-99.58 1039.97,-96.71"/>
+<path fill="none" stroke="green" d="M1050.64,-358.78C1028.96,-308.1 965.27,-159.16 939.26,-98.33"/>
+<polygon fill="green" stroke="green" points="942.43,-96.84 935.28,-89.03 935.99,-99.6 942.43,-96.84"/>
</g>
<!-- PulseAudio->ALSA -->
<g id="edge4" class="edge">
<title>PulseAudio->ALSA</title>
-<path fill="none" stroke="black" d="M1151.51,-395.37C1143.92,-404.4 1133.55,-415.56 1123.71,-425.36"/>
-<polygon fill="black" stroke="black" points="1121.07,-423.05 1116.34,-432.53 1125.95,-428.07 1121.07,-423.05"/>
+<path fill="none" stroke="black" d="M1048.73,-395.37C1041.85,-404.31 1032.39,-415.34 1023.32,-425.07"/>
+<polygon fill="black" stroke="black" points="1020.56,-422.89 1016.18,-432.53 1025.62,-427.72 1020.56,-422.89"/>
</g>
<!-- PulseAudio->JACK -->
<g id="edge6" class="edge">
<title>PulseAudio->JACK</title>
-<path fill="none" stroke="black" d="M1213.03,-365.05C1239.78,-358.85 1272.94,-350.46 1302,-341 1319.72,-335.23 1338.94,-327.64 1354.96,-320.91"/>
-<polygon fill="black" stroke="black" points="1356.66,-323.99 1364.49,-316.86 1353.91,-317.55 1356.66,-323.99"/>
+<path fill="none" stroke="black" d="M1103.87,-366.22C1131.19,-359.96 1166.4,-351.12 1197,-341 1214.48,-335.22 1233.42,-327.56 1249.15,-320.79"/>
+<polygon fill="black" stroke="black" points="1250.72,-323.92 1258.49,-316.71 1247.92,-317.5 1250.72,-323.92"/>
</g>
<!-- PulseAudio->sndio -->
<g id="edge33" class="edge">
<title>PulseAudio->sndio</title>
-<path fill="none" stroke="black" d="M1103.05,-367.15C1008.6,-352.97 825.11,-325.43 737.64,-312.3"/>
-<polygon fill="black" stroke="black" points="738.12,-308.83 727.71,-310.81 737.08,-315.76 738.12,-308.83"/>
+<path fill="none" stroke="black" d="M1006.58,-367.99C915.69,-353.84 728.33,-324.67 644.35,-311.59"/>
+<polygon fill="black" stroke="black" points="644.81,-308.12 634.39,-310.04 643.74,-315.04 644.81,-308.12"/>
</g>
<!-- PulseAudio->bluez -->
<g id="edge7" class="edge">
<title>PulseAudio->bluez</title>
-<path fill="none" stroke="black" d="M1160.2,-358.97C1156.22,-321.51 1146.7,-231.68 1141.89,-186.26"/>
-<polygon fill="black" stroke="black" points="1145.36,-185.82 1140.83,-176.25 1138.4,-186.56 1145.36,-185.82"/>
+<path fill="none" stroke="black" d="M1056.04,-358.97C1051.72,-321.51 1041.37,-231.68 1036.14,-186.26"/>
+<polygon fill="black" stroke="black" points="1039.61,-185.78 1034.99,-176.25 1032.65,-186.58 1039.61,-185.78"/>
</g>
<!-- ofono -->
<g id="node13" class="node">
<title>ofono</title>
-<polygon fill="yellow" stroke="black" points="1260.05,-304 1239.03,-322 1196.97,-322 1175.95,-304 1196.97,-286 1239.03,-286 1260.05,-304"/>
-<text text-anchor="middle" x="1218" y="-300.3" font-family="Times,serif" font-size="14.00">ofono</text>
+<polygon fill="yellow" stroke="black" points="1155.05,-304 1137.02,-322 1100.98,-322 1082.95,-304 1100.98,-286 1137.02,-286 1155.05,-304"/>
+<text text-anchor="middle" x="1119" y="-300.3" font-family="Times,serif" font-size="14.00">ofono</text>
</g>
<!-- PulseAudio->ofono -->
<g id="edge8" class="edge">
<title>PulseAudio->ofono</title>
-<path fill="none" stroke="black" d="M1185.96,-358.8C1192.08,-353.59 1198.26,-347.51 1203,-341 1205.1,-338.12 1206.96,-334.91 1208.61,-331.61"/>
-<polygon fill="black" stroke="black" points="1211.86,-332.91 1212.66,-322.35 1205.45,-330.11 1211.86,-332.91"/>
+<path fill="none" stroke="black" d="M1085.15,-359.77C1092.33,-354.48 1099.58,-348.12 1105,-341 1107.18,-338.14 1109.06,-334.9 1110.67,-331.56"/>
+<polygon fill="black" stroke="black" points="1113.98,-332.72 1114.52,-322.13 1107.5,-330.07 1113.98,-332.72"/>
</g>
<!-- PulseAudio->PipeWire -->
<g id="edge10" class="edge">
<title>PulseAudio->PipeWire</title>
-<path fill="none" stroke="black" d="M1209.45,-357.51C1229.06,-348.53 1251.31,-336.52 1269,-322 1292.98,-302.31 1291.12,-289.95 1312,-267 1315.25,-263.43 1318.8,-259.79 1322.37,-256.27"/>
-<polygon fill="black" stroke="black" points="1207.78,-354.42 1200.06,-361.67 1210.62,-360.82 1207.78,-354.42"/>
-<polygon fill="black" stroke="black" points="1324.86,-258.73 1329.64,-249.28 1320.01,-253.69 1324.86,-258.73"/>
+<path fill="none" stroke="black" d="M1102.48,-358.62C1122.51,-349.52 1145.72,-337.1 1164,-322 1164.79,-321.35 1194,-283.68 1214.43,-257.29"/>
+<polygon fill="black" stroke="black" points="1100.97,-355.46 1093.23,-362.7 1103.79,-361.87 1100.97,-355.46"/>
+<polygon fill="black" stroke="black" points="1217.36,-259.23 1220.71,-249.18 1211.82,-254.95 1217.36,-259.23"/>
</g>
<!-- bluez->bluetooth -->
<g id="edge17" class="edge">
<title>bluez->bluetooth</title>
-<path fill="none" stroke="green" d="M1139,-139.8C1139,-128.16 1139,-112.55 1139,-99.24"/>
-<polygon fill="green" stroke="green" points="1142.5,-99.18 1139,-89.18 1135.5,-99.18 1142.5,-99.18"/>
+<path fill="none" stroke="green" d="M1033,-139.8C1033,-128.16 1033,-112.55 1033,-99.24"/>
+<polygon fill="green" stroke="green" points="1036.5,-99.18 1033,-89.18 1029.5,-99.18 1036.5,-99.18"/>
</g>
<!-- ofono->phone modem -->
<g id="edge15" class="edge">
<title>ofono->phone modem</title>
-<path fill="none" stroke="green" d="M1228.93,-285.74C1241.03,-267.1 1261.54,-236.88 1282,-213 1297.34,-195.1 1310.83,-197.72 1320,-176 1330.64,-150.79 1321.57,-119.89 1312.06,-98.35"/>
-<polygon fill="green" stroke="green" points="1315.16,-96.72 1307.72,-89.17 1308.83,-99.7 1315.16,-96.72"/>
+<path fill="none" stroke="green" d="M1130.9,-285.93C1146.47,-262.45 1172.95,-218.28 1183,-176 1189.16,-150.07 1183.41,-119.87 1177.33,-98.71"/>
+<polygon fill="green" stroke="green" points="1180.66,-97.64 1174.37,-89.11 1173.97,-99.7 1180.66,-97.64"/>
</g>
<!-- X11 bell -->
<g id="node14" class="node">
<title>X11 bell</title>
-<ellipse fill="lightgrey" stroke="black" cx="982" cy="-450" rx="48.99" ry="18"/>
-<text text-anchor="middle" x="982" y="-446.3" font-family="Times,serif" font-size="14.00">X11 bell</text>
+<ellipse fill="lightgrey" stroke="black" cx="888" cy="-450" rx="41.69" ry="18"/>
+<text text-anchor="middle" x="888" y="-446.3" font-family="Times,serif" font-size="14.00">X11 bell</text>
</g>
<!-- X11 bell->PulseAudio -->
<g id="edge9" class="edge">
<title>X11 bell->PulseAudio</title>
-<path fill="none" stroke="black" d="M1014.18,-436.31C1042.31,-425.21 1083.52,-408.96 1115.28,-396.43"/>
-<polygon fill="black" stroke="black" points="1116.8,-399.59 1124.81,-392.67 1114.23,-393.08 1116.8,-399.59"/>
+<path fill="none" stroke="black" d="M916.84,-436.96C943.76,-425.71 984.3,-408.78 1015.03,-395.94"/>
+<polygon fill="black" stroke="black" points="1016.76,-399.02 1024.64,-391.93 1014.06,-392.56 1016.76,-399.02"/>
</g>
<!-- PipeWire->bluez -->
<g id="edge13" class="edge">
<title>PipeWire->bluez</title>
-<path fill="none" stroke="black" d="M1310.97,-217.14C1273.76,-204.56 1217.28,-185.46 1179.3,-172.63"/>
-<polygon fill="black" stroke="black" points="1180.18,-169.23 1169.59,-169.34 1177.94,-175.86 1180.18,-169.23"/>
+<path fill="none" stroke="black" d="M1199.77,-218.28C1168.31,-207.46 1120.44,-190.87 1079,-176 1075.87,-174.88 1072.63,-173.7 1069.39,-172.52"/>
+<polygon fill="black" stroke="black" points="1070.32,-169.13 1059.73,-168.97 1067.91,-175.7 1070.32,-169.13"/>
</g>
<!-- gstreamer -->
<g id="node16" class="node">
<title>gstreamer</title>
-<ellipse fill="lightgrey" stroke="black" cx="1726" cy="-523" rx="59.29" ry="18"/>
-<text text-anchor="middle" x="1726" y="-519.3" font-family="Times,serif" font-size="14.00">gstreamer</text>
+<ellipse fill="lightgrey" stroke="black" cx="1567" cy="-523" rx="46.29" ry="18"/>
+<text text-anchor="middle" x="1567" y="-519.3" font-family="Times,serif" font-size="14.00">gstreamer</text>
</g>
<!-- gstreamer->ALSA -->
<g id="edge57" class="edge">
<title>gstreamer->ALSA</title>
-<path fill="none" stroke="black" d="M1675.94,-513.38C1658.29,-510.49 1638.29,-507.41 1620,-505 1443.96,-481.85 1233.61,-462.81 1141.76,-454.92"/>
-<polygon fill="black" stroke="black" points="1141.94,-451.42 1131.68,-454.05 1141.35,-458.39 1141.94,-451.42"/>
+<path fill="none" stroke="black" d="M1526.82,-514.03C1510.47,-510.96 1491.37,-507.57 1474,-505 1315.38,-481.57 1125.83,-462.91 1040.96,-455.05"/>
+<polygon fill="black" stroke="black" points="1041.17,-451.55 1030.89,-454.12 1040.53,-458.52 1041.17,-451.55"/>
</g>
<!-- gstreamer->JACK -->
<g id="edge58" class="edge">
<title>gstreamer->JACK</title>
-<path fill="none" stroke="black" d="M1727.44,-504.77C1729.46,-468.2 1728.43,-382.64 1680,-340 1645.11,-309.28 1511.14,-304.64 1438.5,-304.46"/>
-<polygon fill="black" stroke="black" points="1438.24,-300.96 1428.24,-304.46 1438.24,-307.96 1438.24,-300.96"/>
+<path fill="none" stroke="black" d="M1574.56,-505.15C1589.18,-469.68 1616.45,-386.73 1575,-340 1558.98,-321.94 1406.87,-311.43 1329.18,-307.19"/>
+<polygon fill="black" stroke="black" points="1329.36,-303.7 1319.19,-306.66 1328.99,-310.69 1329.36,-303.7"/>
</g>
<!-- gstreamer->sndio -->
<g id="edge34" class="edge">
<title>gstreamer->sndio</title>
-<path fill="none" stroke="black" d="M1695.88,-507.36C1627.81,-474.95 1456.2,-397.04 1304,-359 1098.21,-307.57 843.04,-303.39 737.84,-304.13"/>
-<polygon fill="black" stroke="black" points="737.8,-300.64 727.84,-304.22 737.87,-307.63 737.8,-300.64"/>
+<path fill="none" stroke="black" d="M1540.55,-508.15C1478.95,-476.51 1320.42,-398.61 1179,-359 1078.24,-330.78 760.29,-312.77 644.61,-307.01"/>
+<polygon fill="black" stroke="black" points="644.54,-303.5 634.38,-306.5 644.2,-310.49 644.54,-303.5"/>
</g>
<!-- gstreamer->PulseAudio -->
<g id="edge59" class="edge">
<title>gstreamer->PulseAudio</title>
-<path fill="none" stroke="black" d="M1679.48,-511.73C1633.65,-501.41 1561.72,-484.69 1500,-468 1418.43,-445.95 1399.72,-434.49 1318,-413 1287.14,-404.89 1252.54,-397 1223.79,-390.78"/>
-<polygon fill="black" stroke="black" points="1224.39,-387.33 1213.87,-388.65 1222.91,-394.17 1224.39,-387.33"/>
+<path fill="none" stroke="black" d="M1532.12,-511.09C1449.16,-485.17 1244.57,-421.41 1213,-413 1180.69,-404.39 1144.23,-396.09 1114.79,-389.73"/>
+<polygon fill="black" stroke="black" points="1115.2,-386.24 1104.69,-387.57 1113.73,-393.08 1115.2,-386.24"/>
</g>
<!-- gstreamer->PipeWire -->
<g id="edge14" class="edge">
<title>gstreamer->PipeWire</title>
-<path fill="none" stroke="black" d="M1732.05,-505.03C1736.58,-490.79 1742,-469.83 1742,-451 1742,-451 1742,-451 1742,-303 1742,-270.39 1529.77,-247.37 1417.23,-237.45"/>
-<polygon fill="black" stroke="black" points="1417.25,-233.94 1406.99,-236.56 1416.65,-240.91 1417.25,-233.94"/>
+<path fill="none" stroke="black" d="M1594.26,-508.19C1613.92,-496.08 1637,-476.45 1637,-451 1637,-451 1637,-451 1637,-303 1637,-268.38 1403.38,-245.32 1291.89,-236.29"/>
+<polygon fill="black" stroke="black" points="1292.06,-232.79 1281.81,-235.48 1291.5,-239.77 1292.06,-232.79"/>
</g>
<!-- sox -->
<g id="node17" class="node">
<title>sox</title>
<g id="a_node17"><a xlink:href="http://sox.sourceforge.net/Docs/Features" xlink:title="sox">
-<ellipse fill="lightgrey" stroke="black" cx="546" cy="-596" rx="27" ry="18"/>
-<text text-anchor="middle" x="546" y="-592.3" font-family="Times,serif" font-size="14.00">sox</text>
+<ellipse fill="lightgrey" stroke="black" cx="498" cy="-596" rx="27" ry="18"/>
+<text text-anchor="middle" x="498" y="-592.3" font-family="Times,serif" font-size="14.00">sox</text>
</a>
</g>
</g>
<!-- sox->ALSA -->
<g id="edge20" class="edge">
<title>sox->ALSA</title>
-<path fill="none" stroke="black" d="M572.81,-593.22C647.52,-587.91 856.63,-570.74 918,-541 938.94,-530.85 936.34,-517.45 956,-505 973.12,-494.16 1021.28,-476.38 1056.12,-464.21"/>
-<polygon fill="black" stroke="black" points="1057.7,-467.36 1066,-460.78 1055.41,-460.75 1057.7,-467.36"/>
+<path fill="none" stroke="black" d="M525.12,-595.76C583.41,-596.33 723.65,-591.81 826,-541 846.84,-530.66 844.46,-517.62 864,-505 893.18,-486.16 930.01,-471.75 957.35,-462.58"/>
+<polygon fill="black" stroke="black" points="958.55,-465.87 966.96,-459.44 956.37,-459.22 958.55,-465.87"/>
</g>
<!-- sox->sndio -->
<g id="edge21" class="edge">
<title>sox->sndio</title>
-<path fill="none" stroke="black" d="M518.92,-594.36C408.75,-591.42 0,-576.93 0,-524 0,-524 0,-524 0,-376 0,-311.64 481.83,-305.27 639.63,-304.91"/>
-<polygon fill="black" stroke="black" points="639.99,-308.41 649.98,-304.89 639.98,-301.41 639.99,-308.41"/>
+<path fill="none" stroke="black" d="M470.87,-594.02C366.95,-589.9 0,-571.98 0,-524 0,-524 0,-524 0,-376 0,-319.59 422.3,-307.87 559.5,-305.55"/>
+<polygon fill="black" stroke="black" points="559.69,-309.04 569.63,-305.38 559.58,-302.04 559.69,-309.04"/>
</g>
<!-- sox->PulseAudio -->
<g id="edge19" class="edge">
<title>sox->PulseAudio</title>
-<path fill="none" stroke="black" d="M559.79,-569.94C572.09,-549.75 591.86,-522 616,-505 626.61,-497.52 825.46,-435.35 838,-432 878.34,-421.24 888.9,-420.34 930,-413 983.68,-403.41 1044.67,-394.28 1090.63,-387.75"/>
-<polygon fill="black" stroke="black" points="556.73,-568.23 554.67,-578.62 562.77,-571.78 556.73,-568.23"/>
-<polygon fill="black" stroke="black" points="1091.38,-391.18 1100.79,-386.32 1090.4,-384.25 1091.38,-391.18"/>
+<path fill="none" stroke="black" d="M512.08,-570.34C524.55,-550.38 544.42,-522.76 568,-505 602.81,-478.78 708.35,-444.8 750,-432 787.83,-420.37 798.1,-420.32 837,-413 889.95,-403.03 950.39,-393.59 994.67,-387.03"/>
+<polygon fill="black" stroke="black" points="509.07,-568.54 506.88,-578.91 515.06,-572.17 509.07,-568.54"/>
+<polygon fill="black" stroke="black" points="995.33,-390.48 1004.71,-385.55 994.31,-383.55 995.33,-390.48"/>
</g>
<!-- libao -->
<g id="node18" class="node">
<title>libao</title>
<g id="a_node18"><a xlink:href="https://www.xiph.org/ao/" xlink:title="libao">
-<ellipse fill="lightgrey" stroke="black" cx="498" cy="-523" rx="33.29" ry="18"/>
-<text text-anchor="middle" x="498" y="-519.3" font-family="Times,serif" font-size="14.00">libao</text>
+<ellipse fill="lightgrey" stroke="black" cx="454" cy="-523" rx="28.7" ry="18"/>
+<text text-anchor="middle" x="454" y="-519.3" font-family="Times,serif" font-size="14.00">libao</text>
</a>
</g>
</g>
<!-- sox->libao -->
<g id="edge18" class="edge">
<title>sox->libao</title>
-<path fill="none" stroke="black" d="M535.35,-579.24C529.28,-570.27 521.55,-558.83 514.69,-548.69"/>
-<polygon fill="black" stroke="black" points="517.46,-546.53 508.96,-540.21 511.66,-550.45 517.46,-546.53"/>
+<path fill="none" stroke="black" d="M488.02,-578.89C482.5,-569.99 475.54,-558.75 469.35,-548.77"/>
+<polygon fill="black" stroke="black" points="472.19,-546.7 463.94,-540.05 466.24,-550.39 472.19,-546.7"/>
</g>
<!-- libao->ALSA -->
<g id="edge22" class="edge">
<title>libao->ALSA</title>
-<path fill="none" stroke="black" d="M529.49,-516.97C553.22,-513.3 586.6,-508.4 616,-505 709.95,-494.14 947.18,-486.18 1040,-468 1045.46,-466.93 1051.14,-465.52 1056.69,-463.98"/>
-<polygon fill="black" stroke="black" points="1057.87,-467.28 1066.46,-461.08 1055.88,-460.57 1057.87,-467.28"/>
+<path fill="none" stroke="black" d="M481.59,-517.5C504.65,-513.83 538.41,-508.68 568,-505 732.44,-484.55 776.42,-500.05 939,-468 945.32,-466.75 951.94,-465.11 958.34,-463.33"/>
+<polygon fill="black" stroke="black" points="959.53,-466.63 968.14,-460.46 957.56,-459.91 959.53,-466.63"/>
</g>
<!-- libao->sndio -->
<g id="edge26" class="edge">
<title>libao->sndio</title>
-<path fill="none" stroke="black" d="M498.12,-504.74C499,-485.57 502.77,-454.36 517,-432 550.22,-379.82 613.07,-341.76 652.9,-321.55"/>
-<polygon fill="black" stroke="black" points="654.6,-324.61 662.01,-317.03 651.5,-318.34 654.6,-324.61"/>
+<path fill="none" stroke="black" d="M448.01,-505.23C442.36,-486.49 436.21,-455.67 447,-432 471.34,-378.6 530.91,-340.42 568.71,-320.6"/>
+<polygon fill="black" stroke="black" points="570.5,-323.62 577.82,-315.96 567.32,-317.38 570.5,-323.62"/>
</g>
<!-- libao->PulseAudio -->
<g id="edge23" class="edge">
<title>libao->PulseAudio</title>
-<path fill="none" stroke="black" d="M524.78,-512.11C531.37,-509.73 538.43,-507.23 545,-505 608.81,-483.31 768.04,-426.87 834,-413 918.49,-395.23 1017.22,-386.25 1084.12,-381.87"/>
-<polygon fill="black" stroke="black" points="1084.4,-385.36 1094.16,-381.24 1083.96,-378.38 1084.4,-385.36"/>
+<path fill="none" stroke="black" d="M476.12,-511.56C524.09,-489.41 641.75,-437.72 746,-413 829.27,-393.26 927.76,-384.56 991.48,-380.8"/>
+<polygon fill="black" stroke="black" points="992,-384.27 1001.79,-380.21 991.6,-377.28 992,-384.27"/>
</g>
<!-- NAS -->
<g id="node19" class="node">
<title>NAS</title>
<g id="a_node19"><a xlink:href="http://radscan.com/nas.html" xlink:title="Network Audio System/Server">
-<polygon fill="orange" stroke="black" points="469.83,-442.54 469.83,-457.46 373.86,-468 238.14,-468 142.17,-457.46 142.17,-442.54 238.14,-432 373.86,-432 469.83,-442.54"/>
-<text text-anchor="middle" x="306" y="-446.3" font-family="Times,serif" font-size="14.00">Network Audio System/Server</text>
+<polygon fill="orange" stroke="black" points="400.39,-442.54 400.39,-457.46 324.59,-468 217.41,-468 141.61,-457.46 141.61,-442.54 217.41,-432 324.59,-432 400.39,-442.54"/>
+<text text-anchor="middle" x="271" y="-446.3" font-family="Times,serif" font-size="14.00">Network Audio System/Server</text>
</a>
</g>
</g>
<!-- libao->NAS -->
<g id="edge24" class="edge">
<title>libao->NAS</title>
-<path fill="none" stroke="black" d="M471.3,-512.13C443.02,-501.67 397.56,-484.86 361.46,-471.51"/>
-<polygon fill="black" stroke="black" points="362.62,-468.21 352.03,-468.02 360.19,-474.77 362.62,-468.21"/>
+<path fill="none" stroke="black" d="M430.08,-512.72C403.42,-502.38 359.48,-485.33 324.52,-471.77"/>
+<polygon fill="black" stroke="black" points="325.51,-468.4 314.92,-468.04 322.98,-474.92 325.51,-468.4"/>
</g>
<!-- RoarAudio -->
<g id="node20" class="node">
<title>RoarAudio</title>
<g id="a_node20"><a xlink:href="http://roaraudio.keep-cool.org/" xlink:title="RoarAudio">
-<ellipse fill="lightgrey" stroke="black" cx="585" cy="-450" rx="59.29" ry="18"/>
-<text text-anchor="middle" x="585" y="-446.3" font-family="Times,serif" font-size="14.00">RoarAudio</text>
+<ellipse fill="lightgrey" stroke="black" cx="506" cy="-450" rx="50.09" ry="18"/>
+<text text-anchor="middle" x="506" y="-446.3" font-family="Times,serif" font-size="14.00">RoarAudio</text>
</a>
</g>
</g>
<!-- libao->RoarAudio -->
<g id="edge25" class="edge">
<title>libao->RoarAudio</title>
-<path fill="none" stroke="black" d="M515.61,-507.63C527.53,-497.9 543.54,-484.84 557.17,-473.71"/>
-<polygon fill="black" stroke="black" points="559.76,-476.11 565.3,-467.08 555.34,-470.69 559.76,-476.11"/>
+<path fill="none" stroke="black" d="M465.54,-506.24C472.09,-497.31 480.42,-485.92 487.83,-475.81"/>
+<polygon fill="black" stroke="black" points="490.68,-477.84 493.77,-467.7 485.03,-473.7 490.68,-477.84"/>
</g>
<!-- RoarAudio->sndio -->
<g id="edge27" class="edge">
<title>RoarAudio->sndio</title>
-<path fill="none" stroke="black" d="M594.71,-432.12C607.63,-410.14 631.7,-370.88 656,-340 658.81,-336.43 661.91,-332.8 665.05,-329.3"/>
-<polygon fill="black" stroke="black" points="667.68,-331.61 671.91,-321.9 662.55,-326.85 667.68,-331.61"/>
+<path fill="none" stroke="black" d="M514.26,-432C525.34,-409.9 546.29,-370.5 569,-340 571.96,-336.02 575.32,-332.01 578.74,-328.19"/>
+<polygon fill="black" stroke="black" points="581.47,-330.39 585.73,-320.69 576.35,-325.62 581.47,-330.39"/>
</g>
<!-- RoarAudio->PulseAudio -->
<g id="edge28" class="edge">
<title>RoarAudio->PulseAudio</title>
-<path fill="none" stroke="black" d="M632.98,-439.29C673.8,-431.3 734.05,-420.18 787,-413 889.26,-399.14 1007.97,-389.07 1083.97,-383.38"/>
-<polygon fill="black" stroke="black" points="1084.69,-386.84 1094.4,-382.61 1084.17,-379.85 1084.69,-386.84"/>
+<path fill="none" stroke="black" d="M547.99,-440.07C586.97,-432.05 646.69,-420.41 699,-413 800.64,-398.59 919.33,-388.29 991.54,-382.73"/>
+<polygon fill="black" stroke="black" points="992.15,-386.2 1001.85,-381.95 991.62,-379.22 992.15,-386.2"/>
</g>
<!-- libcanberra -->
<g id="node21" class="node">
<title>libcanberra</title>
<g id="a_node21"><a xlink:href="http://git.0pointer.net/libcanberra.git/tree/src/driver-order.c" xlink:title="libcanberra">
-<ellipse fill="lightgrey" stroke="black" cx="1577" cy="-596" rx="63.89" ry="18"/>
-<text text-anchor="middle" x="1577" y="-592.3" font-family="Times,serif" font-size="14.00">libcanberra</text>
+<ellipse fill="lightgrey" stroke="black" cx="1419" cy="-596" rx="50.09" ry="18"/>
+<text text-anchor="middle" x="1419" y="-592.3" font-family="Times,serif" font-size="14.00">libcanberra</text>
</a>
</g>
</g>
<!-- libcanberra->ALSA -->
<g id="edge30" class="edge">
<title>libcanberra->ALSA</title>
-<path fill="none" stroke="black" d="M1513.25,-594.22C1407.27,-591.76 1200.7,-581.72 1142,-541 1120.69,-526.22 1108.35,-498.69 1101.71,-477.96"/>
-<polygon fill="black" stroke="black" points="1104.99,-476.73 1098.81,-468.13 1098.28,-478.71 1104.99,-476.73"/>
+<path fill="none" stroke="black" d="M1369.13,-593.72C1278.08,-590.46 1089.54,-579.17 1038,-541 1017.61,-525.9 1006.79,-498.43 1001.26,-477.79"/>
+<polygon fill="black" stroke="black" points="1004.65,-476.91 998.9,-468.01 997.85,-478.55 1004.65,-476.91"/>
</g>
<!-- libcanberra->PulseAudio -->
<g id="edge29" class="edge">
<title>libcanberra->PulseAudio</title>
-<path fill="none" stroke="black" d="M1567.16,-578.21C1554.21,-557.65 1529.48,-523.32 1499,-505 1467.54,-486.08 1370.35,-485.35 1338,-468 1317.5,-457.01 1317.87,-446.89 1300,-432 1289,-422.84 1286.78,-419.44 1274,-413 1257.27,-404.57 1238.11,-397.67 1220.42,-392.31"/>
-<polygon fill="black" stroke="black" points="1221.34,-388.93 1210.76,-389.48 1219.38,-395.65 1221.34,-388.93"/>
+<path fill="none" stroke="black" d="M1411.32,-578.15C1401.23,-557.87 1381.62,-524.14 1355,-505 1309,-471.91 1281.99,-496.47 1233,-468 1212.89,-456.31 1212.87,-446.89 1195,-432 1184,-422.84 1181.77,-419.46 1169,-413 1151.19,-403.99 1130.61,-396.73 1112.04,-391.2"/>
+<polygon fill="black" stroke="black" points="1112.82,-387.78 1102.25,-388.39 1110.89,-394.51 1112.82,-387.78"/>
</g>
<!-- libcanberra->gstreamer -->
<g id="edge31" class="edge">
<title>libcanberra->gstreamer</title>
-<path fill="none" stroke="black" d="M1608.24,-580.12C1631.01,-569.26 1662.04,-554.48 1686.53,-542.81"/>
-<polygon fill="black" stroke="black" points="1688.05,-545.96 1695.57,-538.5 1685.04,-539.64 1688.05,-545.96"/>
+<path fill="none" stroke="black" d="M1447.89,-581.14C1471.16,-569.98 1504.06,-554.19 1529.39,-542.04"/>
+<polygon fill="black" stroke="black" points="1531.19,-545.06 1538.69,-537.58 1528.16,-538.75 1531.19,-545.06"/>
</g>
<!-- OpenAL -->
<g id="node22" class="node">
<title>OpenAL</title>
<g id="a_node22"><a xlink:href="https://www.openal-soft.org/" xlink:title="OpenAL">
-<ellipse fill="lightgrey" stroke="black" cx="925" cy="-596" rx="47.39" ry="18"/>
-<text text-anchor="middle" x="925" y="-592.3" font-family="Times,serif" font-size="14.00">OpenAL</text>
+<ellipse fill="lightgrey" stroke="black" cx="837" cy="-596" rx="41.69" ry="18"/>
+<text text-anchor="middle" x="837" y="-592.3" font-family="Times,serif" font-size="14.00">OpenAL</text>
</a>
</g>
</g>
<!-- OpenAL->portaudio -->
<g id="edge38" class="edge">
<title>OpenAL->portaudio</title>
-<path fill="none" stroke="black" d="M880.48,-589.51C844.78,-584.29 793.75,-574.97 751,-560 738.91,-555.77 726.28,-549.81 715.14,-543.95"/>
-<polygon fill="black" stroke="black" points="716.63,-540.78 706.17,-539.1 713.3,-546.93 716.63,-540.78"/>
+<path fill="none" stroke="black" d="M797.59,-590.04C764.93,-585.06 717.77,-575.79 679,-560 669.12,-555.98 659.02,-550.33 650.07,-544.71"/>
+<polygon fill="black" stroke="black" points="651.85,-541.68 641.56,-539.14 648.02,-547.54 651.85,-541.68"/>
</g>
<!-- OpenAL->ALSA -->
<g id="edge36" class="edge">
<title>OpenAL->ALSA</title>
-<path fill="none" stroke="black" d="M968.42,-588.56C999.53,-581.78 1040.31,-568.12 1066,-541 1082.17,-523.93 1089.33,-497.78 1092.49,-478.06"/>
-<polygon fill="black" stroke="black" points="1095.96,-478.52 1093.84,-468.14 1089.02,-477.58 1095.96,-478.52"/>
+<path fill="none" stroke="black" d="M873.77,-587.33C901.37,-579.83 938.33,-565.8 962,-541 978.52,-523.69 987.2,-497.57 991.64,-477.92"/>
+<polygon fill="black" stroke="black" points="995.08,-478.54 993.64,-468.04 988.22,-477.15 995.08,-478.54"/>
</g>
<!-- OpenAL->JACK -->
<g id="edge39" class="edge">
<title>OpenAL->JACK</title>
-<path fill="none" stroke="black" d="M972.48,-594.95C1122.04,-594.3 1576.13,-588.41 1620,-541 1668.19,-488.93 1652.02,-469.76 1542,-359 1514.26,-331.08 1471.11,-317.52 1438.03,-310.99"/>
-<polygon fill="black" stroke="black" points="1438.58,-307.53 1428.11,-309.18 1437.32,-314.42 1438.58,-307.53"/>
+<path fill="none" stroke="black" d="M878.62,-594.66C1013.73,-593.12 1433.73,-584.83 1474,-541 1507.59,-504.45 1511.14,-483.37 1431,-359 1409.38,-325.45 1364.21,-312.62 1329.61,-307.78"/>
+<polygon fill="black" stroke="black" points="1329.6,-304.25 1319.25,-306.52 1328.76,-311.2 1329.6,-304.25"/>
</g>
<!-- OpenAL->sndio -->
<g id="edge40" class="edge">
<title>OpenAL->sndio</title>
-<path fill="none" stroke="black" d="M877.84,-593.88C799.74,-590.91 648.89,-580.14 616,-541 605.71,-528.75 609.88,-519.78 616,-505 624.9,-483.51 641.82,-488.39 653,-468 665.69,-444.85 678.55,-372.07 684.91,-332.05"/>
-<polygon fill="black" stroke="black" points="688.37,-332.58 686.46,-322.16 681.46,-331.5 688.37,-332.58"/>
+<path fill="none" stroke="black" d="M795.88,-592.91C727.8,-588.49 596.34,-575.59 568,-541 554.91,-525.02 582.9,-390.52 595.87,-332.01"/>
+<polygon fill="black" stroke="black" points="599.33,-332.54 598.1,-322.01 592.5,-331.01 599.33,-332.54"/>
</g>
<!-- OpenAL->PulseAudio -->
<g id="edge35" class="edge">
<title>OpenAL->PulseAudio</title>
-<path fill="none" stroke="black" d="M879.25,-590.78C846.75,-585.11 805.24,-571.88 784,-541 774.93,-527.82 776.54,-519.15 784,-505 797.56,-479.26 814.19,-484.72 838,-468 860.41,-452.26 863.32,-443.87 888,-432 950.04,-402.17 1027.54,-388.82 1084.27,-382.84"/>
-<polygon fill="black" stroke="black" points="1084.65,-386.32 1094.26,-381.84 1083.96,-379.35 1084.65,-386.32"/>
+<path fill="none" stroke="black" d="M797.8,-589.57C768.69,-583.26 730.89,-569.74 712,-541 703.21,-527.63 705.32,-519.54 712,-505 717.2,-493.69 785.99,-437.81 797,-432 858.16,-399.73 936.86,-386.73 991.78,-381.5"/>
+<polygon fill="black" stroke="black" points="992.1,-384.99 1001.75,-380.62 991.48,-378.02 992.1,-384.99"/>
</g>
<!-- SoundIO -->
<g id="node23" class="node">
<title>SoundIO</title>
<g id="a_node23"><a xlink:href="http://libsound.io/" xlink:title="SoundIO">
-<ellipse fill="lightgrey" stroke="black" cx="1202" cy="-523" rx="50.89" ry="18"/>
-<text text-anchor="middle" x="1202" y="-519.3" font-family="Times,serif" font-size="14.00">SoundIO</text>
+<ellipse fill="lightgrey" stroke="black" cx="1089" cy="-523" rx="42.49" ry="18"/>
+<text text-anchor="middle" x="1089" y="-519.3" font-family="Times,serif" font-size="14.00">SoundIO</text>
</a>
</g>
</g>
<!-- OpenAL->SoundIO -->
<g id="edge37" class="edge">
<title>OpenAL->SoundIO</title>
-<path fill="none" stroke="black" d="M967.93,-588.06C1003.39,-581.93 1054.87,-572.09 1099,-560 1119.13,-554.49 1141.02,-547.05 1159.42,-540.36"/>
-<polygon fill="black" stroke="black" points="1160.79,-543.59 1168.97,-536.85 1158.37,-537.02 1160.79,-543.59"/>
+<path fill="none" stroke="black" d="M874.75,-588.27C907.02,-582.12 954.5,-572.17 995,-560 1013.61,-554.41 1033.78,-546.88 1050.65,-540.16"/>
+<polygon fill="black" stroke="black" points="1052.21,-543.31 1060.17,-536.31 1049.59,-536.82 1052.21,-543.31"/>
</g>
<!-- SoundIO->ALSA -->
<g id="edge43" class="edge">
<title>SoundIO->ALSA</title>
-<path fill="none" stroke="black" d="M1179.03,-506.86C1169.7,-500.71 1158.83,-493.52 1149,-487 1141.64,-482.12 1133.73,-476.85 1126.3,-471.9"/>
-<polygon fill="black" stroke="black" points="1128.11,-468.9 1117.84,-466.26 1124.22,-474.72 1128.11,-468.9"/>
+<path fill="none" stroke="black" d="M1069.28,-506.94C1056.44,-497.14 1039.47,-484.19 1025.1,-473.22"/>
+<polygon fill="black" stroke="black" points="1027.06,-470.31 1016.99,-467.02 1022.81,-475.87 1027.06,-470.31"/>
</g>
<!-- SoundIO->JACK -->
<g id="edge41" class="edge">
<title>SoundIO->JACK</title>
-<path fill="none" stroke="black" d="M1230.25,-507.89C1267.33,-487.89 1331.83,-447.8 1367,-395 1379.5,-376.24 1385.5,-351.22 1388.38,-332.32"/>
-<polygon fill="black" stroke="black" points="1391.87,-332.64 1389.71,-322.27 1384.93,-331.72 1391.87,-332.64"/>
+<path fill="none" stroke="black" d="M1116.57,-509.24C1154.97,-490.02 1224,-449.96 1261,-395 1273.56,-376.35 1279.26,-351.32 1281.85,-332.39"/>
+<polygon fill="black" stroke="black" points="1285.34,-332.65 1283.01,-322.32 1278.39,-331.85 1285.34,-332.65"/>
</g>
<!-- SoundIO->PulseAudio -->
<g id="edge42" class="edge">
<title>SoundIO->PulseAudio</title>
-<path fill="none" stroke="black" d="M1197.25,-504.92C1190.4,-480.23 1177.65,-434.35 1169.51,-405.04"/>
-<polygon fill="black" stroke="black" points="1172.79,-403.76 1166.74,-395.06 1166.04,-405.63 1172.79,-403.76"/>
+<path fill="none" stroke="black" d="M1085.32,-504.92C1080.01,-480.23 1070.13,-434.35 1063.82,-405.04"/>
+<polygon fill="black" stroke="black" points="1067.2,-404.1 1061.67,-395.06 1060.36,-405.57 1067.2,-404.1"/>
</g>
<!-- RtAudio -->
<g id="node24" class="node">
<title>RtAudio</title>
<g id="a_node24"><a xlink:href="https://www.music.mcgill.ca/~gary/rtaudio/apinotes.html" xlink:title="RtAudio">
-<ellipse fill="lightgrey" stroke="black" cx="1319" cy="-523" rx="48.19" ry="18"/>
-<text text-anchor="middle" x="1319" y="-519.3" font-family="Times,serif" font-size="14.00">RtAudio</text>
+<ellipse fill="lightgrey" stroke="black" cx="1190" cy="-523" rx="40.89" ry="18"/>
+<text text-anchor="middle" x="1190" y="-519.3" font-family="Times,serif" font-size="14.00">RtAudio</text>
</a>
</g>
</g>
<!-- RtAudio->ALSA -->
<g id="edge44" class="edge">
<title>RtAudio->ALSA</title>
-<path fill="none" stroke="black" d="M1283.51,-510.75C1242.85,-497.86 1176.42,-476.81 1134.25,-463.44"/>
-<polygon fill="black" stroke="black" points="1135.19,-460.07 1124.6,-460.38 1133.08,-466.74 1135.19,-460.07"/>
+<path fill="none" stroke="black" d="M1159.26,-510.75C1125.08,-498.24 1069.87,-478.04 1033.26,-464.64"/>
+<polygon fill="black" stroke="black" points="1034.05,-461.2 1023.46,-461.05 1031.65,-467.77 1034.05,-461.2"/>
</g>
<!-- RtAudio->JACK -->
<g id="edge45" class="edge">
<title>RtAudio->JACK</title>
-<path fill="none" stroke="black" d="M1341.83,-506.92C1367.42,-488.5 1407.47,-454.71 1424,-414 1435.24,-386.31 1421.7,-353.31 1408.72,-330.93"/>
-<polygon fill="black" stroke="black" points="1411.66,-329.03 1403.46,-322.33 1405.69,-332.68 1411.66,-329.03"/>
+<path fill="none" stroke="black" d="M1216.23,-509.15C1247.41,-492.24 1297.87,-459.26 1319,-414 1331.84,-386.5 1316.91,-353.01 1302.76,-330.48"/>
+<polygon fill="black" stroke="black" points="1305.67,-328.53 1297.24,-322.12 1299.83,-332.39 1305.67,-328.53"/>
</g>
<!-- RtAudio->PulseAudio -->
<g id="edge46" class="edge">
<title>RtAudio->PulseAudio</title>
-<path fill="none" stroke="black" d="M1301.6,-506.04C1274.22,-480.93 1220.89,-432.01 1188.65,-402.45"/>
-<polygon fill="black" stroke="black" points="1190.68,-399.55 1180.94,-395.37 1185.95,-404.71 1190.68,-399.55"/>
+<path fill="none" stroke="black" d="M1175.37,-506.04C1152.45,-481.03 1107.89,-432.43 1080.76,-402.82"/>
+<polygon fill="black" stroke="black" points="1083.26,-400.38 1073.93,-395.37 1078.1,-405.11 1083.26,-400.38"/>
</g>
<!-- JUCE -->
<g id="node25" class="node">
<title>JUCE</title>
-<ellipse fill="lightgrey" stroke="black" cx="1421" cy="-523" rx="36" ry="18"/>
-<text text-anchor="middle" x="1421" y="-519.3" font-family="Times,serif" font-size="14.00">JUCE</text>
+<ellipse fill="lightgrey" stroke="black" cx="1281" cy="-523" rx="31.7" ry="18"/>
+<text text-anchor="middle" x="1281" y="-519.3" font-family="Times,serif" font-size="14.00">JUCE</text>
</g>
<!-- JUCE->ALSA -->
<g id="edge47" class="edge">
<title>JUCE->ALSA</title>
-<path fill="none" stroke="black" d="M1394.12,-510.99C1388.22,-508.81 1381.95,-506.68 1376,-505 1293.87,-481.78 1195.42,-465.41 1139.54,-457.15"/>
-<polygon fill="black" stroke="black" points="1140.02,-453.68 1129.61,-455.7 1139,-460.61 1140.02,-453.68"/>
+<path fill="none" stroke="black" d="M1256.54,-511.04C1251.16,-508.86 1245.44,-506.71 1240,-505 1170.66,-483.14 1087.54,-466.76 1038.4,-458.05"/>
+<polygon fill="black" stroke="black" points="1038.9,-454.59 1028.45,-456.31 1037.69,-461.48 1038.9,-454.59"/>
</g>
<!-- JUCE->JACK -->
<g id="edge48" class="edge">
<title>JUCE->JACK</title>
-<path fill="none" stroke="black" d="M1442.08,-508.42C1468.12,-489.74 1508.27,-453.78 1502,-413 1496.83,-379.38 1502.16,-364.92 1479,-340 1467.98,-328.14 1452.43,-320.23 1437.45,-314.98"/>
-<polygon fill="black" stroke="black" points="1438.34,-311.59 1427.75,-311.9 1436.22,-318.26 1438.34,-311.59"/>
+<path fill="none" stroke="black" d="M1303.21,-509.87C1331.68,-492.84 1379.43,-458.83 1397,-414 1409.57,-381.93 1397.54,-365.14 1374,-340 1362.14,-327.33 1345.15,-319.19 1329.13,-313.98"/>
+<polygon fill="black" stroke="black" points="1329.91,-310.56 1319.33,-311.1 1327.94,-317.28 1329.91,-310.56"/>
</g>
<!-- SDL2 -->
<g id="node26" class="node">
<title>SDL2</title>
<g id="a_node26"><a xlink:href="https://hg.libsdl.org/SDL/file/355a4f94a782" xlink:title="libSDL-2.0">
-<ellipse fill="lightgrey" stroke="black" cx="210" cy="-523" rx="59.59" ry="18"/>
-<text text-anchor="middle" x="210" y="-519.3" font-family="Times,serif" font-size="14.00">libSDL-2.0</text>
+<ellipse fill="lightgrey" stroke="black" cx="137" cy="-523" rx="50.89" ry="18"/>
+<text text-anchor="middle" x="137" y="-519.3" font-family="Times,serif" font-size="14.00">libSDL-2.0</text>
</a>
</g>
</g>
<!-- SDL2->ALSA -->
<g id="edge52" class="edge">
<title>SDL2->ALSA</title>
-<path fill="none" stroke="black" d="M267.65,-517.92C317.5,-514.42 391.5,-509.27 456,-505 585.75,-496.41 912.1,-491.48 1040,-468 1045.47,-467 1051.16,-465.63 1056.71,-464.1"/>
-<polygon fill="black" stroke="black" points="1057.89,-467.4 1066.49,-461.21 1055.91,-460.68 1057.89,-467.4"/>
+<path fill="none" stroke="black" d="M186.61,-518.97C355.83,-508.57 901.9,-474.7 939,-468 945.34,-466.86 951.97,-465.26 958.37,-463.5"/>
+<polygon fill="black" stroke="black" points="959.56,-466.8 968.18,-460.65 957.6,-460.08 959.56,-466.8"/>
</g>
<!-- SDL2->JACK -->
<g id="edge53" class="edge">
<title>SDL2->JACK</title>
-<path fill="none" stroke="black" d="M170.67,-509.4C151.97,-501.02 131.8,-487.82 123,-468 116.51,-453.38 112.25,-443.85 123,-432 208.95,-337.26 1141.95,-336.92 1269,-322 1293.68,-319.1 1321.09,-315.33 1343.67,-312.08"/>
-<polygon fill="black" stroke="black" points="1344.28,-315.53 1353.68,-310.63 1343.28,-308.6 1344.28,-315.53"/>
+<path fill="none" stroke="black" d="M125.86,-505.18C114.17,-485.24 99.84,-452.18 118,-432 196.19,-345.15 1048.02,-336.31 1164,-322 1188.72,-318.95 1216.24,-315.09 1238.68,-311.81"/>
+<polygon fill="black" stroke="black" points="1239.22,-315.27 1248.6,-310.36 1238.2,-308.35 1239.22,-315.27"/>
</g>
<!-- SDL2->sndio -->
<g id="edge56" class="edge">
<title>SDL2->sndio</title>
-<path fill="none" stroke="black" d="M154.62,-516.05C117.58,-510.8 73.59,-501.65 62,-487 46.83,-467.83 46.53,-450.92 62,-432 135.32,-342.34 505.35,-314.48 639.95,-307.23"/>
-<polygon fill="black" stroke="black" points="640.18,-310.72 649.98,-306.7 639.81,-303.73 640.18,-310.72"/>
+<path fill="none" stroke="black" d="M95.99,-512.35C82.85,-507.11 69.72,-499.12 62,-487 48.87,-466.38 46.82,-451.16 62,-432 124.26,-353.39 442.57,-318.63 559.14,-308.4"/>
+<polygon fill="black" stroke="black" points="559.8,-311.86 569.46,-307.52 559.2,-304.89 559.8,-311.86"/>
</g>
<!-- SDL2->PulseAudio -->
<g id="edge55" class="edge">
<title>SDL2->PulseAudio</title>
-<path fill="none" stroke="black" d="M176.75,-507.85C160.4,-498.98 142.27,-485.82 133,-468 125.62,-453.81 121.99,-443.61 133,-432 149.34,-414.78 846.54,-388.97 1083.86,-380.67"/>
-<polygon fill="black" stroke="black" points="1084.26,-384.16 1094.13,-380.31 1084.02,-377.17 1084.26,-384.16"/>
+<path fill="none" stroke="black" d="M129.77,-504.9C122.51,-484.68 114.76,-451.34 133,-432 147.74,-416.38 782.11,-389.22 991.62,-380.66"/>
+<polygon fill="black" stroke="black" points="992.02,-384.15 1001.87,-380.25 991.73,-377.16 992.02,-384.15"/>
</g>
<!-- SDL2->NAS -->
<g id="edge54" class="edge">
<title>SDL2->NAS</title>
-<path fill="none" stroke="black" d="M231.78,-505.89C244.43,-496.54 260.57,-484.6 274.57,-474.24"/>
-<polygon fill="black" stroke="black" points="277,-476.8 282.96,-468.04 272.84,-471.17 277,-476.8"/>
+<path fill="none" stroke="black" d="M164.12,-507.63C182.99,-497.63 208.49,-484.12 229.86,-472.8"/>
+<polygon fill="black" stroke="black" points="231.53,-475.87 238.73,-468.1 228.25,-469.69 231.53,-475.87"/>
</g>
<!-- phonon -->
<g id="node27" class="node">
<title>phonon</title>
-<ellipse fill="lightgrey" stroke="black" cx="1726" cy="-596" rx="44.69" ry="18"/>
-<text text-anchor="middle" x="1726" y="-592.3" font-family="Times,serif" font-size="14.00">phonon</text>
+<ellipse fill="lightgrey" stroke="black" cx="1567" cy="-596" rx="37.09" ry="18"/>
+<text text-anchor="middle" x="1567" y="-592.3" font-family="Times,serif" font-size="14.00">phonon</text>
</g>
<!-- phonon->PulseAudio -->
<g id="edge62" class="edge">
<title>phonon->PulseAudio</title>
-<path fill="none" stroke="black" d="M1753.01,-581.46C1768.08,-572.3 1785.48,-558.65 1794,-541 1800.96,-526.59 1804.05,-517.45 1794,-505 1725.33,-419.92 1393.33,-390.73 1239.97,-381.68"/>
-<polygon fill="black" stroke="black" points="1239.87,-378.17 1229.68,-381.09 1239.47,-385.16 1239.87,-378.17"/>
+<path fill="none" stroke="black" d="M1586.69,-580.67C1609.41,-562.38 1641.31,-530.11 1622,-505 1561.76,-426.69 1260.62,-393.72 1124.73,-382.66"/>
+<polygon fill="black" stroke="black" points="1124.69,-379.15 1114.45,-381.84 1124.14,-386.13 1124.69,-379.15"/>
</g>
<!-- phonon->gstreamer -->
<g id="edge60" class="edge">
<title>phonon->gstreamer</title>
-<path fill="none" stroke="black" d="M1726,-577.81C1726,-569.79 1726,-560.05 1726,-551.07"/>
-<polygon fill="black" stroke="black" points="1729.5,-551.03 1726,-541.03 1722.5,-551.03 1729.5,-551.03"/>
+<path fill="none" stroke="black" d="M1567,-577.81C1567,-569.79 1567,-560.05 1567,-551.07"/>
+<polygon fill="black" stroke="black" points="1570.5,-551.03 1567,-541.03 1563.5,-551.03 1570.5,-551.03"/>
</g>
<!-- VLC -->
<g id="node28" class="node">
<title>VLC</title>
<g id="a_node28"><a xlink:href="https://code.videolan.org/videolan/vlc/-/tree/master/modules/audio_output" xlink:title="VLC">
-<ellipse fill="lightgrey" stroke="black" cx="1581" cy="-523" rx="29.8" ry="18"/>
-<text text-anchor="middle" x="1581" y="-519.3" font-family="Times,serif" font-size="14.00">VLC</text>
+<ellipse fill="lightgrey" stroke="black" cx="1436" cy="-523" rx="28.7" ry="18"/>
+<text text-anchor="middle" x="1436" y="-519.3" font-family="Times,serif" font-size="14.00">VLC</text>
</a>
</g>
</g>
<!-- phonon->VLC -->
<g id="edge61" class="edge">
<title>phonon->VLC</title>
-<path fill="none" stroke="black" d="M1698.73,-581.65C1674.28,-569.68 1638.42,-552.12 1612.71,-539.53"/>
-<polygon fill="black" stroke="black" points="1613.92,-536.22 1603.4,-534.97 1610.84,-542.51 1613.92,-536.22"/>
+<path fill="none" stroke="black" d="M1543.28,-582.14C1521.54,-570.36 1489.26,-552.86 1465.79,-540.14"/>
+<polygon fill="black" stroke="black" points="1467.41,-537.04 1456.95,-535.36 1464.08,-543.2 1467.41,-537.04"/>
</g>
<!-- VLC->ALSA -->
<g id="edge68" class="edge">
<title>VLC->ALSA</title>
-<path fill="none" stroke="black" d="M1552.17,-517.72C1528.92,-514.27 1495.35,-509.31 1466,-505 1348.08,-487.7 1209.05,-467.52 1139.43,-457.43"/>
-<polygon fill="black" stroke="black" points="1139.67,-453.93 1129.27,-455.96 1138.67,-460.86 1139.67,-453.93"/>
+<path fill="none" stroke="black" d="M1408.48,-517.56C1334.01,-505.54 1128.15,-472.32 1038.57,-457.87"/>
+<polygon fill="black" stroke="black" points="1038.92,-454.38 1028.49,-456.24 1037.8,-461.29 1038.92,-454.38"/>
</g>
<!-- VLC->JACK -->
<g id="edge69" class="edge">
<title>VLC->JACK</title>
-<path fill="none" stroke="black" d="M1578.56,-504.97C1572.2,-467.61 1551.35,-378.71 1493,-340 1475.94,-328.68 1454.84,-320.65 1436.27,-315.16"/>
-<polygon fill="black" stroke="black" points="1437.12,-311.76 1426.54,-312.44 1435.23,-318.5 1437.12,-311.76"/>
+<path fill="none" stroke="black" d="M1436.99,-504.57C1437.99,-473.31 1436.5,-406.56 1410,-359 1393.99,-330.27 1358.54,-316.82 1329.31,-310.53"/>
+<polygon fill="black" stroke="black" points="1329.76,-307.05 1319.28,-308.59 1328.43,-313.92 1329.76,-307.05"/>
</g>
<!-- VLC->sndio -->
<g id="edge71" class="edge">
<title>VLC->sndio</title>
-<path fill="none" stroke="black" d="M1561.16,-509.47C1510.07,-477.92 1368.9,-395.14 1239,-359 1145.23,-332.92 854.66,-314.26 738.11,-307.64"/>
-<polygon fill="black" stroke="black" points="738.22,-304.14 728.04,-307.08 737.83,-311.13 738.22,-304.14"/>
+<path fill="none" stroke="black" d="M1415.31,-510.36C1384.2,-492.93 1323.42,-459.21 1271,-432 1205.9,-398.21 1193.47,-379.32 1123,-359 950.7,-309.31 734.71,-304.13 644.57,-304.37"/>
+<polygon fill="black" stroke="black" points="644.45,-300.87 634.47,-304.43 644.48,-307.87 644.45,-300.87"/>
</g>
<!-- VLC->PulseAudio -->
<g id="edge70" class="edge">
<title>VLC->PulseAudio</title>
-<path fill="none" stroke="black" d="M1556.99,-512.08C1550.56,-509.6 1543.56,-507.06 1537,-505 1471.08,-484.28 1448.46,-497.55 1386,-468 1361.89,-456.6 1360.53,-446.27 1338,-432 1322.72,-422.32 1318.9,-419.46 1302,-413 1277.63,-403.68 1249.91,-396.15 1225.61,-390.5"/>
-<polygon fill="black" stroke="black" points="1226.31,-387.06 1215.78,-388.27 1224.76,-393.89 1226.31,-387.06"/>
+<path fill="none" stroke="black" d="M1412.44,-512.4C1406.15,-509.92 1399.34,-507.3 1393,-505 1343.71,-487.13 1327.47,-492.27 1281,-468 1257.36,-455.66 1255.53,-446.27 1233,-432 1217.72,-422.32 1213.89,-419.48 1197,-413 1171.05,-403.05 1141.29,-395.12 1115.98,-389.34"/>
+<polygon fill="black" stroke="black" points="1116.68,-385.91 1106.16,-387.16 1115.16,-392.75 1116.68,-385.91"/>
</g>
<!-- ClanLib -->
<g id="node29" class="node">
<title>ClanLib</title>
<g id="a_node29"><a xlink:href="https://github.com/sphair/ClanLib/tree/master/Sources/Sound/Platform/Linux" xlink:title="ClanLib">
-<ellipse fill="lightgrey" stroke="black" cx="1011" cy="-523" rx="46.29" ry="18"/>
-<text text-anchor="middle" x="1011" y="-519.3" font-family="Times,serif" font-size="14.00">ClanLib</text>
+<ellipse fill="lightgrey" stroke="black" cx="913" cy="-523" rx="39.79" ry="18"/>
+<text text-anchor="middle" x="913" y="-519.3" font-family="Times,serif" font-size="14.00">ClanLib</text>
</a>
</g>
</g>
<!-- ClanLib->ALSA -->
<g id="edge63" class="edge">
<title>ClanLib->ALSA</title>
-<path fill="none" stroke="black" d="M1029.64,-506.24C1040.59,-496.99 1054.63,-485.12 1066.89,-474.76"/>
-<polygon fill="black" stroke="black" points="1069.27,-477.33 1074.65,-468.2 1064.75,-471.99 1069.27,-477.33"/>
+<path fill="none" stroke="black" d="M931.01,-506.59C941.96,-497.23 956.17,-485.08 968.5,-474.52"/>
+<polygon fill="black" stroke="black" points="970.96,-477.03 976.28,-467.87 966.41,-471.71 970.96,-477.03"/>
</g>
<!-- allegro -->
<g id="node30" class="node">
<title>allegro</title>
<g id="a_node30"><a xlink:href="https://github.com/liballeg/allegro5/tree/master/addons/audio" xlink:title="allegro">
-<ellipse fill="lightgrey" stroke="black" cx="925" cy="-669" rx="42.79" ry="18"/>
-<text text-anchor="middle" x="925" y="-665.3" font-family="Times,serif" font-size="14.00">allegro</text>
+<ellipse fill="lightgrey" stroke="black" cx="837" cy="-669" rx="35.19" ry="18"/>
+<text text-anchor="middle" x="837" y="-665.3" font-family="Times,serif" font-size="14.00">allegro</text>
</a>
</g>
</g>
<!-- allegro->PulseAudio -->
<g id="edge65" class="edge">
<title>allegro->PulseAudio</title>
-<path fill="none" stroke="black" d="M966.68,-664.72C1082.42,-654.66 1403.38,-620.02 1466,-541 1475.94,-528.46 1476.01,-517.48 1466,-505 1454.18,-490.26 1317.04,-476.17 1300,-468 1276.9,-456.93 1276.13,-446.47 1255,-432 1238.1,-420.43 1218.61,-408.86 1201.85,-399.42"/>
-<polygon fill="black" stroke="black" points="1203.29,-396.21 1192.86,-394.4 1199.89,-402.33 1203.29,-396.21"/>
+<path fill="none" stroke="black" d="M871.13,-664.39C972.1,-652.92 1265.83,-613.78 1322,-541 1331.78,-528.33 1331.6,-517.8 1322,-505 1286.72,-457.97 1248.38,-492.63 1195,-468 1184.09,-462.96 1127.9,-425.37 1090.96,-400.39"/>
+<polygon fill="black" stroke="black" points="1092.72,-397.36 1082.48,-394.65 1088.8,-403.16 1092.72,-397.36"/>
</g>
<!-- allegro->OpenAL -->
<g id="edge64" class="edge">
<title>allegro->OpenAL</title>
-<path fill="none" stroke="black" d="M925,-650.81C925,-642.79 925,-633.05 925,-624.07"/>
-<polygon fill="black" stroke="black" points="928.5,-624.03 925,-614.03 921.5,-624.03 928.5,-624.03"/>
+<path fill="none" stroke="black" d="M837,-650.81C837,-642.79 837,-633.05 837,-624.07"/>
+<polygon fill="black" stroke="black" points="840.5,-624.03 837,-614.03 833.5,-624.03 840.5,-624.03"/>
</g>
<!-- allegro->SDL2 -->
<g id="edge66" class="edge">
<title>allegro->SDL2</title>
-<path fill="none" stroke="black" d="M901.84,-653.83C893.92,-649.63 884.82,-645.49 876,-643 718.97,-598.62 670.38,-644.06 510,-614 417.8,-596.72 313.62,-561.86 255.48,-540.96"/>
-<polygon fill="black" stroke="black" points="256.46,-537.59 245.87,-537.48 254.08,-544.17 256.46,-537.59"/>
+<path fill="none" stroke="black" d="M817.88,-653.83C811.27,-649.63 803.6,-645.5 796,-643 654.43,-596.54 608.64,-640.44 462,-614 360.21,-595.65 244.13,-559.76 181.96,-539.29"/>
+<polygon fill="black" stroke="black" points="182.69,-535.84 172.09,-536.01 180.49,-542.48 182.69,-535.84"/>
</g>
<!-- telepathy -->
<g id="node31" class="node">
<title>telepathy</title>
-<ellipse fill="lightgrey" stroke="black" cx="1256" cy="-158" rx="54.69" ry="18"/>
-<text text-anchor="middle" x="1256" y="-154.3" font-family="Times,serif" font-size="14.00">telepathy</text>
+<ellipse fill="lightgrey" stroke="black" cx="1131" cy="-158" rx="42.79" ry="18"/>
+<text text-anchor="middle" x="1131" y="-154.3" font-family="Times,serif" font-size="14.00">telepathy</text>
</g>
<!-- telepathy->phone modem -->
<g id="edge67" class="edge">
<title>telepathy->phone modem</title>
-<path fill="none" stroke="black" d="M1264.3,-140.21C1270.24,-128.18 1278.36,-111.75 1285.14,-98.03"/>
-<polygon fill="black" stroke="black" points="1288.28,-99.57 1289.58,-89.05 1282.01,-96.46 1288.28,-99.57"/>
-<text text-anchor="middle" x="1284" y="-110.8" font-family="Times,serif" font-size="14.00" fill="red">?</text>
+<path fill="none" stroke="black" d="M1138.31,-140.21C1143.5,-128.29 1150.56,-112.06 1156.5,-98.42"/>
+<polygon fill="black" stroke="black" points="1159.8,-99.62 1160.58,-89.05 1153.38,-96.82 1159.8,-99.62"/>
+<text text-anchor="middle" x="1155.5" y="-110.8" font-family="Times,serif" font-size="14.00" fill="red">?</text>
</g>
<!-- pcaudiolib -->
<g id="node32" class="node">
<title>pcaudiolib</title>
<g id="a_node32"><a xlink:href="https://github.com/espeak-ng/pcaudiolib" xlink:title="pcaudiolib">
-<ellipse fill="lightgrey" stroke="black" cx="851" cy="-523" rx="58.49" ry="18"/>
-<text text-anchor="middle" x="851" y="-519.3" font-family="Times,serif" font-size="14.00">pcaudiolib</text>
+<ellipse fill="lightgrey" stroke="black" cx="769" cy="-523" rx="48.19" ry="18"/>
+<text text-anchor="middle" x="769" y="-519.3" font-family="Times,serif" font-size="14.00">pcaudiolib</text>
</a>
</g>
</g>
<!-- pcaudiolib->ALSA -->
<g id="edge72" class="edge">
<title>pcaudiolib->ALSA</title>
-<path fill="none" stroke="black" d="M878.8,-506.93C893.37,-499.61 911.74,-491.27 929,-486 976.8,-471.39 991.34,-479.41 1040,-468 1045.35,-466.75 1050.94,-465.25 1056.42,-463.66"/>
-<polygon fill="black" stroke="black" points="1057.52,-466.99 1066.09,-460.76 1055.51,-460.28 1057.52,-466.99"/>
+<path fill="none" stroke="black" d="M792.78,-507.29C805.73,-499.88 822.27,-491.36 838,-486 881.16,-471.28 894.64,-478.53 939,-468 945.2,-466.53 951.72,-464.78 958.05,-462.97"/>
+<polygon fill="black" stroke="black" points="959.15,-466.29 967.76,-460.11 957.18,-459.58 959.15,-466.29"/>
</g>
<!-- pcaudiolib->PulseAudio -->
<g id="edge73" class="edge">
<title>pcaudiolib->PulseAudio</title>
-<path fill="none" stroke="black" d="M862.69,-505.05C879.11,-481.72 908.71,-441.51 924,-432 972.21,-402.03 1035.14,-388.64 1084.18,-382.68"/>
-<polygon fill="black" stroke="black" points="1084.88,-386.13 1094.42,-381.52 1084.09,-379.17 1084.88,-386.13"/>
+<path fill="none" stroke="black" d="M777.26,-504.91C788.08,-484.37 809.02,-450.4 837,-432 883.27,-401.57 945.15,-388.28 991.66,-382.47"/>
+<polygon fill="black" stroke="black" points="992.11,-385.95 1001.64,-381.31 991.3,-378.99 992.11,-385.95"/>
</g>
</g>
</svg>
diff --git a/images/linux-audio-output.png b/images/linux-audio-output.png
Binary files differ.
diff --git a/images/linux-audio-output.svg b/images/linux-audio-output.svg
@@ -1,64 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.47.1 (20210417.1919)
+<!-- Generated by graphviz version 5.0.1 (20220820.1526)
-->
<!-- Title: Linux Audio Output APIs (available code) Pages: 1 -->
-<svg width="2681pt" height="926pt"
- viewBox="0.00 0.00 2681.00 925.74" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="2543pt" height="926pt"
+ viewBox="0.00 0.00 2543.00 925.74" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 921.74)">
<title>Linux Audio Output APIs (available code)</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-921.74 2677,-921.74 2677,4 -4,4"/>
-<text text-anchor="middle" x="1336.5" y="-37.8" font-family="Times,serif" font-size="14.00">Linux Audio Output APIs (available code)</text>
-<text text-anchor="middle" x="1336.5" y="-22.8" font-family="Times,serif" font-size="14.00"> CC-BY 4.0 © 2020-2021 Haelwenn (lanodan) Monnier</text>
-<text text-anchor="middle" x="1336.5" y="-7.8" font-family="Times,serif" font-size="14.00"> https://hacktivis.me/articles/linux-audio-output</text>
+<polygon fill="white" stroke="none" points="-4,4 -4,-921.74 2539,-921.74 2539,4 -4,4"/>
+<text text-anchor="middle" x="1267.5" y="-37.8" font-family="Times,serif" font-size="14.00">Linux Audio Output APIs (available code)</text>
+<text text-anchor="middle" x="1267.5" y="-22.8" font-family="Times,serif" font-size="14.00"> CC-BY 4.0 © 2020-2021 Haelwenn (lanodan) Monnier</text>
+<text text-anchor="middle" x="1267.5" y="-7.8" font-family="Times,serif" font-size="14.00"> https://hacktivis.me/articles/linux-audio-output</text>
<g id="clust1" class="cluster">
<title>cluster_legend</title>
-<polygon fill="none" stroke="black" points="897,-834.74 897,-909.74 1213,-909.74 1213,-834.74 897,-834.74"/>
-<text text-anchor="middle" x="1055" y="-894.54" font-family="Times,serif" font-size="14.00">Legend</text>
+<polygon fill="none" stroke="black" points="882,-834.74 882,-909.74 1145,-909.74 1145,-834.74 882,-834.74"/>
+<text text-anchor="middle" x="1013.5" y="-894.54" font-family="Times,serif" font-size="14.00">Legend</text>
</g>
<!-- server -->
<g id="node1" class="node">
<title>server</title>
-<polygon fill="orange" stroke="black" points="1204.73,-853.28 1204.73,-868.2 1179.11,-878.74 1142.89,-878.74 1117.27,-868.2 1117.27,-853.28 1142.89,-842.74 1179.11,-842.74 1204.73,-853.28"/>
-<text text-anchor="middle" x="1161" y="-857.04" font-family="Times,serif" font-size="14.00">server</text>
+<polygon fill="orange" stroke="black" points="1137.35,-853.28 1137.35,-868.2 1116.64,-878.74 1087.36,-878.74 1066.65,-868.2 1066.65,-853.28 1087.36,-842.74 1116.64,-842.74 1137.35,-853.28"/>
+<text text-anchor="middle" x="1102" y="-857.04" font-family="Times,serif" font-size="14.00">server</text>
</g>
<!-- driver -->
<g id="node2" class="node">
<title>driver</title>
-<polygon fill="yellow" stroke="black" points="1099.06,-860.74 1076.53,-878.74 1031.47,-878.74 1008.94,-860.74 1031.47,-842.74 1076.53,-842.74 1099.06,-860.74"/>
-<text text-anchor="middle" x="1054" y="-857.04" font-family="Times,serif" font-size="14.00">driver</text>
+<polygon fill="yellow" stroke="black" points="1048.55,-860.74 1030.27,-878.74 993.73,-878.74 975.45,-860.74 993.73,-842.74 1030.27,-842.74 1048.55,-860.74"/>
+<text text-anchor="middle" x="1012" y="-857.04" font-family="Times,serif" font-size="14.00">driver</text>
</g>
<!-- hardware -->
<g id="node3" class="node">
<title>hardware</title>
-<polygon fill="cyan" stroke="black" points="990.5,-878.74 905.5,-878.74 905.5,-842.74 990.5,-842.74 990.5,-878.74"/>
-<text text-anchor="middle" x="948" y="-857.04" font-family="Times,serif" font-size="14.00">hardware</text>
+<polygon fill="cyan" stroke="black" points="957.5,-878.74 890.5,-878.74 890.5,-842.74 957.5,-842.74 957.5,-878.74"/>
+<text text-anchor="middle" x="924" y="-857.04" font-family="Times,serif" font-size="14.00">hardware</text>
</g>
<!-- sound card -->
<g id="node4" class="node">
<title>sound card</title>
-<polygon fill="cyan" stroke="black" points="1674.5,-89 1579.5,-89 1579.5,-53 1674.5,-53 1674.5,-89"/>
-<text text-anchor="middle" x="1627" y="-67.3" font-family="Times,serif" font-size="14.00">sound card</text>
+<polygon fill="cyan" stroke="black" points="1485,-89 1409,-89 1409,-53 1485,-53 1485,-89"/>
+<text text-anchor="middle" x="1447" y="-67.3" font-family="Times,serif" font-size="14.00">sound card</text>
</g>
<!-- phone modem -->
<g id="node5" class="node">
<title>phone modem</title>
-<polygon fill="cyan" stroke="black" points="2566.5,-89 2449.5,-89 2449.5,-53 2566.5,-53 2566.5,-89"/>
-<text text-anchor="middle" x="2508" y="-67.3" font-family="Times,serif" font-size="14.00">phone modem</text>
+<polygon fill="cyan" stroke="black" points="2403.5,-89 2308.5,-89 2308.5,-53 2403.5,-53 2403.5,-89"/>
+<text text-anchor="middle" x="2356" y="-67.3" font-family="Times,serif" font-size="14.00">phone modem</text>
</g>
<!-- bluetooth -->
<g id="node6" class="node">
<title>bluetooth</title>
-<polygon fill="cyan" stroke="black" points="2070.5,-89 1985.5,-89 1985.5,-53 2070.5,-53 2070.5,-89"/>
-<text text-anchor="middle" x="2028" y="-67.3" font-family="Times,serif" font-size="14.00">bluetooth</text>
+<polygon fill="cyan" stroke="black" points="1871,-89 1803,-89 1803,-53 1871,-53 1871,-89"/>
+<text text-anchor="middle" x="1837" y="-67.3" font-family="Times,serif" font-size="14.00">bluetooth</text>
</g>
<!-- portaudio -->
<g id="node7" class="node">
<title>portaudio</title>
<g id="a_node7"><a xlink:href="https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/" xlink:title="portaudio">
-<ellipse fill="lightgrey" stroke="black" cx="1426" cy="-714.74" rx="55.79" ry="18"/>
-<text text-anchor="middle" x="1426" y="-711.04" font-family="Times,serif" font-size="14.00">portaudio</text>
+<ellipse fill="lightgrey" stroke="black" cx="1338" cy="-714.74" rx="44.39" ry="18"/>
+<text text-anchor="middle" x="1338" y="-711.04" font-family="Times,serif" font-size="14.00">portaudio</text>
</a>
</g>
</g>
@@ -66,903 +66,903 @@
<g id="node8" class="node">
<title>ALSA</title>
<g id="a_node8"><a xlink:href="https://alsa-project.org/wiki/Asoundrc#Plugins" xlink:title="ALSA">
-<polygon fill="yellow" stroke="black" points="1830.05,-632.87 1809.53,-650.87 1768.47,-650.87 1747.95,-632.87 1768.47,-614.87 1809.53,-614.87 1830.05,-632.87"/>
-<text text-anchor="middle" x="1789" y="-629.17" font-family="Times,serif" font-size="14.00">ALSA</text>
+<polygon fill="yellow" stroke="black" points="1699.05,-632.87 1679.53,-650.87 1640.47,-650.87 1620.95,-632.87 1640.47,-614.87 1679.53,-614.87 1699.05,-632.87"/>
+<text text-anchor="middle" x="1660" y="-629.17" font-family="Times,serif" font-size="14.00">ALSA</text>
</a>
</g>
</g>
<!-- portaudio->ALSA -->
<g id="edge1" class="edge">
<title>portaudio->ALSA</title>
-<path fill="none" stroke="black" d="M1466.73,-702.23C1474.73,-700.21 1483.1,-698.27 1491,-696.74 1553.02,-684.72 1570.12,-691.46 1632,-678.74 1672.97,-670.32 1718.86,-656.7 1750.39,-646.68"/>
-<polygon fill="black" stroke="black" points="1751.65,-649.95 1760.1,-643.56 1749.51,-643.28 1751.65,-649.95"/>
+<path fill="none" stroke="black" d="M1370.58,-702.47C1377.29,-700.38 1384.33,-698.36 1391,-696.74 1438.29,-685.28 1451.49,-689.29 1499,-678.74 1541.3,-669.35 1589.04,-655.64 1621.47,-645.86"/>
+<polygon fill="black" stroke="black" points="1622.89,-649.08 1631.44,-642.83 1620.85,-642.39 1622.89,-649.08"/>
</g>
<!-- JACK -->
<g id="node9" class="node">
<title>JACK</title>
<g id="a_node9"><a xlink:href="https://jackaudio.org/" xlink:title="JACK">
-<polygon fill="orange" stroke="black" points="2068.07,-529.54 2068.07,-544.46 2046.36,-555 2015.64,-555 1993.93,-544.46 1993.93,-529.54 2015.64,-519 2046.36,-519 2068.07,-529.54"/>
-<text text-anchor="middle" x="2031" y="-533.3" font-family="Times,serif" font-size="14.00">JACK</text>
+<polygon fill="orange" stroke="black" points="1940.35,-529.54 1940.35,-544.46 1919.64,-555 1890.36,-555 1869.65,-544.46 1869.65,-529.54 1890.36,-519 1919.64,-519 1940.35,-529.54"/>
+<text text-anchor="middle" x="1905" y="-533.3" font-family="Times,serif" font-size="14.00">JACK</text>
</a>
</g>
</g>
<!-- portaudio->JACK -->
<g id="edge2" class="edge">
<title>portaudio->JACK</title>
-<path fill="none" stroke="black" d="M1462.42,-700.97C1538.94,-674.17 1711.63,-613.88 1739,-606 1825.12,-581.22 1927.47,-559.02 1985.27,-547.13"/>
-<polygon fill="black" stroke="black" points="1986.09,-550.53 1995.19,-545.1 1984.69,-543.68 1986.09,-550.53"/>
+<path fill="none" stroke="black" d="M1366.7,-700.84C1416.04,-679.02 1520.48,-634.45 1612,-606 1698.09,-579.24 1801.31,-557.65 1859.41,-546.42"/>
+<polygon fill="black" stroke="black" points="1860.21,-549.83 1869.37,-544.52 1858.89,-542.96 1860.21,-549.83"/>
</g>
<!-- OSS -->
<g id="node10" class="node">
<title>OSS</title>
-<polygon fill="yellow" stroke="black" points="1527.05,-464 1509.52,-482 1474.48,-482 1456.95,-464 1474.48,-446 1509.52,-446 1527.05,-464"/>
-<text text-anchor="middle" x="1492" y="-460.3" font-family="Times,serif" font-size="14.00">OSS</text>
+<polygon fill="yellow" stroke="black" points="1403.54,-464 1388.27,-482 1357.73,-482 1342.46,-464 1357.73,-446 1388.27,-446 1403.54,-464"/>
+<text text-anchor="middle" x="1373" y="-460.3" font-family="Times,serif" font-size="14.00">OSS</text>
</g>
<!-- portaudio->OSS -->
<g id="edge3" class="edge">
<title>portaudio->OSS</title>
-<path fill="none" stroke="black" d="M1430.54,-696.64C1441.82,-654.13 1471.2,-543.38 1484.85,-491.96"/>
-<polygon fill="black" stroke="black" points="1488.25,-492.78 1487.43,-482.22 1481.48,-490.98 1488.25,-492.78"/>
+<path fill="none" stroke="black" d="M1336.89,-696.68C1335.01,-659.89 1333.21,-570.69 1354,-500 1354.87,-497.04 1356.01,-494.06 1357.31,-491.14"/>
+<polygon fill="black" stroke="black" points="1360.45,-492.68 1361.81,-482.17 1354.19,-489.54 1360.45,-492.68"/>
</g>
<!-- asihpi -->
<g id="node11" class="node">
<title>asihpi</title>
-<polygon fill="yellow" stroke="black" points="1570.06,-632.87 1548.03,-650.87 1503.97,-650.87 1481.94,-632.87 1503.97,-614.87 1548.03,-614.87 1570.06,-632.87"/>
-<text text-anchor="middle" x="1526" y="-629.17" font-family="Times,serif" font-size="14.00">asihpi</text>
+<polygon fill="yellow" stroke="black" points="1431.55,-632.87 1413.27,-650.87 1376.73,-650.87 1358.45,-632.87 1376.73,-614.87 1413.27,-614.87 1431.55,-632.87"/>
+<text text-anchor="middle" x="1395" y="-629.17" font-family="Times,serif" font-size="14.00">asihpi</text>
</g>
<!-- portaudio->asihpi -->
<g id="edge4" class="edge">
<title>portaudio->asihpi</title>
-<path fill="none" stroke="black" d="M1446.24,-697.58C1460.62,-686.09 1480.18,-670.47 1496.32,-657.57"/>
-<polygon fill="black" stroke="black" points="1498.78,-660.09 1504.41,-651.11 1494.41,-654.62 1498.78,-660.09"/>
+<path fill="none" stroke="black" d="M1349.81,-697.19C1357.65,-686.2 1368.1,-671.57 1376.97,-659.13"/>
+<polygon fill="black" stroke="black" points="1379.85,-661.12 1382.81,-650.95 1374.15,-657.06 1379.85,-661.12"/>
</g>
<!-- sndio -->
<g id="node12" class="node">
<title>sndio</title>
<g id="a_node12"><a xlink:href="http://www.sndio.org/" xlink:title="sndio">
-<polygon fill="orange" stroke="black" points="1245.89,-223.54 1245.89,-238.46 1223.11,-249 1190.89,-249 1168.11,-238.46 1168.11,-223.54 1190.89,-213 1223.11,-213 1245.89,-223.54"/>
-<text text-anchor="middle" x="1207" y="-227.3" font-family="Times,serif" font-size="14.00">sndio</text>
+<polygon fill="orange" stroke="black" points="1134.22,-223.54 1134.22,-238.46 1115.35,-249 1088.65,-249 1069.78,-238.46 1069.78,-223.54 1088.65,-213 1115.35,-213 1134.22,-223.54"/>
+<text text-anchor="middle" x="1102" y="-227.3" font-family="Times,serif" font-size="14.00">sndio</text>
</a>
</g>
</g>
<!-- portaudio->sndio -->
<g id="edge6" class="edge">
<title>portaudio->sndio</title>
-<path fill="none" stroke="black" d="M1424.99,-696.35C1422.99,-669.27 1417.31,-615.7 1402,-573 1356.55,-446.21 1265.16,-312.09 1225.77,-257.42"/>
-<polygon fill="black" stroke="black" points="1228.4,-255.08 1219.69,-249.04 1222.73,-259.19 1228.4,-255.08"/>
+<path fill="none" stroke="black" d="M1331.19,-696.66C1320.46,-670 1298.69,-616.98 1278,-573 1221.83,-453.61 1147.24,-314.87 1116.34,-258.16"/>
+<polygon fill="black" stroke="black" points="1119.29,-256.26 1111.43,-249.16 1113.15,-259.62 1119.29,-256.26"/>
</g>
<!-- ALSA->sound card -->
<g id="edge64" class="edge">
<title>ALSA->sound card</title>
-<path fill="none" stroke="green" d="M1784.57,-614.62C1778.84,-592.45 1768.47,-552.77 1759,-519 1714.1,-358.93 1656.25,-167.88 1635.16,-98.68"/>
-<polygon fill="green" stroke="green" points="1638.47,-97.55 1632.2,-89 1631.77,-99.59 1638.47,-97.55"/>
+<path fill="none" stroke="green" d="M1657.41,-614.78C1653.79,-592.45 1646.46,-552.25 1636,-519 1584.07,-353.91 1493.8,-165.98 1460.15,-98.14"/>
+<polygon fill="green" stroke="green" points="1463.19,-96.41 1455.6,-89.02 1456.93,-99.53 1463.19,-96.41"/>
</g>
<!-- ALSA->JACK -->
<g id="edge66" class="edge">
<title>ALSA->JACK</title>
-<path fill="none" stroke="black" d="M1827.68,-618.86C1852.25,-610.43 1884.66,-599.01 1913,-588 1940.77,-577.22 1971.76,-564.04 1995.02,-553.92"/>
-<polygon fill="black" stroke="black" points="1826.33,-615.62 1818,-622.17 1828.59,-622.25 1826.33,-615.62"/>
-<polygon fill="black" stroke="black" points="1996.71,-557 2004.48,-549.78 1993.91,-550.58 1996.71,-557"/>
+<path fill="none" stroke="black" d="M1698.13,-619.62C1723.72,-611.2 1758.09,-599.5 1788,-588 1815.78,-577.32 1846.73,-564.03 1869.82,-553.84"/>
+<polygon fill="black" stroke="black" points="1696.85,-616.36 1688.43,-622.79 1699.03,-623.01 1696.85,-616.36"/>
+<polygon fill="black" stroke="black" points="1871.48,-556.93 1879.2,-549.67 1868.64,-550.53 1871.48,-556.93"/>
</g>
<!-- PulseAudio -->
<g id="node13" class="node">
<title>PulseAudio</title>
<g id="a_node13"><a xlink:href="https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/" xlink:title="PulseAudio">
-<polygon fill="orange" stroke="black" points="2095.57,-310.54 2095.57,-325.46 2055.99,-336 2000.01,-336 1960.43,-325.46 1960.43,-310.54 2000.01,-300 2055.99,-300 2095.57,-310.54"/>
-<text text-anchor="middle" x="2028" y="-314.3" font-family="Times,serif" font-size="14.00">PulseAudio</text>
+<polygon fill="orange" stroke="black" points="1893.06,-310.54 1893.06,-325.46 1860.22,-336 1813.78,-336 1780.94,-325.46 1780.94,-310.54 1813.78,-300 1860.22,-300 1893.06,-310.54"/>
+<text text-anchor="middle" x="1837" y="-314.3" font-family="Times,serif" font-size="14.00">PulseAudio</text>
</a>
</g>
</g>
<!-- ALSA->PulseAudio -->
<g id="edge65" class="edge">
<title>ALSA->PulseAudio</title>
-<path fill="none" stroke="black" d="M1813.74,-618.21C1828.49,-610.73 1846.81,-600.44 1861,-588 1934.95,-523.2 1946.92,-496.89 1991,-409 2001.15,-388.76 2008.51,-364.1 2014.55,-345.72"/>
-<polygon fill="black" stroke="black" points="2017.87,-346.82 2017.78,-336.22 2011.25,-344.56 2017.87,-346.82"/>
+<path fill="none" stroke="black" d="M1685.69,-620.17C1701.7,-612.97 1721.68,-602.33 1736,-588 1803.89,-520.06 1821.73,-399.98 1830.33,-346.28"/>
+<polygon fill="black" stroke="black" points="1833.82,-346.6 1831.99,-336.17 1826.92,-345.47 1833.82,-346.6"/>
</g>
<!-- bluez -->
<g id="node14" class="node">
<title>bluez</title>
-<polygon fill="yellow" stroke="black" points="2072.06,-158 2050.03,-176 2005.97,-176 1983.94,-158 2005.97,-140 2050.03,-140 2072.06,-158"/>
-<text text-anchor="middle" x="2028" y="-154.3" font-family="Times,serif" font-size="14.00">BlueZ</text>
+<polygon fill="yellow" stroke="black" points="1874.55,-158 1855.77,-176 1818.23,-176 1799.45,-158 1818.23,-140 1855.77,-140 1874.55,-158"/>
+<text text-anchor="middle" x="1837" y="-154.3" font-family="Times,serif" font-size="14.00">BlueZ</text>
</g>
<!-- ALSA->bluez -->
<g id="edge20" class="edge">
<title>ALSA->bluez</title>
-<path fill="none" stroke="black" d="M1802.57,-614.51C1808.35,-606.66 1814.92,-597.13 1820,-588 1827.75,-574.08 1828.68,-570.02 1834,-555 1845.28,-523.18 1845.99,-514.54 1855,-482 1868.37,-433.69 1863.28,-418.65 1884,-373 1917.56,-299.08 1975.8,-222.53 2006.94,-184.15"/>
-<polygon fill="black" stroke="black" points="2009.89,-186.07 2013.52,-176.12 2004.47,-181.64 2009.89,-186.07"/>
+<path fill="none" stroke="black" d="M1674.87,-614.82C1681.1,-607.03 1688.04,-597.45 1693,-588 1700.18,-574.31 1700.8,-570.12 1704,-555 1714.06,-507.51 1713.61,-494.47 1711,-446 1710.11,-429.48 1707.89,-425.52 1707,-409 1706.14,-393.02 1702.69,-388.41 1707,-373 1728.19,-297.3 1784.31,-221.77 1815.43,-183.94"/>
+<polygon fill="black" stroke="black" points="1818.32,-185.94 1822.04,-176.02 1812.95,-181.46 1818.32,-185.94"/>
</g>
<!-- PipeWire -->
<g id="node17" class="node">
<title>PipeWire</title>
<g id="a_node17"><a xlink:href="http://pipewire.org/" xlink:title="PipeWire">
-<polygon fill="orange" stroke="black" points="2405.87,-223.54 2405.87,-238.46 2371.97,-249 2324.03,-249 2290.13,-238.46 2290.13,-223.54 2324.03,-213 2371.97,-213 2405.87,-223.54"/>
-<text text-anchor="middle" x="2348" y="-227.3" font-family="Times,serif" font-size="14.00">PipeWire</text>
+<polygon fill="orange" stroke="black" points="2265.68,-223.54 2265.68,-238.46 2237.75,-249 2198.25,-249 2170.32,-238.46 2170.32,-223.54 2198.25,-213 2237.75,-213 2265.68,-223.54"/>
+<text text-anchor="middle" x="2218" y="-227.3" font-family="Times,serif" font-size="14.00">PipeWire</text>
</a>
</g>
</g>
<!-- ALSA->PipeWire -->
<g id="edge15" class="edge">
<title>ALSA->PipeWire</title>
-<path fill="none" stroke="black" d="M1797.37,-604.77C1815.48,-546.9 1858.73,-413.28 1884,-373 1907.41,-335.7 1912.33,-321.07 1951,-300 2006.6,-269.7 2182.19,-248.24 2280.2,-238.28"/>
-<polygon fill="black" stroke="black" points="1793.92,-604.06 1794.29,-614.65 1800.6,-606.15 1793.92,-604.06"/>
-<polygon fill="black" stroke="black" points="2280.7,-241.74 2290.3,-237.26 2280,-234.78 2280.7,-241.74"/>
+<path fill="none" stroke="black" d="M1670.3,-605.29C1675.65,-590.64 1681.89,-572.03 1686,-555 1714.04,-438.73 1666.88,-357.06 1772,-300 1837.95,-264.2 2055.05,-243.9 2160.08,-235.95"/>
+<polygon fill="black" stroke="black" points="1667,-604.14 1666.79,-614.73 1673.56,-606.58 1667,-604.14"/>
+<polygon fill="black" stroke="black" points="2160.48,-239.43 2170.19,-235.19 2159.96,-232.45 2160.48,-239.43"/>
</g>
<!-- aRts -->
<g id="node21" class="node">
<title>aRts</title>
-<ellipse fill="lightgrey" stroke="black" cx="844" cy="-318" rx="31.7" ry="18"/>
-<text text-anchor="middle" x="844" y="-314.3" font-family="Times,serif" font-size="14.00">aRts</text>
+<ellipse fill="lightgrey" stroke="black" cx="730" cy="-318" rx="27" ry="18"/>
+<text text-anchor="middle" x="730" y="-314.3" font-family="Times,serif" font-size="14.00">aRts</text>
</g>
<!-- ALSA->aRts -->
<g id="edge67" class="edge">
<title>ALSA->aRts</title>
-<path fill="none" stroke="black" d="M1776.48,-614.84C1755.77,-587.02 1714.83,-533.46 1696,-519 1634,-471.4 1610.45,-469.82 1536,-446 1411.81,-406.27 1013.47,-344.48 884.62,-325.05"/>
-<polygon fill="black" stroke="black" points="884.81,-321.54 874.4,-323.52 883.77,-328.47 884.81,-321.54"/>
+<path fill="none" stroke="black" d="M1650.13,-614.46C1635.68,-590.29 1606.68,-546.45 1572,-519 1541.51,-494.87 1449.99,-457.98 1413,-446 1289.24,-405.93 889.1,-343.22 766.23,-324.47"/>
+<polygon fill="black" stroke="black" points="766.62,-320.99 756.2,-322.94 765.56,-327.91 766.62,-320.99"/>
</g>
<!-- JACK->OSS -->
<g id="edge108" class="edge">
<title>JACK->OSS</title>
-<path fill="none" stroke="black" d="M1993.59,-532.33C1935.12,-526.48 1818.54,-514.32 1720,-501 1653.68,-492.04 1576.87,-479.45 1531.47,-471.78"/>
-<polygon fill="black" stroke="black" points="1531.9,-468.3 1521.45,-470.08 1530.73,-475.2 1531.9,-468.3"/>
+<path fill="none" stroke="black" d="M1869.37,-532.59C1811.35,-526.91 1692.89,-514.77 1593,-501 1528.01,-492.04 1452.62,-479.16 1409.1,-471.48"/>
+<polygon fill="black" stroke="black" points="1409.47,-467.99 1399.01,-469.69 1408.25,-474.89 1409.47,-467.99"/>
</g>
<!-- JACK->PipeWire -->
<g id="edge16" class="edge">
<title>JACK->PipeWire</title>
-<path fill="none" stroke="black" d="M2078.33,-528.35C2150.32,-514.77 2288.86,-480.85 2383,-409 2406.62,-390.97 2428.91,-382.64 2421,-354 2410.87,-317.34 2386.49,-280.62 2368.68,-257.18"/>
-<polygon fill="black" stroke="black" points="2077.41,-524.96 2068.21,-530.2 2078.68,-531.84 2077.41,-524.96"/>
-<polygon fill="black" stroke="black" points="2371.36,-254.92 2362.46,-249.18 2365.83,-259.22 2371.36,-254.92"/>
+<path fill="none" stroke="black" d="M1950.61,-527.96C2020.11,-513.86 2154.04,-479.24 2245,-409 2268.52,-390.84 2290.2,-382.83 2283,-354 2274.03,-318.08 2252.26,-281.14 2236.38,-257.46"/>
+<polygon fill="black" stroke="black" points="1949.56,-524.6 1940.43,-529.97 1950.92,-531.47 1949.56,-524.6"/>
+<polygon fill="black" stroke="black" points="2239.16,-255.33 2230.62,-249.06 2233.39,-259.29 2239.16,-255.33"/>
</g>
<!-- OSS->sound card -->
<g id="edge69" class="edge">
<title>OSS->sound card</title>
-<path fill="none" stroke="green" d="M1467.34,-453.25C1405.39,-427.24 1251.54,-352.32 1300,-267 1357.92,-165.03 1492.61,-110.74 1569.85,-87.02"/>
-<polygon fill="green" stroke="green" points="1570.86,-90.37 1579.43,-84.14 1568.85,-83.67 1570.86,-90.37"/>
-<text text-anchor="middle" x="1444" y="-270.8" font-family="Times,serif" font-size="14.00" fill="green">third-party drivers from opensound.com</text>
+<path fill="none" stroke="green" d="M1350.93,-453.92C1293.12,-428.69 1144.66,-353.88 1188,-267 1232.09,-178.61 1337.44,-119.77 1399.35,-91.5"/>
+<polygon fill="green" stroke="green" points="1400.83,-94.67 1408.52,-87.39 1397.97,-88.29 1400.83,-94.67"/>
+<text text-anchor="middle" x="1298" y="-270.8" font-family="Times,serif" font-size="14.00" fill="green">third-party drivers from opensound.com</text>
</g>
<!-- OSS->ALSA -->
<g id="edge68" class="edge">
<title>OSS->ALSA</title>
-<path fill="none" stroke="black" d="M1519.43,-472.32C1538.05,-478.07 1562.7,-487.25 1582,-500 1627.63,-530.15 1622.03,-558.38 1668,-588 1692.35,-603.69 1723.07,-614.74 1747.46,-621.82"/>
-<polygon fill="black" stroke="black" points="1746.58,-625.21 1757.15,-624.53 1748.46,-618.47 1746.58,-625.21"/>
+<path fill="none" stroke="black" d="M1397.01,-471.97C1414.78,-477.81 1439.08,-487.23 1458,-500 1503.33,-530.6 1498.23,-558.07 1544,-588 1567.33,-603.26 1596.74,-614.31 1620.11,-621.5"/>
+<polygon fill="black" stroke="black" points="1619.14,-624.86 1629.72,-624.35 1621.13,-618.15 1619.14,-624.86"/>
</g>
<!-- RoarAudio -->
<g id="node24" class="node">
<title>RoarAudio</title>
<g id="a_node24"><a xlink:href="http://roaraudio.keep-cool.org/" xlink:title="RoarAudio">
-<ellipse fill="lightgrey" stroke="black" cx="1091" cy="-391" rx="59.29" ry="18"/>
-<text text-anchor="middle" x="1091" y="-387.3" font-family="Times,serif" font-size="14.00">RoarAudio</text>
+<ellipse fill="lightgrey" stroke="black" cx="986" cy="-391" rx="50.09" ry="18"/>
+<text text-anchor="middle" x="986" y="-387.3" font-family="Times,serif" font-size="14.00">RoarAudio</text>
</a>
</g>
</g>
<!-- OSS->RoarAudio -->
<g id="edge34" class="edge">
<title>OSS->RoarAudio</title>
-<path fill="none" stroke="black" d="M1462.84,-457.84C1397.48,-446.26 1238.17,-418.06 1150.78,-402.58"/>
-<polygon fill="black" stroke="black" points="1151.21,-399.11 1140.75,-400.81 1149.99,-406 1151.21,-399.11"/>
+<path fill="none" stroke="black" d="M1347.01,-458.23C1284.31,-446.73 1123.73,-417.27 1039.46,-401.81"/>
+<polygon fill="black" stroke="black" points="1040.04,-398.36 1029.57,-399.99 1038.78,-405.24 1040.04,-398.36"/>
</g>
<!-- asihpi->sound card -->
<g id="edge5" class="edge">
<title>asihpi->sound card</title>
-<path fill="none" stroke="green" d="M1535.75,-614.69C1555.8,-578.22 1601.14,-489.79 1617,-409 1620.08,-393.3 1619.16,-388.85 1617,-373 1613.64,-348.32 1602,-343.91 1602,-319 1602,-319 1602,-319 1602,-157 1602,-136.87 1608.53,-115.12 1614.92,-98.65"/>
-<polygon fill="green" stroke="green" points="1618.26,-99.73 1618.81,-89.15 1611.78,-97.07 1618.26,-99.73"/>
+<path fill="none" stroke="green" d="M1400,-614.73C1410.53,-577.63 1434.7,-486.93 1443,-409 1444.69,-393.09 1445.95,-388.73 1443,-373 1440.63,-360.35 1422,-331.88 1422,-319 1422,-319 1422,-319 1422,-157 1422,-136.87 1428.53,-115.12 1434.92,-98.65"/>
+<polygon fill="green" stroke="green" points="1438.26,-99.73 1438.81,-89.15 1431.78,-97.07 1438.26,-99.73"/>
</g>
<!-- sndio->ALSA -->
<g id="edge45" class="edge">
<title>sndio->ALSA</title>
-<path fill="none" stroke="black" d="M1256.12,-233.79C1348.27,-237.59 1539.94,-247.73 1563,-267 1594.2,-293.07 1572.69,-317.33 1588,-355 1626.03,-448.59 1631.88,-476.93 1696,-555 1713.72,-576.57 1738.2,-596.52 1757.59,-610.68"/>
-<polygon fill="black" stroke="black" points="1256.05,-230.29 1245.92,-233.38 1255.77,-237.28 1256.05,-230.29"/>
-<polygon fill="black" stroke="black" points="1755.66,-613.61 1765.83,-616.58 1759.73,-607.91 1755.66,-613.61"/>
+<path fill="none" stroke="black" d="M1144.47,-231.73C1214.05,-232.19 1348.08,-237.05 1383,-267 1413.86,-293.47 1389.16,-318.97 1408,-355 1461.27,-456.87 1491.99,-472.46 1572,-555 1590.86,-574.45 1613.99,-594.53 1631.8,-609.28"/>
+<polygon fill="black" stroke="black" points="1144.3,-228.23 1134.29,-231.7 1144.28,-235.23 1144.3,-228.23"/>
+<polygon fill="black" stroke="black" points="1629.63,-612.03 1639.58,-615.67 1634.07,-606.62 1629.63,-612.03"/>
</g>
<!-- PulseAudio->sound card -->
<g id="edge8" class="edge">
<title>PulseAudio->sound card</title>
-<path fill="none" stroke="green" d="M2000.12,-299.97C1929.4,-256.76 1743.03,-142.89 1663.65,-94.39"/>
-<polygon fill="green" stroke="green" points="1665.32,-91.31 1654.96,-89.08 1661.67,-97.28 1665.32,-91.31"/>
+<path fill="none" stroke="green" d="M1811.11,-300.74C1743.29,-258.13 1560.35,-143.21 1482.67,-94.41"/>
+<polygon fill="green" stroke="green" points="1484.5,-91.42 1474.17,-89.07 1480.78,-97.35 1484.5,-91.42"/>
</g>
<!-- PulseAudio->ALSA -->
<g id="edge7" class="edge">
<title>PulseAudio->ALSA</title>
-<path fill="none" stroke="black" d="M2031.05,-336.22C2029.14,-354.82 2021.03,-385.01 2009,-409 1964.92,-496.89 1952.95,-523.2 1879,-588 1864.42,-600.78 1845.49,-611.29 1828.64,-618.82"/>
-<polygon fill="black" stroke="black" points="1826.85,-615.77 1819.01,-622.9 1829.58,-622.22 1826.85,-615.77"/>
+<path fill="none" stroke="black" d="M1840.34,-336.17C1841.95,-383.18 1826.57,-515.38 1754,-588 1739.11,-602.9 1718.1,-613.81 1699.59,-621.02"/>
+<polygon fill="black" stroke="black" points="1698.39,-617.74 1690.19,-624.46 1700.79,-624.31 1698.39,-617.74"/>
</g>
<!-- PulseAudio->JACK -->
<g id="edge10" class="edge">
<title>PulseAudio->JACK</title>
-<path fill="none" stroke="black" d="M2066.96,-333.33C2075.72,-338.47 2083.92,-345.23 2089,-354 2116.32,-401.17 2115.32,-458.17 2082,-501 2077.04,-507.38 2070.59,-513.03 2063.95,-517.83"/>
-<polygon fill="black" stroke="black" points="2061.92,-514.98 2055.55,-523.45 2065.81,-520.8 2061.92,-514.98"/>
+<path fill="none" stroke="black" d="M1873.19,-332.03C1882.88,-337.32 1892.25,-344.49 1898,-354 1927.05,-402.01 1919.19,-470.93 1911.63,-508.69"/>
+<polygon fill="black" stroke="black" points="1908.11,-508.4 1909.43,-518.91 1914.96,-509.87 1908.11,-508.4"/>
</g>
<!-- PulseAudio->OSS -->
<g id="edge9" class="edge">
<title>PulseAudio->OSS</title>
-<path fill="none" stroke="black" d="M1954.31,-327.91C1912.51,-333.74 1859.44,-342.42 1813,-354 1706.11,-380.65 1583.93,-426.6 1525.95,-449.38"/>
-<polygon fill="black" stroke="black" points="1954.97,-331.36 1964.41,-326.53 1954.02,-324.42 1954.97,-331.36"/>
-<polygon fill="black" stroke="black" points="1524.57,-446.16 1516.55,-453.09 1527.14,-452.67 1524.57,-446.16"/>
+<path fill="none" stroke="black" d="M1770.73,-326.79C1731.13,-332.37 1680.12,-341.19 1636,-354 1548.74,-379.34 1451.18,-424.5 1403.11,-447.94"/>
+<polygon fill="black" stroke="black" points="1771.36,-330.24 1780.79,-325.41 1770.41,-323.3 1771.36,-330.24"/>
+<polygon fill="black" stroke="black" points="1401.34,-444.91 1393.9,-452.46 1404.42,-451.2 1401.34,-444.91"/>
</g>
<!-- PulseAudio->sndio -->
<g id="edge46" class="edge">
<title>PulseAudio->sndio</title>
-<path fill="none" stroke="black" d="M1964.73,-309.3C1879.78,-299.06 1724.13,-280.68 1591,-267 1470.72,-254.64 1329.02,-242.3 1255.99,-236.1"/>
-<polygon fill="black" stroke="black" points="1255.99,-232.59 1245.73,-235.23 1255.4,-239.56 1255.99,-232.59"/>
+<path fill="none" stroke="black" d="M1781.19,-310.38C1699.8,-300.73 1543.79,-282.31 1411,-267 1315.88,-256.03 1204.25,-243.46 1144.64,-236.77"/>
+<polygon fill="black" stroke="black" points="1144.81,-233.27 1134.48,-235.64 1144.03,-240.23 1144.81,-233.27"/>
</g>
<!-- PulseAudio->bluez -->
<g id="edge11" class="edge">
<title>PulseAudio->bluez</title>
-<path fill="none" stroke="black" d="M2028,-299.79C2028,-272.48 2028,-218.99 2028,-186.38"/>
-<polygon fill="black" stroke="black" points="2031.5,-186.19 2028,-176.19 2024.5,-186.19 2031.5,-186.19"/>
+<path fill="none" stroke="black" d="M1837,-299.79C1837,-272.48 1837,-218.99 1837,-186.38"/>
+<polygon fill="black" stroke="black" points="1840.5,-186.19 1837,-176.19 1833.5,-186.19 1840.5,-186.19"/>
</g>
<!-- ofono -->
<g id="node15" class="node">
<title>ofono</title>
-<polygon fill="yellow" stroke="black" points="2508.05,-231 2487.03,-249 2444.97,-249 2423.95,-231 2444.97,-213 2487.03,-213 2508.05,-231"/>
-<text text-anchor="middle" x="2466" y="-227.3" font-family="Times,serif" font-size="14.00">ofono</text>
+<polygon fill="yellow" stroke="black" points="2356.05,-231 2338.02,-249 2301.98,-249 2283.95,-231 2301.98,-213 2338.02,-213 2356.05,-231"/>
+<text text-anchor="middle" x="2320" y="-227.3" font-family="Times,serif" font-size="14.00">ofono</text>
</g>
<!-- PulseAudio->ofono -->
<g id="edge12" class="edge">
<title>PulseAudio->ofono</title>
-<path fill="none" stroke="black" d="M2089.92,-309C2166.84,-298.4 2301.75,-277.66 2415,-249 2419.07,-247.97 2423.29,-246.78 2427.47,-245.51"/>
-<polygon fill="black" stroke="black" points="2428.62,-248.82 2437.09,-242.46 2426.5,-242.14 2428.62,-248.82"/>
+<path fill="none" stroke="black" d="M1893.07,-312.05C1977.13,-303.79 2140.31,-284.49 2275,-249 2278.41,-248.1 2281.93,-247.03 2285.42,-245.88"/>
+<polygon fill="black" stroke="black" points="2286.81,-249.1 2295.07,-242.47 2284.48,-242.5 2286.81,-249.1"/>
</g>
<!-- PulseAudio->PipeWire -->
<g id="edge14" class="edge">
<title>PulseAudio->PipeWire</title>
-<path fill="none" stroke="black" d="M2083.98,-302.13C2143.66,-286.28 2237.42,-261.37 2295.67,-245.9"/>
-<polygon fill="black" stroke="black" points="2082.96,-298.78 2074.19,-304.73 2084.75,-305.55 2082.96,-298.78"/>
-<polygon fill="black" stroke="black" points="2296.64,-249.26 2305.4,-243.31 2294.84,-242.5 2296.64,-249.26"/>
+<path fill="none" stroke="black" d="M1892.24,-304.68C1965.99,-288.22 2095.61,-259.31 2167.09,-243.36"/>
+<polygon fill="black" stroke="black" points="1891.2,-301.32 1882.2,-306.92 1892.72,-308.15 1891.2,-301.32"/>
+<polygon fill="black" stroke="black" points="2168.2,-246.7 2177.2,-241.1 2166.68,-239.86 2168.2,-246.7"/>
</g>
<!-- bluez->bluetooth -->
<g id="edge21" class="edge">
<title>bluez->bluetooth</title>
-<path fill="none" stroke="green" d="M2028,-139.8C2028,-128.16 2028,-112.55 2028,-99.24"/>
-<polygon fill="green" stroke="green" points="2031.5,-99.18 2028,-89.18 2024.5,-99.18 2031.5,-99.18"/>
+<path fill="none" stroke="green" d="M1837,-139.8C1837,-128.16 1837,-112.55 1837,-99.24"/>
+<polygon fill="green" stroke="green" points="1840.5,-99.18 1837,-89.18 1833.5,-99.18 1840.5,-99.18"/>
</g>
<!-- ofono->phone modem -->
<g id="edge19" class="edge">
<title>ofono->phone modem</title>
-<path fill="none" stroke="green" d="M2468.98,-212.94C2472.31,-194.73 2478.13,-165.11 2485,-140 2488.75,-126.29 2493.73,-111.3 2498.09,-98.89"/>
-<polygon fill="green" stroke="green" points="2501.5,-99.75 2501.57,-89.15 2494.91,-97.39 2501.5,-99.75"/>
+<path fill="none" stroke="green" d="M2323.45,-212.7C2327.12,-194.55 2333.19,-165.21 2339,-140 2342.14,-126.38 2345.88,-111.3 2349.06,-98.8"/>
+<polygon fill="green" stroke="green" points="2352.48,-99.56 2351.56,-89 2345.69,-97.83 2352.48,-99.56"/>
</g>
<!-- X11 bell -->
<g id="node16" class="node">
<title>X11 bell</title>
-<ellipse fill="lightgrey" stroke="black" cx="1942" cy="-391" rx="48.99" ry="18"/>
-<text text-anchor="middle" x="1942" y="-387.3" font-family="Times,serif" font-size="14.00">X11 bell</text>
+<ellipse fill="lightgrey" stroke="black" cx="1758" cy="-391" rx="41.69" ry="18"/>
+<text text-anchor="middle" x="1758" y="-387.3" font-family="Times,serif" font-size="14.00">X11 bell</text>
</g>
<!-- X11 bell->PulseAudio -->
<g id="edge13" class="edge">
<title>X11 bell->PulseAudio</title>
-<path fill="none" stroke="black" d="M1961.09,-374.24C1972.29,-364.99 1986.67,-353.12 1999.23,-342.76"/>
-<polygon fill="black" stroke="black" points="2001.68,-345.27 2007.16,-336.2 1997.22,-339.87 2001.68,-345.27"/>
+<path fill="none" stroke="black" d="M1775.14,-374.59C1785.39,-365.38 1798.64,-353.48 1810.24,-343.05"/>
+<polygon fill="black" stroke="black" points="1812.86,-345.41 1817.95,-336.12 1808.18,-340.2 1812.86,-345.41"/>
</g>
<!-- PipeWire->bluez -->
<g id="edge17" class="edge">
<title>PipeWire->bluez</title>
-<path fill="none" stroke="black" d="M2301.81,-219.75C2240.29,-206.1 2132.23,-182.13 2071.89,-168.74"/>
-<polygon fill="black" stroke="black" points="2072.44,-165.28 2061.92,-166.53 2070.92,-172.11 2072.44,-165.28"/>
+<path fill="none" stroke="black" d="M2174.29,-221.86C2099.96,-208 1949.97,-180.05 1877.72,-166.59"/>
+<polygon fill="black" stroke="black" points="1878.11,-163.1 1867.64,-164.71 1876.83,-169.98 1878.11,-163.1"/>
</g>
<!-- gstreamer -->
<g id="node18" class="node">
<title>gstreamer</title>
-<ellipse fill="lightgrey" stroke="black" cx="2399" cy="-714.74" rx="59.29" ry="18"/>
-<text text-anchor="middle" x="2399" y="-711.04" font-family="Times,serif" font-size="14.00">gstreamer</text>
+<ellipse fill="lightgrey" stroke="black" cx="2264" cy="-714.74" rx="46.29" ry="18"/>
+<text text-anchor="middle" x="2264" y="-711.04" font-family="Times,serif" font-size="14.00">gstreamer</text>
</g>
<!-- gstreamer->ALSA -->
<g id="edge85" class="edge">
<title>gstreamer->ALSA</title>
-<path fill="none" stroke="black" d="M2345.93,-706.79C2227.72,-691.31 1944.45,-654.22 1834.09,-639.77"/>
-<polygon fill="black" stroke="black" points="1834.33,-636.28 1823.96,-638.45 1833.42,-643.22 1834.33,-636.28"/>
+<path fill="none" stroke="black" d="M2221.05,-708.06C2110.21,-693.4 1815.48,-654.43 1703.76,-639.66"/>
+<polygon fill="black" stroke="black" points="1703.91,-636.15 1693.53,-638.3 1702.99,-643.09 1703.91,-636.15"/>
</g>
<!-- gstreamer->JACK -->
<g id="edge87" class="edge">
<title>gstreamer->JACK</title>
-<path fill="none" stroke="black" d="M2350.69,-704.32C2317.73,-696.26 2274.21,-682.31 2241,-659.74 2199.09,-631.26 2209.98,-599.84 2167,-573 2140.32,-556.34 2105.99,-547.58 2078.5,-542.99"/>
-<polygon fill="black" stroke="black" points="2078.74,-539.49 2068.32,-541.43 2077.68,-546.41 2078.74,-539.49"/>
+<path fill="none" stroke="black" d="M2223.56,-705.96C2189.46,-698.09 2140.39,-683.63 2103,-659.74 2058.29,-631.18 2066.14,-600.88 2021,-573 1999.5,-559.72 1972.65,-551.2 1950.19,-545.89"/>
+<polygon fill="black" stroke="black" points="1950.73,-542.43 1940.21,-543.68 1949.22,-549.26 1950.73,-542.43"/>
</g>
<!-- gstreamer->OSS -->
<g id="edge86" class="edge">
<title>gstreamer->OSS</title>
-<path fill="none" stroke="black" d="M2386.26,-696.99C2354.28,-656.56 2265.87,-554.36 2164,-519 2047.31,-478.5 1666.24,-468.07 1536.06,-465.66"/>
-<polygon fill="black" stroke="black" points="1535.74,-462.16 1525.68,-465.48 1535.62,-469.16 1535.74,-462.16"/>
+<path fill="none" stroke="black" d="M2250.72,-697.27C2217.46,-657.47 2125.82,-556.57 2023,-519 1909.84,-477.65 1535.68,-467.73 1412.62,-465.56"/>
+<polygon fill="black" stroke="black" points="1412.57,-462.06 1402.51,-465.39 1412.45,-469.06 1412.57,-462.06"/>
</g>
<!-- gstreamer->sndio -->
<g id="edge47" class="edge">
<title>gstreamer->sndio</title>
-<path fill="none" stroke="black" d="M2437.73,-701.03C2485.08,-682.76 2559,-644.2 2559,-581.5 2559,-581.5 2559,-581.5 2559,-427 2559,-292.64 1499.42,-243.35 1256.3,-233.81"/>
-<polygon fill="black" stroke="black" points="1256.13,-230.3 1246,-233.41 1255.86,-237.29 1256.13,-230.3"/>
+<path fill="none" stroke="black" d="M2298.07,-702.36C2344.24,-684.53 2421,-645.29 2421,-581.5 2421,-581.5 2421,-581.5 2421,-427 2421,-294.77 1370.18,-243.24 1144.4,-233.69"/>
+<polygon fill="black" stroke="black" points="1144.41,-230.19 1134.28,-233.27 1144.12,-237.18 1144.41,-230.19"/>
</g>
<!-- gstreamer->PulseAudio -->
<g id="edge88" class="edge">
<title>gstreamer->PulseAudio</title>
-<path fill="none" stroke="black" d="M2402.74,-696.66C2414.3,-638.77 2443.1,-448.34 2345,-354 2328.04,-337.69 2193.89,-327.61 2105.62,-322.68"/>
-<polygon fill="black" stroke="black" points="2105.81,-319.18 2095.63,-322.13 2105.42,-326.17 2105.81,-319.18"/>
+<path fill="none" stroke="black" d="M2263.94,-696.34C2263.3,-630.97 2257.47,-401.4 2207,-354 2185.37,-333.69 2003.82,-324.5 1903.31,-320.93"/>
+<polygon fill="black" stroke="black" points="1903.37,-317.43 1893.26,-320.58 1903.13,-324.43 1903.37,-317.43"/>
</g>
<!-- gstreamer->PipeWire -->
<g id="edge18" class="edge">
<title>gstreamer->PipeWire</title>
-<path fill="none" stroke="black" d="M2441.17,-702.01C2491.36,-687.84 2568.95,-665.23 2573,-659.74 2648.59,-557.14 2592.41,-498.95 2573,-373 2571.65,-364.25 2572.6,-360.86 2567,-354 2522.64,-299.62 2447.28,-265.34 2397.56,-247.42"/>
-<polygon fill="black" stroke="black" points="2398.58,-244.06 2387.98,-244.05 2396.25,-250.67 2398.58,-244.06"/>
+<path fill="none" stroke="black" d="M2298.88,-702.86C2348.74,-687.3 2434.48,-660.45 2435,-659.74 2510.33,-556.95 2454.41,-498.95 2435,-373 2433.65,-364.25 2434.54,-360.91 2429,-354 2385.39,-299.66 2310.59,-264.75 2262.77,-246.76"/>
+<polygon fill="black" stroke="black" points="2263.88,-243.44 2253.28,-243.28 2261.47,-250.01 2263.88,-243.44"/>
</g>
<!-- sox -->
<g id="node19" class="node">
<title>sox</title>
<g id="a_node19"><a xlink:href="http://sox.sourceforge.net/Docs/Features" xlink:title="sox">
-<ellipse fill="lightgrey" stroke="black" cx="1188" cy="-787.74" rx="27" ry="18"/>
-<text text-anchor="middle" x="1188" y="-784.04" font-family="Times,serif" font-size="14.00">sox</text>
+<ellipse fill="lightgrey" stroke="black" cx="1076" cy="-787.74" rx="27" ry="18"/>
+<text text-anchor="middle" x="1076" y="-784.04" font-family="Times,serif" font-size="14.00">sox</text>
</a>
</g>
</g>
<!-- sox->ALSA -->
<g id="edge24" class="edge">
<title>sox->ALSA</title>
-<path fill="none" stroke="black" d="M1214.87,-785.57C1318.99,-780.83 1692.26,-761.93 1736,-732.74 1760.84,-716.17 1774.93,-683.98 1782.25,-660.83"/>
-<polygon fill="black" stroke="black" points="1785.61,-661.81 1785.06,-651.23 1778.89,-659.84 1785.61,-661.81"/>
+<path fill="none" stroke="black" d="M1102.85,-785.42C1204.3,-780.22 1560.69,-760.15 1603,-732.74 1628.49,-716.22 1643.89,-684.03 1652.15,-660.86"/>
+<polygon fill="black" stroke="black" points="1655.51,-661.84 1655.35,-651.25 1648.87,-659.63 1655.51,-661.84"/>
</g>
<!-- sox->sndio -->
<g id="edge25" class="edge">
<title>sox->sndio</title>
-<path fill="none" stroke="black" d="M1182.07,-770.02C1175.53,-751.85 1164.54,-722.02 1154,-696.74 1080.5,-520.48 875.84,-453.83 989,-300 1027.57,-247.56 1106.34,-234.42 1157.88,-231.73"/>
-<polygon fill="black" stroke="black" points="1158.27,-235.22 1168.12,-231.32 1157.99,-228.23 1158.27,-235.22"/>
+<path fill="none" stroke="black" d="M1066.89,-770.45C1028.33,-701.16 879.6,-430.26 858,-336 854.43,-320.4 848.32,-312.74 858,-300 882.31,-267.99 996.34,-247.02 1059.55,-237.64"/>
+<polygon fill="black" stroke="black" points="1060.21,-241.09 1069.6,-236.19 1059.21,-234.16 1060.21,-241.09"/>
</g>
<!-- sox->PulseAudio -->
<g id="edge23" class="edge">
<title>sox->PulseAudio</title>
-<path fill="none" stroke="black" d="M1195.74,-759.93C1213.35,-700.14 1257.27,-558.11 1288,-519 1297.29,-507.18 1302.75,-507.11 1316,-500 1371.86,-470.04 1389.23,-469.74 1448,-446 1468.3,-437.8 1609.83,-378.57 1631,-373 1661.55,-364.96 1848.61,-341.14 1954.7,-327.99"/>
-<polygon fill="black" stroke="black" points="1192.31,-759.19 1192.86,-769.77 1199.03,-761.15 1192.31,-759.19"/>
-<polygon fill="black" stroke="black" points="1955.22,-331.45 1964.71,-326.75 1954.36,-324.5 1955.22,-331.45"/>
+<path fill="none" stroke="black" d="M1078.66,-759.4C1084.96,-707.47 1104.89,-593.17 1163,-519 1172.5,-506.87 1178.43,-507.3 1192,-500 1207.72,-491.55 1469.85,-377.93 1487,-373 1583.59,-345.25 1699.53,-330.92 1770.73,-324.19"/>
+<polygon fill="black" stroke="black" points="1075.17,-759.16 1077.52,-769.49 1082.12,-759.95 1075.17,-759.16"/>
+<polygon fill="black" stroke="black" points="1771.26,-327.65 1780.9,-323.25 1770.62,-320.68 1771.26,-327.65"/>
</g>
<!-- libao -->
<g id="node20" class="node">
<title>libao</title>
<g id="a_node20"><a xlink:href="https://www.xiph.org/ao/" xlink:title="libao">
-<ellipse fill="lightgrey" stroke="black" cx="1112" cy="-714.74" rx="33.29" ry="18"/>
-<text text-anchor="middle" x="1112" y="-711.04" font-family="Times,serif" font-size="14.00">libao</text>
+<ellipse fill="lightgrey" stroke="black" cx="988" cy="-714.74" rx="28.7" ry="18"/>
+<text text-anchor="middle" x="988" y="-711.04" font-family="Times,serif" font-size="14.00">libao</text>
</a>
</g>
</g>
<!-- sox->libao -->
<g id="edge22" class="edge">
<title>sox->libao</title>
-<path fill="none" stroke="black" d="M1172.98,-772.71C1162.34,-762.77 1147.84,-749.22 1135.65,-737.83"/>
-<polygon fill="black" stroke="black" points="1137.73,-734.99 1128.03,-730.72 1132.95,-740.1 1137.73,-734.99"/>
+<path fill="none" stroke="black" d="M1059.45,-773.39C1046.34,-762.81 1027.82,-747.87 1012.93,-735.85"/>
+<polygon fill="black" stroke="black" points="1015.06,-733.07 1005.08,-729.52 1010.66,-738.52 1015.06,-733.07"/>
</g>
<!-- libao->ALSA -->
<g id="edge27" class="edge">
<title>libao->ALSA</title>
-<path fill="none" stroke="black" d="M1144.28,-710.09C1220.15,-701.5 1415.7,-679.24 1579,-659.74 1635.95,-652.94 1701.54,-644.81 1744.05,-639.51"/>
-<polygon fill="black" stroke="black" points="1744.59,-642.97 1754.08,-638.25 1743.73,-636.02 1744.59,-642.97"/>
+<path fill="none" stroke="black" d="M1016.02,-710.41C1120.52,-697.99 1488.03,-654.31 1615.82,-639.12"/>
+<polygon fill="black" stroke="black" points="1616.5,-642.57 1626.01,-637.91 1615.67,-635.61 1616.5,-642.57"/>
</g>
<!-- libao->OSS -->
<g id="edge26" class="edge">
<title>libao->OSS</title>
-<path fill="none" stroke="black" d="M1135.61,-701.72C1154.4,-691.65 1180.95,-676.3 1202,-659.74 1237.5,-631.8 1246.29,-623.67 1274,-588 1301.87,-552.12 1289.09,-526.49 1326,-500 1361.39,-474.6 1411.3,-466.87 1447.13,-464.87"/>
-<polygon fill="black" stroke="black" points="1447.46,-468.36 1457.31,-464.43 1447.16,-461.36 1447.46,-468.36"/>
+<path fill="none" stroke="black" d="M1010.05,-703.14C1029.14,-693.37 1056.91,-677.7 1078,-659.74 1111.92,-630.86 1120.63,-623.14 1148,-588 1176.2,-551.8 1164.42,-526.33 1202,-500 1240.4,-473.1 1294.85,-465.93 1331.92,-464.47"/>
+<polygon fill="black" stroke="black" points="1332.45,-467.95 1342.36,-464.19 1332.27,-460.96 1332.45,-467.95"/>
</g>
<!-- libao->sndio -->
<g id="edge33" class="edge">
<title>libao->sndio</title>
-<path fill="none" stroke="black" d="M1085.57,-703.43C1060.3,-693.28 1021.37,-676.85 989,-659.74 949.15,-638.68 941.32,-629.73 903,-606 827.18,-559.04 732,-590.18 732,-501 732,-501 732,-501 732,-317 732,-274.06 1036.67,-245.38 1158,-235.66"/>
-<polygon fill="black" stroke="black" points="1158.44,-239.14 1168.13,-234.86 1157.88,-232.16 1158.44,-239.14"/>
+<path fill="none" stroke="black" d="M964.97,-703.61C941.72,-693.21 904.91,-676.24 874,-659.74 866.41,-655.69 608,-509.6 608,-501 608,-501 608,-501 608,-317 608,-271.38 939.38,-243.47 1059.32,-234.86"/>
+<polygon fill="black" stroke="black" points="1059.86,-238.33 1069.59,-234.14 1059.37,-231.35 1059.86,-238.33"/>
</g>
<!-- libao->PulseAudio -->
<g id="edge29" class="edge">
<title>libao->PulseAudio</title>
-<path fill="none" stroke="black" d="M1118.69,-696.9C1136.82,-651.91 1187.55,-530.33 1218,-500 1256.59,-461.57 1277.12,-465.42 1328,-446 1356.13,-435.26 1559.49,-378.98 1589,-373 1654.43,-359.75 1671.75,-362.22 1738,-354 1811.47,-344.88 1895.45,-334.78 1954.06,-327.78"/>
-<polygon fill="black" stroke="black" points="1954.83,-331.22 1964.34,-326.56 1954,-324.27 1954.83,-331.22"/>
+<path fill="none" stroke="black" d="M994.8,-697C1013.2,-652.28 1064.55,-531.3 1094,-500 1110.51,-482.45 1165.79,-455.32 1188,-446 1244.18,-422.42 1261.37,-425.59 1320,-409 1376.04,-393.14 1389.2,-385.89 1446,-373 1495.24,-361.83 1508.05,-361.37 1558,-354 1630.52,-343.31 1713.95,-333.12 1770.55,-326.52"/>
+<polygon fill="black" stroke="black" points="1771.26,-329.96 1780.79,-325.33 1770.46,-323 1771.26,-329.96"/>
</g>
<!-- libao->aRts -->
<g id="edge28" class="edge">
<title>libao->aRts</title>
-<path fill="none" stroke="black" d="M1089.04,-701.38C1072.54,-691.67 1050.55,-676.94 1035,-659.74 943.64,-558.69 878.05,-406.42 854.05,-345.53"/>
-<polygon fill="black" stroke="black" points="857.19,-343.96 850.3,-335.91 850.67,-346.5 857.19,-343.96"/>
+<path fill="none" stroke="black" d="M968.41,-701.55C953.55,-691.61 933.32,-676.52 919,-659.74 830.78,-556.39 764.63,-405.43 740.24,-345.21"/>
+<polygon fill="black" stroke="black" points="743.4,-343.68 736.43,-335.7 736.9,-346.29 743.4,-343.68"/>
</g>
<!-- ESD -->
<g id="node22" class="node">
<title>ESD</title>
-<polygon fill="orange" stroke="black" points="1065.54,-310.54 1065.54,-325.46 1045.89,-336 1018.11,-336 998.46,-325.46 998.46,-310.54 1018.11,-300 1045.89,-300 1065.54,-310.54"/>
-<text text-anchor="middle" x="1032" y="-314.3" font-family="Times,serif" font-size="14.00">ESD</text>
+<polygon fill="orange" stroke="black" points="926.59,-310.54 926.59,-325.46 909.26,-336 884.74,-336 867.41,-325.46 867.41,-310.54 884.74,-300 909.26,-300 926.59,-310.54"/>
+<text text-anchor="middle" x="897" y="-314.3" font-family="Times,serif" font-size="14.00">ESD</text>
</g>
<!-- libao->ESD -->
<g id="edge30" class="edge">
<title>libao->ESD</title>
-<path fill="none" stroke="black" d="M1099.41,-697.88C1073.48,-664.11 1014.84,-581.55 994,-501 979.81,-446.16 1002.93,-380.97 1018.88,-345.4"/>
-<polygon fill="black" stroke="black" points="1022.12,-346.73 1023.15,-336.19 1015.77,-343.79 1022.12,-346.73"/>
+<path fill="none" stroke="black" d="M976.85,-697.92C953.62,-663.88 900.67,-580.33 882,-501 869.28,-446.93 880.99,-381.62 889.66,-345.79"/>
+<polygon fill="black" stroke="black" points="893.06,-346.63 892.11,-336.07 886.27,-344.91 893.06,-346.63"/>
</g>
<!-- NAS -->
<g id="node23" class="node">
<title>NAS</title>
<g id="a_node23"><a xlink:href="http://radscan.com/nas.html" xlink:title="Network Audio System/Server">
-<polygon fill="orange" stroke="black" points="893.83,-625.41 893.83,-640.33 797.86,-650.87 662.14,-650.87 566.17,-640.33 566.17,-625.41 662.14,-614.87 797.86,-614.87 893.83,-625.41"/>
-<text text-anchor="middle" x="730" y="-629.17" font-family="Times,serif" font-size="14.00">Network Audio System/Server</text>
+<polygon fill="orange" stroke="black" points="770.39,-625.41 770.39,-640.33 694.59,-650.87 587.41,-650.87 511.61,-640.33 511.61,-625.41 587.41,-614.87 694.59,-614.87 770.39,-625.41"/>
+<text text-anchor="middle" x="641" y="-629.17" font-family="Times,serif" font-size="14.00">Network Audio System/Server</text>
</a>
</g>
</g>
<!-- libao->NAS -->
<g id="edge31" class="edge">
<title>libao->NAS</title>
-<path fill="none" stroke="black" d="M1081.71,-707.41C1025.1,-695.57 901.35,-669.7 816.83,-652.02"/>
-<polygon fill="black" stroke="black" points="817.48,-648.59 806.98,-649.96 816.05,-655.44 817.48,-648.59"/>
+<path fill="none" stroke="black" d="M961.63,-707.67C910.25,-695.84 794.96,-669.31 717.56,-651.49"/>
+<polygon fill="black" stroke="black" points="717.91,-647.98 707.38,-649.15 716.34,-654.8 717.91,-647.98"/>
</g>
<!-- libao->RoarAudio -->
<g id="edge32" class="edge">
<title>libao->RoarAudio</title>
-<path fill="none" stroke="black" d="M1110.87,-696.44C1107.42,-643.63 1097.02,-484.18 1092.8,-419.6"/>
-<polygon fill="black" stroke="black" points="1096.28,-419.13 1092.13,-409.38 1089.29,-419.59 1096.28,-419.13"/>
+<path fill="none" stroke="black" d="M988,-696.6C988,-680.43 988,-655.5 988,-633.87 988,-633.87 988,-633.87 988,-463 988,-448.65 987.59,-432.67 987.14,-419.51"/>
+<polygon fill="black" stroke="black" points="990.62,-419.08 986.76,-409.21 983.63,-419.33 990.62,-419.08"/>
</g>
<!-- ESD->ALSA -->
<g id="edge40" class="edge">
<title>ESD->ALSA</title>
-<path fill="none" stroke="black" d="M1065.74,-319.73C1161.99,-323.09 1444.06,-341.78 1647,-446 1691.9,-469.06 1702.93,-479.22 1734,-519 1745.16,-533.29 1765.05,-576.68 1777.6,-605.31"/>
-<polygon fill="black" stroke="black" points="1774.51,-606.98 1781.71,-614.75 1780.93,-604.19 1774.51,-606.98"/>
+<path fill="none" stroke="black" d="M926.79,-320.1C1018.62,-324.52 1303.64,-345.96 1512,-446 1560.96,-469.51 1576.11,-476.56 1610,-519 1630.71,-544.94 1644.66,-580.8 1652.45,-605.09"/>
+<polygon fill="black" stroke="black" points="1649.13,-606.2 1655.42,-614.73 1655.82,-604.14 1649.13,-606.2"/>
</g>
<!-- ESD->OSS -->
<g id="edge39" class="edge">
<title>ESD->OSS</title>
-<path fill="none" stroke="black" d="M1060.9,-328.05C1141.34,-353.23 1367.68,-424.08 1456.03,-451.74"/>
-<polygon fill="black" stroke="black" points="1455.03,-455.09 1465.62,-454.74 1457.12,-448.41 1455.03,-455.09"/>
+<path fill="none" stroke="black" d="M923.88,-327.13C1005.38,-351.79 1249.6,-425.67 1339.39,-452.83"/>
+<polygon fill="black" stroke="black" points="1338.48,-456.21 1349.07,-455.76 1340.51,-449.51 1338.48,-456.21"/>
</g>
<!-- RoarAudio->sndio -->
<g id="edge35" class="edge">
<title>RoarAudio->sndio</title>
-<path fill="none" stroke="black" d="M1103.41,-373.09C1123.8,-345.32 1164.49,-289.9 1188.36,-257.4"/>
-<polygon fill="black" stroke="black" points="1191.23,-259.4 1194.32,-249.27 1185.58,-255.26 1191.23,-259.4"/>
+<path fill="none" stroke="black" d="M998.19,-373.39C1018.49,-345.75 1059.31,-290.14 1083.27,-257.51"/>
+<polygon fill="black" stroke="black" points="1086.17,-259.48 1089.27,-249.34 1080.53,-255.33 1086.17,-259.48"/>
</g>
<!-- RoarAudio->PulseAudio -->
<g id="edge36" class="edge">
<title>RoarAudio->PulseAudio</title>
-<path fill="none" stroke="black" d="M1134.39,-378.65C1144.08,-376.46 1154.34,-374.42 1164,-373 1451.82,-330.79 1798.31,-321.54 1950.23,-319.54"/>
-<polygon fill="black" stroke="black" points="1950.43,-323.04 1960.39,-319.41 1950.34,-316.04 1950.43,-323.04"/>
+<path fill="none" stroke="black" d="M1023.3,-378.81C1032,-376.56 1041.27,-374.45 1050,-373 1314.35,-329.23 1634.33,-320.82 1770.49,-319.29"/>
+<polygon fill="black" stroke="black" points="1770.79,-322.79 1780.75,-319.19 1770.72,-315.79 1770.79,-322.79"/>
</g>
<!-- RoarAudio->aRts -->
<g id="edge38" class="edge">
<title>RoarAudio->aRts</title>
-<path fill="none" stroke="black" d="M1049.66,-378.12C1002.67,-364.61 926.65,-342.76 881.38,-329.74"/>
-<polygon fill="black" stroke="black" points="882.24,-326.35 871.66,-326.95 880.3,-333.08 882.24,-326.35"/>
+<path fill="none" stroke="black" d="M947.67,-379.37C898.03,-365.6 812.23,-341.81 764.53,-328.58"/>
+<polygon fill="black" stroke="black" points="765.24,-325.14 754.67,-325.84 763.37,-331.89 765.24,-325.14"/>
</g>
<!-- RoarAudio->ESD -->
<g id="edge37" class="edge">
<title>RoarAudio->ESD</title>
-<path fill="none" stroke="black" d="M1077.02,-373.17C1069.78,-364.46 1060.79,-353.65 1052.76,-343.98"/>
-<polygon fill="black" stroke="black" points="1055.37,-341.65 1046.29,-336.2 1049.99,-346.13 1055.37,-341.65"/>
+<path fill="none" stroke="black" d="M966.25,-374.24C953.44,-364.03 936.62,-350.61 922.77,-339.56"/>
+<polygon fill="black" stroke="black" points="924.59,-336.53 914.59,-333.03 920.22,-342 924.59,-336.53"/>
</g>
<!-- libcanberra -->
<g id="node25" class="node">
<title>libcanberra</title>
<g id="a_node25"><a xlink:href="http://git.0pointer.net/libcanberra.git/tree/src/driver-order.c" xlink:title="libcanberra">
-<ellipse fill="lightgrey" stroke="black" cx="2271" cy="-787.74" rx="63.89" ry="18"/>
-<text text-anchor="middle" x="2271" y="-784.04" font-family="Times,serif" font-size="14.00">libcanberra</text>
+<ellipse fill="lightgrey" stroke="black" cx="2124" cy="-787.74" rx="50.09" ry="18"/>
+<text text-anchor="middle" x="2124" y="-784.04" font-family="Times,serif" font-size="14.00">libcanberra</text>
</a>
</g>
</g>
<!-- libcanberra->ALSA -->
<g id="edge43" class="edge">
<title>libcanberra->ALSA</title>
-<path fill="none" stroke="black" d="M2226.43,-774.79C2190.92,-764.82 2140.17,-749.57 2097,-732.74 2062.18,-719.17 2056.06,-709.68 2021,-696.74 1956.26,-672.85 1878.35,-653.59 1831.3,-642.95"/>
-<polygon fill="black" stroke="black" points="1831.99,-639.51 1821.46,-640.75 1830.46,-646.35 1831.99,-639.51"/>
+<path fill="none" stroke="black" d="M2083.7,-776.95C2045.81,-767.28 1987.79,-751.28 1939,-732.74 1904.06,-719.46 1897.83,-710.3 1863,-696.74 1807.26,-675.03 1740.7,-655.6 1699.38,-644.27"/>
+<polygon fill="black" stroke="black" points="1700.26,-640.89 1689.7,-641.64 1698.43,-647.64 1700.26,-640.89"/>
</g>
<!-- libcanberra->OSS -->
<g id="edge42" class="edge">
<title>libcanberra->OSS</title>
-<path fill="none" stroke="black" d="M2267.73,-769.75C2259.61,-731.15 2235.41,-635.37 2185,-573 2178.26,-564.66 2115.11,-522.58 2105,-519 1999.7,-481.66 1657.28,-469.29 1535.49,-466.01"/>
-<polygon fill="black" stroke="black" points="1535.5,-462.51 1525.41,-465.75 1535.32,-469.51 1535.5,-462.51"/>
+<path fill="none" stroke="black" d="M2119.76,-769.61C2109.74,-731.52 2081.88,-638.06 2035,-573 2013.64,-543.35 2006.61,-533.34 1973,-519 1871.55,-475.73 1529.99,-467.1 1412.83,-465.41"/>
+<polygon fill="black" stroke="black" points="1412.58,-461.9 1402.53,-465.27 1412.48,-468.9 1412.58,-461.9"/>
</g>
<!-- libcanberra->PulseAudio -->
<g id="edge41" class="edge">
<title>libcanberra->PulseAudio</title>
-<path fill="none" stroke="black" d="M2282.57,-769.71C2300,-742.35 2331,-686.33 2331,-633.87 2331,-633.87 2331,-633.87 2331,-390 2331,-367.37 2315.3,-364 2295,-354 2262.69,-338.08 2172.54,-328.64 2105.89,-323.65"/>
-<polygon fill="black" stroke="black" points="2106.05,-320.16 2095.82,-322.92 2105.54,-327.14 2106.05,-320.16"/>
+<path fill="none" stroke="black" d="M2133.74,-770.08C2152.76,-735.93 2193,-654.99 2193,-581.5 2193,-581.5 2193,-581.5 2193,-390 2193,-331.6 2006.42,-320.55 1903.41,-318.89"/>
+<polygon fill="black" stroke="black" points="1903.46,-315.39 1893.41,-318.76 1903.36,-322.39 1903.46,-315.39"/>
</g>
<!-- libcanberra->gstreamer -->
<g id="edge44" class="edge">
<title>libcanberra->gstreamer</title>
-<path fill="none" stroke="black" d="M2298.77,-771.33C2317.52,-760.94 2342.45,-747.11 2362.75,-735.85"/>
-<polygon fill="black" stroke="black" points="2364.67,-738.78 2371.72,-730.87 2361.28,-732.66 2364.67,-738.78"/>
+<path fill="none" stroke="black" d="M2155.97,-773.86C2170.79,-767.61 2188.51,-759.74 2204,-751.74 2213.39,-746.89 2223.33,-741.18 2232.36,-735.76"/>
+<polygon fill="black" stroke="black" points="2234.32,-738.66 2241.03,-730.47 2230.67,-732.69 2234.32,-738.66"/>
</g>
<!-- OpenAL -->
<g id="node26" class="node">
<title>OpenAL</title>
<g id="a_node26"><a xlink:href="https://www.openal-soft.org/" xlink:title="OpenAL">
-<ellipse fill="lightgrey" stroke="black" cx="1668" cy="-787.74" rx="47.39" ry="18"/>
-<text text-anchor="middle" x="1668" y="-784.04" font-family="Times,serif" font-size="14.00">OpenAL</text>
+<ellipse fill="lightgrey" stroke="black" cx="1517" cy="-787.74" rx="41.69" ry="18"/>
+<text text-anchor="middle" x="1517" y="-784.04" font-family="Times,serif" font-size="14.00">OpenAL</text>
</a>
</g>
</g>
<!-- OpenAL->portaudio -->
<g id="edge52" class="edge">
<title>OpenAL->portaudio</title>
-<path fill="none" stroke="black" d="M1631.77,-776.11C1590.37,-763.97 1522.37,-744.01 1475.96,-730.4"/>
-<polygon fill="black" stroke="black" points="1476.69,-726.97 1466.11,-727.51 1474.72,-733.68 1476.69,-726.97"/>
+<path fill="none" stroke="black" d="M1487.44,-775.02C1457.53,-763.15 1411.08,-744.73 1377.91,-731.57"/>
+<polygon fill="black" stroke="black" points="1379.09,-728.27 1368.5,-727.84 1376.51,-734.78 1379.09,-728.27"/>
</g>
<!-- OpenAL->ALSA -->
<g id="edge49" class="edge">
<title>OpenAL->ALSA</title>
-<path fill="none" stroke="black" d="M1712.84,-781.59C1732.86,-776.97 1755.03,-768.24 1769,-751.74 1790.34,-726.54 1792.88,-687.14 1791.75,-660.93"/>
-<polygon fill="black" stroke="black" points="1795.24,-660.67 1791.11,-650.91 1788.25,-661.11 1795.24,-660.67"/>
+<path fill="none" stroke="black" d="M1558.16,-785.06C1584.08,-781.78 1616.26,-773.23 1636,-751.74 1658.47,-727.27 1662.28,-687.7 1661.95,-661.24"/>
+<polygon fill="black" stroke="black" points="1665.44,-661 1661.61,-651.12 1658.44,-661.23 1665.44,-661"/>
</g>
<!-- OpenAL->JACK -->
<g id="edge53" class="edge">
<title>OpenAL->JACK</title>
-<path fill="none" stroke="black" d="M1715.67,-786.58C1802.48,-785.19 1981.08,-776.89 2021,-732.74 2042.59,-708.86 2037.62,-612.98 2033.64,-565.26"/>
-<polygon fill="black" stroke="black" points="2037.1,-564.7 2032.74,-555.04 2030.13,-565.31 2037.1,-564.7"/>
+<path fill="none" stroke="black" d="M1558.6,-785.95C1640.79,-783.51 1819.78,-773.54 1863,-732.74 1909.27,-689.06 1910.73,-607.58 1907.88,-565.19"/>
+<polygon fill="black" stroke="black" points="1911.36,-564.75 1907.07,-555.06 1904.38,-565.31 1911.36,-564.75"/>
</g>
<!-- OpenAL->OSS -->
<g id="edge50" class="edge">
<title>OpenAL->OSS</title>
-<path fill="none" stroke="black" d="M1620.83,-785.56C1543.14,-782.5 1393.62,-771.6 1361,-732.74 1332.29,-698.54 1357.75,-652.59 1402,-573 1419.56,-541.41 1446.92,-510.23 1466.86,-489.55"/>
-<polygon fill="black" stroke="black" points="1469.61,-491.76 1474.11,-482.17 1464.61,-486.86 1469.61,-491.76"/>
+<path fill="none" stroke="black" d="M1476.75,-782.97C1417.17,-776.49 1309.85,-761.14 1285,-732.74 1238.2,-679.26 1252.92,-639.49 1278,-573 1291.72,-536.63 1323.87,-504.56 1346.97,-485.01"/>
+<polygon fill="black" stroke="black" points="1349.23,-487.69 1354.72,-478.63 1344.78,-482.29 1349.23,-487.69"/>
</g>
<!-- OpenAL->sndio -->
<g id="edge54" class="edge">
<title>OpenAL->sndio</title>
-<path fill="none" stroke="black" d="M1620.97,-785.09C1541.22,-781.31 1384.26,-769.31 1345,-732.74 1258.42,-652.1 1244.1,-615.42 1214,-501 1205.74,-469.61 1216,-460.46 1216,-428 1216,-428 1216,-428 1216,-317 1216,-297.64 1213.66,-275.95 1211.37,-259.32"/>
-<polygon fill="black" stroke="black" points="1214.8,-258.59 1209.9,-249.2 1207.88,-259.6 1214.8,-258.59"/>
+<path fill="none" stroke="black" d="M1476.92,-782.54C1413.12,-775.17 1292.19,-758.25 1258,-732.74 1156.03,-656.67 1129.25,-622.01 1090,-501 1079.86,-469.72 1102,-460.88 1102,-428 1102,-428 1102,-428 1102,-317 1102,-297.75 1102,-276.05 1102,-259.4"/>
+<polygon fill="black" stroke="black" points="1105.5,-259.26 1102,-249.26 1098.5,-259.26 1105.5,-259.26"/>
</g>
<!-- OpenAL->PulseAudio -->
<g id="edge48" class="edge">
<title>OpenAL->PulseAudio</title>
-<path fill="none" stroke="black" d="M1714.91,-784.91C1839.57,-779.67 2172.25,-762.97 2211,-732.74 2283.52,-676.17 2281,-629.97 2281,-538 2281,-538 2281,-538 2281,-390 2281,-353.18 2180.42,-334.57 2106.1,-325.84"/>
-<polygon fill="black" stroke="black" points="2106.13,-322.32 2095.8,-324.67 2105.34,-329.27 2106.13,-322.32"/>
+<path fill="none" stroke="black" d="M1558.67,-787.07C1667.84,-787.23 1959.24,-782.83 2039,-732.74 2070.15,-713.18 2143,-544.82 2143,-538 2143,-538 2143,-538 2143,-390 2143,-341.16 1993.23,-325.91 1903.25,-321.15"/>
+<polygon fill="black" stroke="black" points="1903.29,-317.65 1893.13,-320.65 1902.94,-324.64 1903.29,-317.65"/>
</g>
<!-- SoundIO -->
<g id="node27" class="node">
<title>SoundIO</title>
<g id="a_node27"><a xlink:href="http://libsound.io/" xlink:title="SoundIO">
-<ellipse fill="lightgrey" stroke="black" cx="1872" cy="-714.74" rx="50.89" ry="18"/>
-<text text-anchor="middle" x="1872" y="-711.04" font-family="Times,serif" font-size="14.00">SoundIO</text>
+<ellipse fill="lightgrey" stroke="black" cx="1730" cy="-714.74" rx="42.49" ry="18"/>
+<text text-anchor="middle" x="1730" y="-711.04" font-family="Times,serif" font-size="14.00">SoundIO</text>
</a>
</g>
</g>
<!-- OpenAL->SoundIO -->
<g id="edge51" class="edge">
<title>OpenAL->SoundIO</title>
-<path fill="none" stroke="black" d="M1709.94,-779.14C1737.99,-773.34 1775.41,-764.22 1807,-751.74 1817.93,-747.42 1829.31,-741.62 1839.44,-735.93"/>
-<polygon fill="black" stroke="black" points="1841.44,-738.82 1848.34,-730.79 1837.93,-732.76 1841.44,-738.82"/>
+<path fill="none" stroke="black" d="M1556.56,-781.86C1589.03,-776.93 1635.73,-767.71 1674,-751.74 1683.58,-747.74 1693.33,-742.12 1701.95,-736.5"/>
+<polygon fill="black" stroke="black" points="1704.16,-739.23 1710.47,-730.72 1700.23,-733.44 1704.16,-739.23"/>
</g>
<!-- SoundIO->ALSA -->
<g id="edge57" class="edge">
<title>SoundIO->ALSA</title>
-<path fill="none" stroke="black" d="M1855.2,-697.58C1843.48,-686.3 1827.63,-671.04 1814.37,-658.29"/>
-<polygon fill="black" stroke="black" points="1816.55,-655.53 1806.92,-651.11 1811.7,-660.57 1816.55,-655.53"/>
+<path fill="none" stroke="black" d="M1715.83,-697.58C1706.04,-686.4 1692.83,-671.33 1681.71,-658.64"/>
+<polygon fill="black" stroke="black" points="1684.34,-656.33 1675.11,-651.11 1679.07,-660.94 1684.34,-656.33"/>
</g>
<!-- SoundIO->JACK -->
<g id="edge55" class="edge">
<title>SoundIO->JACK</title>
-<path fill="none" stroke="black" d="M1897.84,-699.17C1906.92,-693.42 1916.89,-686.37 1925,-678.74 1944.93,-660.01 1988.75,-598.76 2013.35,-563.54"/>
-<polygon fill="black" stroke="black" points="2016.32,-565.4 2019.16,-555.19 2010.58,-561.4 2016.32,-565.4"/>
+<path fill="none" stroke="black" d="M1755.99,-700.34C1766.21,-694.44 1777.69,-686.97 1787,-678.74 1817.97,-651.35 1818.42,-637.68 1845,-606 1857.32,-591.32 1871.49,-575.22 1882.96,-562.38"/>
+<polygon fill="black" stroke="black" points="1885.65,-564.62 1889.72,-554.84 1880.44,-559.95 1885.65,-564.62"/>
</g>
<!-- SoundIO->PulseAudio -->
<g id="edge56" class="edge">
<title>SoundIO->PulseAudio</title>
-<path fill="none" stroke="black" d="M1882.95,-697C1911.72,-652.24 1990.09,-525.24 2031,-409 2039.31,-385.4 2048.03,-378.51 2043,-354 2042.45,-351.3 2041.67,-348.55 2040.77,-345.84"/>
-<polygon fill="black" stroke="black" points="2043.97,-344.4 2037.08,-336.35 2037.44,-346.94 2043.97,-344.4"/>
+<path fill="none" stroke="black" d="M1739.41,-697.17C1760.16,-659.92 1810.14,-566.23 1837,-482 1847.09,-450.36 1847.9,-441.82 1853,-409 1856.77,-384.75 1864.55,-377.65 1858,-354 1857.18,-351.02 1856.02,-348.04 1854.68,-345.15"/>
+<polygon fill="black" stroke="black" points="1857.73,-343.44 1849.89,-336.31 1851.57,-346.77 1857.73,-343.44"/>
</g>
<!-- RtAudio -->
<g id="node28" class="node">
<title>RtAudio</title>
<g id="a_node28"><a xlink:href="https://www.music.mcgill.ca/~gary/rtaudio/apinotes.html" xlink:title="RtAudio">
-<ellipse fill="lightgrey" stroke="black" cx="2154" cy="-714.74" rx="48.19" ry="18"/>
-<text text-anchor="middle" x="2154" y="-711.04" font-family="Times,serif" font-size="14.00">RtAudio</text>
+<ellipse fill="lightgrey" stroke="black" cx="1989" cy="-714.74" rx="40.89" ry="18"/>
+<text text-anchor="middle" x="1989" y="-711.04" font-family="Times,serif" font-size="14.00">RtAudio</text>
</a>
</g>
</g>
<!-- RtAudio->ALSA -->
<g id="edge59" class="edge">
<title>RtAudio->ALSA</title>
-<path fill="none" stroke="black" d="M2113.54,-704.89C2043.84,-689.64 1901.79,-658.55 1831.02,-643.07"/>
-<polygon fill="black" stroke="black" points="1831.63,-639.62 1821.12,-640.9 1830.14,-646.45 1831.63,-639.62"/>
+<path fill="none" stroke="black" d="M1954.1,-705.27C1892.57,-690.33 1765.14,-659.39 1700.09,-643.6"/>
+<polygon fill="black" stroke="black" points="1700.75,-640.16 1690.21,-641.2 1699.1,-646.96 1700.75,-640.16"/>
</g>
<!-- RtAudio->JACK -->
<g id="edge60" class="edge">
<title>RtAudio->JACK</title>
-<path fill="none" stroke="black" d="M2121.24,-701.52C2109.85,-695.98 2097.76,-688.45 2089,-678.74 2073.33,-661.37 2051.6,-600.72 2039.68,-564.96"/>
-<polygon fill="black" stroke="black" points="2042.91,-563.56 2036.45,-555.16 2036.26,-565.75 2042.91,-563.56"/>
+<path fill="none" stroke="black" d="M1968.87,-698.65C1962.43,-693 1955.75,-686.13 1951,-678.74 1938.78,-659.73 1921.65,-600.45 1912.12,-565.18"/>
+<polygon fill="black" stroke="black" points="1915.38,-563.83 1909.42,-555.08 1908.62,-565.64 1915.38,-563.83"/>
</g>
<!-- RtAudio->OSS -->
<g id="edge58" class="edge">
<title>RtAudio->OSS</title>
-<path fill="none" stroke="black" d="M2139.53,-697.47C2135.05,-691.83 2130.4,-685.27 2127,-678.74 2092.63,-612.76 2135.63,-564.79 2077,-519 2050.07,-497.97 1804.02,-504.2 1770,-501 1685.05,-493.02 1586.08,-479.09 1532.13,-471.1"/>
-<polygon fill="black" stroke="black" points="1532.36,-467.59 1521.95,-469.58 1531.33,-474.52 1532.36,-467.59"/>
-<text text-anchor="middle" x="2146" y="-576.8" font-family="Times,serif" font-size="14.00">OSS 4.0+</text>
+<path fill="none" stroke="black" d="M1988.07,-696.71C1985.35,-653.64 1975.81,-542.21 1949,-519 1923.25,-496.71 1676.9,-504.25 1643,-501 1559.1,-492.95 1461.16,-478.66 1409.39,-470.72"/>
+<polygon fill="black" stroke="black" points="1409.79,-467.24 1399.37,-469.17 1408.72,-474.16 1409.79,-467.24"/>
+<text text-anchor="middle" x="2003.5" y="-576.8" font-family="Times,serif" font-size="14.00">OSS 4.0+</text>
</g>
<!-- RtAudio->PulseAudio -->
<g id="edge61" class="edge">
<title>RtAudio->PulseAudio</title>
-<path fill="none" stroke="black" d="M2161.92,-696.96C2173.36,-670.69 2192.37,-618.19 2185,-573 2169.91,-480.48 2162.59,-455.46 2118,-373 2112.88,-363.54 2111.44,-360.68 2103,-354 2095.06,-347.71 2085.8,-342.23 2076.56,-337.6"/>
-<polygon fill="black" stroke="black" points="2077.9,-334.36 2067.37,-333.24 2074.9,-340.68 2077.9,-334.36"/>
+<path fill="none" stroke="black" d="M2000.9,-697.06C2018.07,-670.93 2046.53,-618.61 2035,-573 2007.64,-464.77 1999.53,-423.29 1912,-354 1903.2,-347.04 1892.79,-341.06 1882.57,-336.13"/>
+<polygon fill="black" stroke="black" points="1883.84,-332.86 1873.29,-331.88 1880.93,-339.22 1883.84,-332.86"/>
</g>
<!-- JUCE -->
<g id="node29" class="node">
<title>JUCE</title>
-<ellipse fill="lightgrey" stroke="black" cx="1976" cy="-714.74" rx="36" ry="18"/>
-<text text-anchor="middle" x="1976" y="-711.04" font-family="Times,serif" font-size="14.00">JUCE</text>
+<ellipse fill="lightgrey" stroke="black" cx="1822" cy="-714.74" rx="31.7" ry="18"/>
+<text text-anchor="middle" x="1822" y="-711.04" font-family="Times,serif" font-size="14.00">JUCE</text>
</g>
<!-- JUCE->ALSA -->
<g id="edge62" class="edge">
<title>JUCE->ALSA</title>
-<path fill="none" stroke="black" d="M1948.64,-702.84C1943.16,-700.75 1937.41,-698.62 1932,-696.74 1906.51,-687.87 1898.93,-689.08 1874,-678.74 1856.39,-671.43 1837.56,-661.71 1822.11,-653.18"/>
-<polygon fill="black" stroke="black" points="1823.41,-649.89 1812.97,-648.06 1819.98,-656 1823.41,-649.89"/>
+<path fill="none" stroke="black" d="M1796.87,-703.26C1791.63,-701.09 1786.14,-698.83 1781,-696.74 1761.05,-688.61 1755.33,-688.24 1736,-678.74 1720.92,-671.33 1704.81,-662.03 1691.32,-653.82"/>
+<polygon fill="black" stroke="black" points="1692.79,-650.62 1682.44,-648.35 1689.12,-656.58 1692.79,-650.62"/>
</g>
<!-- JUCE->JACK -->
<g id="edge63" class="edge">
<title>JUCE->JACK</title>
-<path fill="none" stroke="black" d="M1980.11,-696.62C1986.7,-669.9 2000.46,-616.81 2016,-573 2016.97,-570.25 2018.06,-567.42 2019.18,-564.6"/>
-<polygon fill="black" stroke="black" points="2022.45,-565.85 2023.08,-555.27 2015.99,-563.15 2022.45,-565.85"/>
+<path fill="none" stroke="black" d="M1829.81,-697.21C1844.26,-666.62 1875.26,-600.97 1892.61,-564.24"/>
+<polygon fill="black" stroke="black" points="1895.8,-565.67 1896.91,-555.13 1889.47,-562.68 1895.8,-565.67"/>
</g>
<!-- SDL1 -->
<g id="node30" class="node">
<title>SDL1</title>
<g id="a_node30"><a xlink:href="https://hg.libsdl.org/SDL/file/fba40d9f4a73/src/audio" xlink:title="libSDL-1.2">
-<ellipse fill="lightgrey" stroke="black" cx="922" cy="-714.74" rx="59.59" ry="18"/>
-<text text-anchor="middle" x="922" y="-711.04" font-family="Times,serif" font-size="14.00">libSDL-1.2</text>
+<ellipse fill="lightgrey" stroke="black" cx="798" cy="-714.74" rx="50.89" ry="18"/>
+<text text-anchor="middle" x="798" y="-711.04" font-family="Times,serif" font-size="14.00">libSDL-1.2</text>
</a>
</g>
</g>
<!-- SDL1->ALSA -->
<g id="edge70" class="edge">
<title>SDL1->ALSA</title>
-<path fill="none" stroke="black" d="M976.07,-706.98C1004.07,-703.62 1038.84,-699.66 1070,-696.74 1295.83,-675.57 1353.26,-681.84 1579,-659.74 1636.25,-654.14 1702.03,-645.71 1744.49,-640.01"/>
-<polygon fill="black" stroke="black" points="1745.06,-643.46 1754.5,-638.66 1744.12,-636.53 1745.06,-643.46"/>
+<path fill="none" stroke="black" d="M845.2,-708.02C875.18,-704.49 914.84,-700.03 950,-696.74 1167.89,-676.35 1223.18,-680.8 1441,-659.74 1502.03,-653.84 1572.42,-645.2 1616.56,-639.55"/>
+<polygon fill="black" stroke="black" points="1617.18,-643 1626.66,-638.25 1616.29,-636.06 1617.18,-643"/>
</g>
<!-- SDL1->OSS -->
<g id="edge74" class="edge">
<title>SDL1->OSS</title>
-<path fill="none" stroke="black" d="M945.67,-697.92C1005.82,-658.42 1170.57,-554.74 1322,-500 1364.63,-484.59 1415.86,-475.2 1450.87,-470.08"/>
-<polygon fill="black" stroke="black" points="1451.77,-473.49 1461.18,-468.63 1450.79,-466.56 1451.77,-473.49"/>
+<path fill="none" stroke="black" d="M820.77,-698.44C880.15,-659.26 1045.68,-554.58 1198,-500 1243.93,-483.54 1299.56,-474.09 1335.59,-469.25"/>
+<polygon fill="black" stroke="black" points="1336.19,-472.7 1345.65,-467.95 1335.29,-465.76 1336.19,-472.7"/>
</g>
<!-- SDL1->PulseAudio -->
<g id="edge75" class="edge">
<title>SDL1->PulseAudio</title>
-<path fill="none" stroke="black" d="M932.32,-696.72C946.45,-674.29 973.46,-634.36 1003,-606 1093.36,-519.26 1123.04,-502.15 1235,-446 1325.58,-400.57 1351.79,-393.66 1451,-373 1543.58,-353.72 1568.83,-363.64 1663,-355 1762.62,-345.86 1877.44,-334.38 1951.28,-326.87"/>
-<polygon fill="black" stroke="black" points="1951.83,-330.34 1961.42,-325.84 1951.12,-323.37 1951.83,-330.34"/>
+<path fill="none" stroke="black" d="M808.05,-697.07C822.07,-674.68 849.17,-634.4 879,-606 970.77,-518.61 1001.96,-503.27 1115,-446 1201.27,-402.29 1225.68,-394.4 1320,-373 1330.88,-370.53 1633.59,-339.64 1770.67,-325.72"/>
+<polygon fill="black" stroke="black" points="1771.05,-329.2 1780.65,-324.71 1770.34,-322.24 1771.05,-329.2"/>
</g>
<!-- SDL1->aRts -->
<g id="edge71" class="edge">
<title>SDL1->aRts</title>
-<path fill="none" stroke="black" d="M862.45,-712.76C770.9,-710.51 600.37,-703.07 545,-678.74 533.48,-673.68 529.11,-671.24 524,-659.74 453.68,-501.3 770,-511.33 770,-501 770,-501 770,-501 770,-390 770,-365.61 791.2,-346.99 810.9,-334.95"/>
-<polygon fill="black" stroke="black" points="812.82,-337.88 819.77,-329.88 809.35,-331.8 812.82,-337.88"/>
+<path fill="none" stroke="black" d="M747.95,-711.74C673.01,-708.13 535.67,-698.93 491,-678.74 479.53,-673.56 475.11,-671.24 470,-659.74 460.31,-637.91 458.21,-626.77 470,-606 514.98,-526.79 646,-592.09 646,-501 646,-501 646,-501 646,-390 646,-361.97 673.61,-342.74 697.18,-331.44"/>
+<polygon fill="black" stroke="black" points="698.91,-334.5 706.6,-327.21 696.04,-328.11 698.91,-334.5"/>
</g>
<!-- SDL1->ESD -->
<g id="edge72" class="edge">
<title>SDL1->ESD</title>
-<path fill="none" stroke="black" d="M862.05,-714.48C737.21,-714.14 468.03,-702.58 557,-606 590.08,-570.09 730.17,-604.84 776,-588 837.98,-565.22 964.71,-406.63 1012.86,-344.18"/>
-<polygon fill="black" stroke="black" points="1015.8,-346.1 1019.12,-336.04 1010.25,-341.83 1015.8,-346.1"/>
+<path fill="none" stroke="black" d="M747.56,-711.99C645.72,-706.76 431.1,-686.17 503,-606 527.63,-578.54 635.13,-604.73 668,-588 776.51,-532.77 854.43,-401.44 883.96,-345.24"/>
+<polygon fill="black" stroke="black" points="887.11,-346.77 888.59,-336.28 880.89,-343.55 887.11,-346.77"/>
</g>
<!-- SDL1->NAS -->
<g id="edge73" class="edge">
<title>SDL1->NAS</title>
-<path fill="none" stroke="black" d="M888.12,-699.64C858.2,-687.2 814.18,-668.89 780.18,-654.75"/>
-<polygon fill="black" stroke="black" points="781.46,-651.48 770.88,-650.88 778.77,-657.95 781.46,-651.48"/>
+<path fill="none" stroke="black" d="M770.29,-699.64C746.25,-687.41 711.07,-669.51 683.47,-655.48"/>
+<polygon fill="black" stroke="black" points="684.93,-652.29 674.43,-650.88 681.75,-658.53 684.93,-652.29"/>
</g>
<!-- SDL2 -->
<g id="node31" class="node">
<title>SDL2</title>
<g id="a_node31"><a xlink:href="https://hg.libsdl.org/SDL/file/355a4f94a782" xlink:title="libSDL-2.0">
-<ellipse fill="lightgrey" stroke="black" cx="440" cy="-714.74" rx="59.59" ry="18"/>
-<text text-anchor="middle" x="440" y="-711.04" font-family="Times,serif" font-size="14.00">libSDL-2.0</text>
+<ellipse fill="lightgrey" stroke="black" cx="386" cy="-714.74" rx="50.89" ry="18"/>
+<text text-anchor="middle" x="386" y="-711.04" font-family="Times,serif" font-size="14.00">libSDL-2.0</text>
</a>
</g>
</g>
<!-- SDL2->ALSA -->
<g id="edge76" class="edge">
<title>SDL2->ALSA</title>
-<path fill="none" stroke="black" d="M498.85,-711.21C716.82,-701.8 1471.19,-668.92 1579,-659.74 1636.31,-654.86 1702.08,-646.27 1744.52,-640.34"/>
-<polygon fill="black" stroke="black" points="1745.11,-643.79 1754.52,-638.92 1744.13,-636.86 1745.11,-643.79"/>
+<path fill="none" stroke="black" d="M435.9,-711.28C638.41,-701.28 1390.43,-664.02 1441,-659.74 1502.1,-654.57 1572.47,-645.75 1616.59,-639.86"/>
+<polygon fill="black" stroke="black" points="1617.23,-643.31 1626.68,-638.5 1616.3,-636.37 1617.23,-643.31"/>
</g>
<!-- SDL2->JACK -->
<g id="edge80" class="edge">
<title>SDL2->JACK</title>
-<path fill="none" stroke="black" d="M455.31,-697.08C481.17,-669.4 533.03,-615.96 557,-606 599.42,-588.37 924.11,-590.08 970,-588 1361.73,-570.23 1834.75,-547.48 1983.72,-540.29"/>
-<polygon fill="black" stroke="black" points="1984.06,-543.78 1993.88,-539.8 1983.73,-536.78 1984.06,-543.78"/>
+<path fill="none" stroke="black" d="M400.9,-697.53C426.63,-670 478.93,-616.07 503,-606 507.01,-604.32 1619.42,-551.53 1859.62,-540.15"/>
+<polygon fill="black" stroke="black" points="1859.93,-543.64 1869.75,-539.67 1859.6,-536.65 1859.93,-543.64"/>
</g>
<!-- SDL2->OSS -->
<g id="edge82" class="edge">
<title>SDL2->OSS</title>
-<path fill="none" stroke="black" d="M442.48,-696.4C447.04,-671.64 459.29,-626.84 490,-606 519.56,-585.94 775.52,-592.2 811,-588 981.46,-567.82 1022.08,-549.49 1191,-519 1284.94,-502.04 1395.41,-482.27 1452.85,-472"/>
-<polygon fill="black" stroke="black" points="1453.71,-475.4 1462.94,-470.19 1452.48,-468.51 1453.71,-475.4"/>
+<path fill="none" stroke="black" d="M388.51,-696.45C393.11,-671.74 405.4,-627.01 436,-606 460.51,-589.17 673.51,-591.78 703,-588 866.33,-567.09 905.03,-548.64 1067,-519 1164.41,-501.17 1279.47,-481.15 1336.77,-471.24"/>
+<polygon fill="black" stroke="black" points="1337.52,-474.66 1346.78,-469.51 1336.33,-467.76 1337.52,-474.66"/>
</g>
<!-- SDL2->sndio -->
<g id="edge84" class="edge">
<title>SDL2->sndio</title>
-<path fill="none" stroke="black" d="M380.45,-712.41C287.9,-709.65 114.22,-701.53 57,-678.74 27.05,-666.81 0,-666.11 0,-633.87 0,-633.87 0,-633.87 0,-317 0,-257.94 931.8,-237.04 1157.98,-232.84"/>
-<polygon fill="black" stroke="black" points="1158.27,-236.34 1168.21,-232.65 1158.15,-229.34 1158.27,-236.34"/>
+<path fill="none" stroke="black" d="M335.14,-713.73C230.32,-712.32 0,-701.53 0,-633.87 0,-633.87 0,-633.87 0,-317 0,-262.86 856.66,-238.11 1059.37,-233.01"/>
+<polygon fill="black" stroke="black" points="1059.71,-236.51 1069.62,-232.76 1059.53,-229.51 1059.71,-236.51"/>
</g>
<!-- SDL2->PulseAudio -->
<g id="edge83" class="edge">
<title>SDL2->PulseAudio</title>
-<path fill="none" stroke="black" d="M435.92,-696.55C431.48,-673.18 427.58,-631.39 449,-606 591.07,-437.58 716.36,-539.72 929,-482 1014.4,-458.82 1224.88,-388.52 1312,-373 1541.65,-332.09 1818.13,-322.14 1950.28,-319.74"/>
-<polygon fill="black" stroke="black" points="1950.37,-323.24 1960.31,-319.57 1950.25,-316.24 1950.37,-323.24"/>
+<path fill="none" stroke="black" d="M382.03,-696.64C377.71,-673.37 373.96,-631.71 395,-606 520.15,-453.06 632.37,-537.62 822,-482 903.84,-458 1106.18,-388.74 1190,-373 1399.42,-333.67 1652.37,-322.98 1770.35,-320.08"/>
+<polygon fill="black" stroke="black" points="1770.75,-323.57 1780.66,-319.84 1770.58,-316.57 1770.75,-323.57"/>
</g>
<!-- SDL2->aRts -->
<g id="edge77" class="edge">
<title>SDL2->aRts</title>
-<path fill="none" stroke="black" d="M381.21,-711.34C281.61,-706.83 87.95,-695.96 62,-678.74 43.16,-666.23 38,-656.49 38,-633.87 38,-633.87 38,-633.87 38,-390 38,-351.3 635.48,-326.61 801.6,-320.49"/>
-<polygon fill="black" stroke="black" points="802.04,-323.98 811.91,-320.12 801.79,-316.98 802.04,-323.98"/>
+<path fill="none" stroke="black" d="M335.07,-713.91C255.27,-713.26 105.38,-708.01 62,-678.74 43.25,-666.09 38,-656.49 38,-633.87 38,-633.87 38,-633.87 38,-390 38,-323.58 549.03,-318.88 692.78,-318.88"/>
+<polygon fill="black" stroke="black" points="692.87,-322.38 702.87,-318.88 692.88,-315.38 692.87,-322.38"/>
</g>
<!-- SDL2->ESD -->
<g id="edge78" class="edge">
<title>SDL2->ESD</title>
-<path fill="none" stroke="black" d="M380.18,-714.15C261.54,-712.99 14.55,-699.64 95,-606 195.93,-488.52 640.91,-560.27 784,-501 872.69,-464.26 880.56,-429.74 958,-373 973.3,-361.79 990.4,-349.31 1004.31,-339.17"/>
-<polygon fill="black" stroke="black" points="1006.49,-341.91 1012.51,-333.19 1002.37,-336.25 1006.49,-341.91"/>
+<path fill="none" stroke="black" d="M335.56,-712.2C235.52,-707.37 27.24,-687.51 95,-606 258.27,-409.59 426.72,-604.99 660,-501 749.29,-461.2 835.54,-381.38 874.85,-342.02"/>
+<polygon fill="black" stroke="black" points="877.53,-344.29 882.07,-334.71 872.55,-339.37 877.53,-344.29"/>
</g>
<!-- SDL2->NAS -->
<g id="edge81" class="edge">
<title>SDL2->NAS</title>
-<path fill="none" stroke="black" d="M482.48,-702.04C528.64,-689.33 603.17,-668.8 658.4,-653.59"/>
-<polygon fill="black" stroke="black" points="659.42,-656.94 668.13,-650.91 657.56,-650.19 659.42,-656.94"/>
+<path fill="none" stroke="black" d="M422.81,-702.21C463.07,-689.6 528.34,-669.16 577.02,-653.91"/>
+<polygon fill="black" stroke="black" points="578.33,-657.17 586.83,-650.84 576.24,-650.49 578.33,-657.17"/>
</g>
<!-- FusionSound -->
<g id="node32" class="node">
<title>FusionSound</title>
-<ellipse fill="red" stroke="black" cx="231" cy="-632.87" rx="126.64" ry="26.74"/>
-<text text-anchor="middle" x="231" y="-636.67" font-family="Times,serif" font-size="14.00">DirectFB/FusionSound</text>
-<text text-anchor="middle" x="231" y="-621.67" font-family="Times,serif" font-size="14.00">[dead]</text>
+<ellipse fill="red" stroke="black" cx="204" cy="-632.87" rx="100.32" ry="26.74"/>
+<text text-anchor="middle" x="204" y="-636.67" font-family="Times,serif" font-size="14.00">DirectFB/FusionSound</text>
+<text text-anchor="middle" x="204" y="-621.67" font-family="Times,serif" font-size="14.00">[dead]</text>
</g>
<!-- SDL2->FusionSound -->
<g id="edge79" class="edge">
<title>SDL2->FusionSound</title>
-<path fill="none" stroke="red" d="M404.55,-700.19C376.12,-689.33 335.36,-673.75 300.49,-660.43"/>
-<polygon fill="red" stroke="red" points="301.41,-657.03 290.82,-656.73 298.91,-663.57 301.41,-657.03"/>
+<path fill="none" stroke="red" d="M355.13,-700.19C330.22,-689.26 294.43,-673.56 263.94,-660.17"/>
+<polygon fill="red" stroke="red" points="265.22,-656.92 254.66,-656.1 262.41,-663.33 265.22,-656.92"/>
</g>
<!-- phonon -->
<g id="node33" class="node">
<title>phonon</title>
-<ellipse fill="lightgrey" stroke="black" cx="2506" cy="-787.74" rx="44.69" ry="18"/>
-<text text-anchor="middle" x="2506" y="-784.04" font-family="Times,serif" font-size="14.00">phonon</text>
+<ellipse fill="lightgrey" stroke="black" cx="2357" cy="-787.74" rx="37.09" ry="18"/>
+<text text-anchor="middle" x="2357" y="-784.04" font-family="Times,serif" font-size="14.00">phonon</text>
</g>
<!-- phonon->PulseAudio -->
<g id="edge91" class="edge">
<title>phonon->PulseAudio</title>
-<path fill="none" stroke="black" d="M2521.68,-770.77C2530.39,-760.75 2540.37,-747.04 2545,-732.74 2549.92,-717.52 2547.67,-712.52 2545,-696.74 2519.05,-543.54 2526.04,-479.62 2413,-373 2369.98,-332.42 2205.47,-322.1 2105.94,-319.62"/>
-<polygon fill="black" stroke="black" points="2106,-316.12 2095.92,-319.39 2105.84,-323.12 2106,-316.12"/>
+<path fill="none" stroke="black" d="M2371.9,-771.16C2380.47,-761.07 2390.43,-747.17 2395,-732.74 2399.83,-717.49 2396.72,-712.65 2395,-696.74 2378.6,-545.52 2401.98,-469 2284,-373 2227.17,-326.76 2013.9,-319.28 1903.76,-318.6"/>
+<polygon fill="black" stroke="black" points="1903.45,-315.09 1893.43,-318.55 1903.41,-322.09 1903.45,-315.09"/>
</g>
<!-- phonon->gstreamer -->
<g id="edge89" class="edge">
<title>phonon->gstreamer</title>
-<path fill="none" stroke="black" d="M2483.83,-772.03C2468.61,-761.93 2448.16,-748.36 2431.16,-737.08"/>
-<polygon fill="black" stroke="black" points="2432.89,-734.03 2422.63,-731.42 2429.02,-739.86 2432.89,-734.03"/>
+<path fill="none" stroke="black" d="M2337.73,-772.03C2324.65,-762.05 2307.14,-748.68 2292.47,-737.47"/>
+<polygon fill="black" stroke="black" points="2294.28,-734.46 2284.21,-731.17 2290.03,-740.02 2294.28,-734.46"/>
</g>
<!-- VLC -->
<g id="node34" class="node">
<title>VLC</title>
<g id="a_node34"><a xlink:href="https://code.videolan.org/videolan/vlc/-/tree/master/modules/audio_output" xlink:title="VLC">
-<ellipse fill="lightgrey" stroke="black" cx="2506" cy="-714.74" rx="29.8" ry="18"/>
-<text text-anchor="middle" x="2506" y="-711.04" font-family="Times,serif" font-size="14.00">VLC</text>
+<ellipse fill="lightgrey" stroke="black" cx="2357" cy="-714.74" rx="28.7" ry="18"/>
+<text text-anchor="middle" x="2357" y="-711.04" font-family="Times,serif" font-size="14.00">VLC</text>
</a>
</g>
</g>
<!-- phonon->VLC -->
<g id="edge90" class="edge">
<title>phonon->VLC</title>
-<path fill="none" stroke="black" d="M2506,-769.55C2506,-761.53 2506,-751.79 2506,-742.81"/>
-<polygon fill="black" stroke="black" points="2509.5,-742.77 2506,-732.77 2502.5,-742.77 2509.5,-742.77"/>
+<path fill="none" stroke="black" d="M2357,-769.55C2357,-761.53 2357,-751.79 2357,-742.81"/>
+<polygon fill="black" stroke="black" points="2360.5,-742.77 2357,-732.77 2353.5,-742.77 2360.5,-742.77"/>
</g>
<!-- VLC->ALSA -->
<g id="edge100" class="edge">
<title>VLC->ALSA</title>
-<path fill="none" stroke="black" d="M2483.75,-702.59C2478.38,-700.31 2472.58,-698.18 2467,-696.74 2347.45,-665.99 1971.73,-643.57 1837.37,-636.35"/>
-<polygon fill="black" stroke="black" points="1837.17,-632.84 1827,-635.8 1836.79,-639.83 1837.17,-632.84"/>
+<path fill="none" stroke="black" d="M2335.34,-702.6C2330.11,-700.32 2324.45,-698.18 2319,-696.74 2202.69,-666.06 1835.96,-643.52 1706.12,-636.32"/>
+<polygon fill="black" stroke="black" points="1706.28,-632.82 1696.1,-635.77 1705.9,-639.81 1706.28,-632.82"/>
</g>
<!-- VLC->JACK -->
<g id="edge101" class="edge">
<title>VLC->JACK</title>
-<path fill="none" stroke="black" d="M2484.47,-702.25C2434.33,-675.93 2305.37,-610.62 2191,-573 2153.83,-560.77 2110.39,-551.58 2078.16,-545.69"/>
-<polygon fill="black" stroke="black" points="2078.57,-542.21 2068.11,-543.89 2077.34,-549.1 2078.57,-542.21"/>
+<path fill="none" stroke="black" d="M2335.61,-702.47C2285.82,-676.6 2157.82,-612.2 2045,-573 2013.7,-562.13 1977.37,-553.15 1949.57,-547.01"/>
+<polygon fill="black" stroke="black" points="1950.25,-543.57 1939.74,-544.87 1948.77,-550.41 1950.25,-543.57"/>
</g>
<!-- VLC->OSS -->
<g id="edge102" class="edge">
<title>VLC->OSS</title>
-<path fill="none" stroke="black" d="M2490.01,-699.32C2448.17,-662.47 2330.63,-564.59 2214,-519 2089.63,-470.39 1674.39,-465.27 1536.75,-464.94"/>
-<polygon fill="black" stroke="black" points="1536.57,-461.44 1526.57,-464.92 1536.56,-468.44 1536.57,-461.44"/>
+<path fill="none" stroke="black" d="M2341.54,-699.27C2301.08,-662.3 2187.25,-564.16 2073,-519 1951.58,-471.01 1543.18,-465.52 1413.13,-465.01"/>
+<polygon fill="black" stroke="black" points="1412.85,-461.51 1402.84,-464.98 1412.83,-468.51 1412.85,-461.51"/>
</g>
<!-- VLC->sndio -->
<g id="edge104" class="edge">
<title>VLC->sndio</title>
-<path fill="none" stroke="black" d="M2531.79,-705.22C2553.25,-696.86 2583.08,-682.09 2601,-659.74 2604.52,-655.35 2647.66,-510.18 2649,-501 2653.77,-468.41 2665.08,-453.11 2645,-427 2612.53,-384.77 2587.75,-392.05 2538,-373 2421.91,-328.54 2390.33,-322.1 2268,-300 2069.55,-264.14 1436.89,-239.96 1255.84,-233.64"/>
-<polygon fill="black" stroke="black" points="1255.92,-230.14 1245.81,-233.29 1255.68,-237.14 1255.92,-230.14"/>
+<path fill="none" stroke="black" d="M2382.94,-706.9C2407,-699.25 2442.15,-684.57 2463,-659.74 2466.48,-655.59 2509.62,-510.47 2511,-501 2515.77,-468.41 2527.12,-453.07 2507,-427 2474.21,-384.52 2449.15,-392.1 2399,-373 2282.83,-328.76 2251.32,-322.15 2129,-300 1752,-231.72 1286.08,-230.12 1144.65,-231.39"/>
+<polygon fill="black" stroke="black" points="1144.23,-227.9 1134.27,-231.5 1144.3,-234.9 1144.23,-227.9"/>
</g>
<!-- VLC->PulseAudio -->
<g id="edge103" class="edge">
<title>VLC->PulseAudio</title>
-<path fill="none" stroke="black" d="M2504.13,-696.52C2497.53,-642.9 2470.96,-476.35 2387,-373 2352.63,-330.7 2200.85,-320.91 2105.99,-319.01"/>
-<polygon fill="black" stroke="black" points="2105.91,-315.5 2095.85,-318.83 2105.79,-322.5 2105.91,-315.5"/>
+<path fill="none" stroke="black" d="M2357.66,-696.39C2358.99,-633.18 2353.69,-415.68 2222,-354 2167.1,-328.28 1997.94,-321.43 1903.13,-319.63"/>
+<polygon fill="black" stroke="black" points="1903.13,-316.13 1893.07,-319.45 1903.01,-323.13 1903.13,-316.13"/>
</g>
<!-- ClanLib -->
<g id="node35" class="node">
<title>ClanLib</title>
<g id="a_node35"><a xlink:href="https://github.com/sphair/ClanLib/tree/master/Sources/Sound/Platform/Linux" xlink:title="ClanLib">
-<ellipse fill="lightgrey" stroke="black" cx="1546" cy="-714.74" rx="46.29" ry="18"/>
-<text text-anchor="middle" x="1546" y="-711.04" font-family="Times,serif" font-size="14.00">ClanLib</text>
+<ellipse fill="lightgrey" stroke="black" cx="1440" cy="-714.74" rx="39.79" ry="18"/>
+<text text-anchor="middle" x="1440" y="-711.04" font-family="Times,serif" font-size="14.00">ClanLib</text>
</a>
</g>
</g>
<!-- ClanLib->ALSA -->
<g id="edge92" class="edge">
<title>ClanLib->ALSA</title>
-<path fill="none" stroke="black" d="M1580.84,-702.73C1587.82,-700.65 1595.12,-698.55 1602,-696.74 1637.24,-687.44 1647.28,-689.83 1682,-678.74 1706.52,-670.91 1733.21,-659.72 1753.81,-650.47"/>
-<polygon fill="black" stroke="black" points="1755.45,-653.57 1763.1,-646.25 1752.55,-647.2 1755.45,-653.57"/>
+<path fill="none" stroke="black" d="M1470.25,-703.02C1476.44,-700.89 1482.92,-698.71 1489,-696.74 1515.49,-688.18 1522.73,-687.97 1549,-678.74 1574.51,-669.78 1602.75,-658.34 1624.37,-649.25"/>
+<polygon fill="black" stroke="black" points="1625.95,-652.38 1633.8,-645.26 1623.22,-645.94 1625.95,-652.38"/>
</g>
<!-- ClanLib->OSS -->
<g id="edge93" class="edge">
<title>ClanLib->OSS</title>
-<path fill="none" stroke="black" d="M1559.3,-697.37C1566.68,-687.2 1575.13,-673.49 1579,-659.74 1585.47,-636.75 1585.52,-628.98 1579,-606 1578.09,-602.8 1533.02,-530.53 1508.12,-490.73"/>
-<polygon fill="black" stroke="black" points="1510.97,-488.69 1502.7,-482.07 1505.04,-492.4 1510.97,-488.69"/>
+<path fill="none" stroke="black" d="M1442.57,-696.68C1445.25,-675.22 1448.17,-637.37 1441,-606 1431.21,-563.15 1406.65,-518.17 1389.89,-490.85"/>
+<polygon fill="black" stroke="black" points="1392.81,-488.92 1384.54,-482.29 1386.87,-492.63 1392.81,-488.92"/>
</g>
<!-- allegro -->
<g id="node36" class="node">
<title>allegro</title>
<g id="a_node36"><a xlink:href="https://github.com/liballeg/allegro5/tree/master/addons/audio" xlink:title="allegro">
-<ellipse fill="lightgrey" stroke="black" cx="1266" cy="-860.74" rx="42.79" ry="18"/>
-<text text-anchor="middle" x="1266" y="-857.04" font-family="Times,serif" font-size="14.00">allegro</text>
+<ellipse fill="lightgrey" stroke="black" cx="1190" cy="-860.74" rx="35.19" ry="18"/>
+<text text-anchor="middle" x="1190" y="-857.04" font-family="Times,serif" font-size="14.00">allegro</text>
</a>
</g>
</g>
<!-- allegro->OSS -->
<g id="edge94" class="edge">
<title>allegro->OSS</title>
-<path fill="none" stroke="black" d="M1268.61,-842.74C1277.82,-788.35 1313.55,-616.46 1410,-519 1424.53,-504.31 1443.69,-491.43 1459.83,-481.93"/>
-<polygon fill="black" stroke="black" points="1461.97,-484.74 1468.93,-476.74 1458.51,-478.66 1461.97,-484.74"/>
+<path fill="none" stroke="black" d="M1189.94,-842.65C1190.64,-788.69 1199.72,-619.62 1283,-519 1298.41,-500.39 1322,-486.57 1341.16,-477.57"/>
+<polygon fill="black" stroke="black" points="1342.74,-480.7 1350.44,-473.42 1339.88,-474.31 1342.74,-480.7"/>
</g>
<!-- allegro->PulseAudio -->
<g id="edge96" class="edge">
<title>allegro->PulseAudio</title>
-<path fill="none" stroke="black" d="M1308.88,-859.87C1544.68,-860.32 2673,-858.83 2673,-788.74 2673,-788.74 2673,-788.74 2673,-677.74 2673,-594.92 2665.22,-567.34 2617,-500 2561.47,-422.45 2527.79,-418.58 2444,-373 2423.12,-361.64 2417.21,-359.15 2394,-354 2287.41,-330.36 2257.56,-347.6 2149,-336 2131.9,-334.17 2113.49,-331.8 2096.32,-329.4"/>
-<polygon fill="black" stroke="black" points="2096.76,-325.93 2086.37,-328 2095.78,-332.86 2096.76,-325.93"/>
+<path fill="none" stroke="black" d="M1225.28,-859.77C1437.5,-859.74 2535,-856.33 2535,-788.74 2535,-788.74 2535,-788.74 2535,-677.74 2535,-511.21 2463.24,-452.65 2317,-373 2294.29,-360.63 2287.34,-359.17 2262,-354 2149.37,-331.04 2118.53,-345.82 2004,-336 1970.87,-333.16 1934.1,-329.47 1903.51,-326.26"/>
+<polygon fill="black" stroke="black" points="1903.7,-322.76 1893.39,-325.19 1902.96,-329.72 1903.7,-322.76"/>
</g>
<!-- allegro->OpenAL -->
<g id="edge95" class="edge">
<title>allegro->OpenAL</title>
-<path fill="none" stroke="black" d="M1304.91,-852.87C1377.57,-840.04 1533.89,-812.43 1615.69,-797.98"/>
-<polygon fill="black" stroke="black" points="1616.52,-801.39 1625.76,-796.2 1615.3,-794.49 1616.52,-801.39"/>
+<path fill="none" stroke="black" d="M1221.65,-852.87C1279.66,-840.27 1403.24,-813.44 1470.7,-798.79"/>
+<polygon fill="black" stroke="black" points="1471.6,-802.18 1480.63,-796.64 1470.11,-795.34 1471.6,-802.18"/>
</g>
<!-- allegro->SDL1 -->
<g id="edge97" class="edge">
<title>allegro->SDL1</title>
-<path fill="none" stroke="black" d="M1240.52,-846.2C1233.01,-842.36 1224.73,-838.26 1217,-834.74 1130.3,-795.23 1026.48,-754.93 967.99,-732.85"/>
-<polygon fill="black" stroke="black" points="968.9,-729.45 958.31,-729.2 966.43,-736 968.9,-729.45"/>
+<path fill="none" stroke="black" d="M1169.76,-845.82C1163.33,-841.83 1156.05,-837.75 1149,-834.74 1102.9,-815.04 1087.77,-820.94 1040,-805.74 968.67,-783.04 887.42,-751.66 839.55,-732.58"/>
+<polygon fill="black" stroke="black" points="840.73,-729.28 830.14,-728.82 838.13,-735.78 840.73,-729.28"/>
</g>
<!-- allegro->SDL2 -->
<g id="edge98" class="edge">
<title>allegro->SDL2</title>
-<path fill="none" stroke="black" d="M1242.23,-845.69C1234.42,-841.6 1225.54,-837.49 1217,-834.74 1182.9,-823.75 681.67,-750.68 502.82,-724.8"/>
-<polygon fill="black" stroke="black" points="503.18,-721.32 492.78,-723.35 502.17,-728.25 503.18,-721.32"/>
+<path fill="none" stroke="black" d="M1170.4,-845.53C1163.87,-841.43 1156.38,-837.36 1149,-834.74 1103.99,-818.74 983.24,-812.82 936,-805.74 754.17,-778.49 539.24,-742.11 440.53,-725.16"/>
+<polygon fill="black" stroke="black" points="440.94,-721.68 430.49,-723.44 439.76,-728.58 440.94,-721.68"/>
</g>
<!-- telepathy -->
<g id="node37" class="node">
<title>telepathy</title>
-<ellipse fill="lightgrey" stroke="black" cx="2549" cy="-158" rx="54.69" ry="18"/>
-<text text-anchor="middle" x="2549" y="-154.3" font-family="Times,serif" font-size="14.00">telepathy</text>
+<ellipse fill="lightgrey" stroke="black" cx="2391" cy="-158" rx="42.79" ry="18"/>
+<text text-anchor="middle" x="2391" y="-154.3" font-family="Times,serif" font-size="14.00">telepathy</text>
</g>
<!-- telepathy->phone modem -->
<g id="edge99" class="edge">
<title>telepathy->phone modem</title>
-<path fill="none" stroke="black" d="M2540.7,-139.8C2534.98,-127.93 2527.26,-111.93 2520.76,-98.45"/>
-<polygon fill="black" stroke="black" points="2523.78,-96.66 2516.28,-89.18 2517.48,-99.7 2523.78,-96.66"/>
-<text text-anchor="middle" x="2534" y="-110.8" font-family="Times,serif" font-size="14.00" fill="red">?</text>
+<path fill="none" stroke="black" d="M2384.09,-140.21C2379.18,-128.29 2372.5,-112.06 2366.88,-98.42"/>
+<polygon fill="black" stroke="black" points="2370.06,-96.96 2363.02,-89.05 2363.59,-99.63 2370.06,-96.96"/>
+<text text-anchor="middle" x="2378.5" y="-110.8" font-family="Times,serif" font-size="14.00" fill="red">?</text>
</g>
<!-- pcaudiolib -->
<g id="node38" class="node">
<title>pcaudiolib</title>
<g id="a_node38"><a xlink:href="https://github.com/espeak-ng/pcaudiolib" xlink:title="pcaudiolib">
-<ellipse fill="lightgrey" stroke="black" cx="1669" cy="-714.74" rx="58.49" ry="18"/>
-<text text-anchor="middle" x="1669" y="-711.04" font-family="Times,serif" font-size="14.00">pcaudiolib</text>
+<ellipse fill="lightgrey" stroke="black" cx="1546" cy="-714.74" rx="48.19" ry="18"/>
+<text text-anchor="middle" x="1546" y="-711.04" font-family="Times,serif" font-size="14.00">pcaudiolib</text>
</a>
</g>
</g>
<!-- pcaudiolib->ALSA -->
<g id="edge105" class="edge">
<title>pcaudiolib->ALSA</title>
-<path fill="none" stroke="black" d="M1696.28,-698.7C1706.68,-692.74 1718.54,-685.67 1729,-678.74 1739.23,-671.96 1750.07,-664.08 1759.68,-656.84"/>
-<polygon fill="black" stroke="black" points="1761.93,-659.52 1767.77,-650.68 1757.69,-653.96 1761.93,-659.52"/>
+<path fill="none" stroke="black" d="M1567.91,-698.41C1576.65,-692.29 1586.8,-685.18 1596,-678.74 1607.14,-670.94 1619.36,-662.37 1630.12,-654.83"/>
+<polygon fill="black" stroke="black" points="1632.2,-657.64 1638.38,-649.04 1628.18,-651.91 1632.2,-657.64"/>
</g>
<!-- pcaudiolib->OSS -->
<g id="edge106" class="edge">
<title>pcaudiolib->OSS</title>
-<path fill="none" stroke="black" d="M1660.83,-696.8C1643.43,-661.65 1600.28,-579.05 1551,-519 1541.59,-507.54 1529.77,-496.24 1519.18,-486.97"/>
-<polygon fill="black" stroke="black" points="1521.26,-484.14 1511.39,-480.3 1516.71,-489.46 1521.26,-484.14"/>
+<path fill="none" stroke="black" d="M1537.94,-696.86C1520.78,-661.82 1478.27,-579.41 1430,-519 1420.64,-507.29 1408.81,-495.67 1398.35,-486.24"/>
+<polygon fill="black" stroke="black" points="1400.5,-483.46 1390.68,-479.47 1395.87,-488.71 1400.5,-483.46"/>
</g>
<!-- pcaudiolib->PulseAudio -->
<g id="edge107" class="edge">
<title>pcaudiolib->PulseAudio</title>
-<path fill="none" stroke="black" d="M1675.23,-696.48C1696.01,-641.3 1768.19,-467.29 1884,-373 1907.7,-353.71 1938.98,-340.87 1966.34,-332.58"/>
-<polygon fill="black" stroke="black" points="1967.59,-335.86 1976.22,-329.72 1965.64,-329.13 1967.59,-335.86"/>
+<path fill="none" stroke="black" d="M1549.48,-696.65C1561.45,-642 1605.9,-469.39 1707,-373 1727.69,-353.27 1756.61,-340.3 1781.93,-332.03"/>
+<polygon fill="black" stroke="black" points="1783.27,-335.28 1791.79,-328.98 1781.2,-328.59 1783.27,-335.28"/>
</g>
</g>
</svg>