Knowledge

Pure Data

Source 📝

43: 739: 1199: 116: 1355: 677: 705: 34: 502: 613: 1350: 602:
graphical data structure, somewhat like a data structure out of the C programming language, but with a facility for attaching shapes and colors to the data, so that the user can visualize and/or edit it. The data itself can be edited from scratch or can be imported from files, generated algorithmically, or derived from analyses of incoming sounds or other data streams.
693: 430:
of the data flowing between operations. In Pure Data and Max, functions or "objects" are linked or "patched" together in a graphical environment which models the flow of the control and audio. Unlike the original version of Max, however, Pd was always designed to do control-rate and audio processing
493:, and many others. However, Pd is also a programming language. Modular, reusable units of code written natively in Pd, called "patches" or "abstractions", are used as standalone programs and freely shared among the Pd user community, and no other programming skill is required to use Pd effectively. 601:
Pd is designed to offer an extremely unstructured environment for describing data structures and their graphical appearance. The underlying idea is to allow the user to display any kind of data he or she wants to, associating it in any way with the display. To accomplish this Pd introduces a
631:
Though a powerful language, Pd has certain limitations in its implementation of object-oriented concepts. For example, it is very difficult to create massively parallel processes because instantiating and manipulating large lists of objects (spawning, etc.) is impossible due to a lack of a
597:, Pd's structs are composed of any combination of floats, symbols, and array data that can be used as parameters to describe the visual appearance of the data structure or, conversely, to control messages and audio signals in a Pd patch. In Puckette's words: 527:, a symbol, or a pointer to a data structure (in Pd, all numbers are stored as 32-bit floats). Messages are composed of one or more atoms and provide instructions to objects. A special type of message with null content called a 520:, usually at 44,100 samples per second, and control rate, at 1 block per 64 samples. Control messages and audio signals generally flow from the top of the screen to the bottom between "objects" connected via inlets and outlets. 405:
Pd is natively designed to enable live collaboration across networks or the Internet, allowing musicians connected via LAN or even in disparate parts of the globe to create music together in real time. Pd uses
632:
constructor function. Further, Pd arrays and other entities are susceptible to namespace collisions because passing the patch instance ID is an extra step and is sometimes difficult to accomplish.
726:(with a Q of 20), then fades it in and out each second over the course of a half second. In Pd, time is measured in milliseconds, thus the '1000' is one second and the '500' is a half second. 1482: 1354: 949:
Danks, M. (1997). Real-time image and video processing in Gem. In: Proceedings of the International Computer Music Conference, pp. 220–223. International Computer Music Association.
367:, and is to some degree interoperable with Max/MSP, the commercial predecessor to the Max language. They may be collectively discussed as members of the Patcher family of languages. 593:
Living up to Pd's name, data structures enable Pd users to create arbitrarily complex static as well as dynamic or animated graphical representations of musical data. Much like
946:
Danks, M. (1996). The graphics environment for max. In: Proceedings of the International Computer Music Conference, pp. 67–70. International Computer Music Association.
586:. These can be used in a large variety of ways, from composing musical scores, sequencing events, to creating visuals to accompany Pd patches or even extending Pd's 523:
Pd supports four basic types of text entities: messages, objects, atoms, and comments. Atoms are the most basic unit of data in Pd, and they consist of either a
959:
Puckette, M. S. (1997). Pure data. In: Proceedings of the International Computer Music Conference, pp. 224–227. International Computer Music Association.
1502: 651:
Pd has been used for prototyping audio for video games by a number of audio designers. For example, EAPd is the internal version of Pd that is used at
375: 448: 469:
or objects which are used as building blocks for programs written in the software. This makes the program arbitrarily extensible through a public
574:, or network connection, or generated on the fly, and stored in tables, which can then be read back and used as audio signals or control data. 546:
operators found in every programming language to general and specialized audio-rate DSP functions (designated by a tilde (~) symbol), such as
640:
Pure Data has been used as the basis of a number of projects, as a prototyping language and a sound engine. The table interface called the
387: 1532: 1517: 772: 391: 1646: 1396: 1174: 1507: 1226: 956:. Proceedings, International Computer Music Conference. San Francisco: International Computer Music Association, pp. 269–272. 1636: 379: 1641: 1631: 1163: 1144: 1122: 1078: 1055: 1032: 1009: 986: 662:
Pd has also been used for networked performance, in the Networked Resources for Collaborative Improvisation (NRCI) Library.
1611: 744: 752: 371: 1616: 402:
graphics, images, etc., in realtime with extensive possibilities for interactivity with audio, external sensors, etc.
1553: 1100: 126: 866: 719:
The second patch applies reverberation to the incoming signal from channel 1, then emits it on channels 1 and 2.
1626: 704: 482: 478: 676: 1621: 1401: 1391: 1219: 95: 42: 305: 207: 131: 69: 1589: 1497: 1176:
Pd Elementary Method (in Farsi) - PDF and patches (مبانی بنیادین نرم افزار پی دی نوشته منصور حبیب دوست)
486: 341: 1381: 692: 510: 1279: 1274: 474: 462: 444: 1548: 1212: 656: 432: 777: 551: 582:
One of the key innovations in Pd over its predecessors has been the introduction of graphical
1492: 535: 824:
Puckette, M. (1988). The patcher. In Proceedings of International Computer Music Conference.
889: 423: 321: 171: 8: 1563: 1522: 683: 547: 115: 1198: 1309: 1269: 854: 563: 517: 594: 1254: 1159: 1140: 1118: 1096: 1074: 1070: 1051: 1028: 1005: 982: 440: 324:
project with a large developer base working on new extensions. It is released under
1406: 978: 953: 543: 539: 258: 233: 138: 1416: 1299: 970: 652: 455: 436: 309: 188: 183: 58: 531:
is used to initiate events and push data into flow, much like pushing a button.
1411: 1376: 1339: 1324: 1319: 1304: 1235: 1024: 1001: 907: 583: 524: 473:, and encourages developers to add their own control and audio routines in the 427: 419: 360: 313: 238: 1294: 1605: 1451: 1264: 1132: 1110: 1088: 1047: 555: 834: 1582: 1334: 1314: 1249: 925: 888:
Jorda, Sergi; Kaltenbrunner, Martin; Geiger, Gunter; Bencina, Ross (2005).
505:
Pure Data objects. The text strings to the right of the boxes are comments.
325: 263: 143: 20: 1558: 1456: 1421: 1289: 1284: 104: 1259: 458:'s MSP extensions to the Max language to do software audio processing. 317: 53: 1477: 1441: 1436: 762: 641: 800: 19:
This article is about programming language. For storage server, see
1446: 1137:
Pure Data as a Meta-Compositional Instrument: Compositions Volume 2
1115:
Pure Data as a Meta-Compositional Instrument: Compositions Volume 1
767: 567: 513: 176: 1067:
Making Musical Apps – Real-time audio synthesis on Android and iOS
320:
works. While Puckette is the main author of the program, Pd is an
1431: 1329: 1204: 757: 349: 345: 289: 246: 33: 618: 1527: 1386: 1349: 887: 509:
Like Max, Pd is a dataflow programming language. As with most
399: 722:
The last, more complex patch filters white noise at 9000 
558:. Data can be loaded from file, read in from an audio board, 477:
programming language, or with the help of other externals, in
359:
Pd is very similar in scope and design to Puckette's original
1512: 1487: 1371: 723: 374:(GEM) external, and externals designed to work with it (like 364: 333: 329: 250: 242: 926:"Networked Resources for Collaborative Improvisation (NRCI)" 501: 1461: 645: 612: 559: 451: 407: 398:, Windows), it is possible to create and manipulate video, 353: 1093:
Composition: Pure Data as a Meta-Compositional Instrument
587: 571: 490: 470: 337: 454:
which was used for Max/FTS). Pd code forms the basis of
1192: 895:. Music Technology Group/IUA, Universitat Pompeu Fabra. 516:, there are two primary rates at which data is passed: 274: 154: 734: 716:
The first patch prints "hello world" to the display.
998:
Loadbang: Programming Electronic Music in Pure Data
930:
Center for Computer Research in Music and Acoustics
908:"Gamespy: The Beat Goes on: Dynamic Music in Spore" 426:languages. Dataflow languages model a program as a 855:Pd Documentation Chapter 2 — 2.9. Data structures 1603: 394:(as n-dimensional matrix processing, for Linux, 47:Pure Data with many patches open (netpd project) 795: 793: 1220: 975:The Theory and Technique of Electronic Music 790: 1518:Center for New Music and Audio Technologies 932:. Department of Music, Stanford University. 635: 1227: 1213: 1197: 1172: 773:Comparison of audio synthesis environments 114: 41: 32: 1156:Pd Recipe Book ―Pure Dataではじめるサウンドプログラミング 1153: 1064: 655:(EA). It has also been embedded into EA 534:Pd's native objects range from the basic 995: 969: 611: 500: 1041: 1018: 626: 1604: 413: 312:in the 1990s for creating interactive 1208: 1131: 1109: 1087: 905: 710:Patch 3: Filters and data flow in Pd. 622:, created using Pd's data structures. 745:Free and open-source software portal 671:Pure Data visual code sample patches 496: 753:Graphics Environment for Multimedia 616:Score for Hans-Christoph Steiner's 372:Graphics Environment for Multimedia 363:program, developed while he was at 13: 1234: 963: 577: 435:(CPU), rather than offloading the 213:0.53-2 / March 15, 2022 75:0.53-2 / March 15, 2023 14: 1658: 1493:Computer Music Center at Columbia 1184: 648:both embed Pd as a sound engine. 1647:Software that uses Tk (software) 1353: 1348: 906:Kosak, Dave (20 February 2008). 737: 703: 691: 675: 665: 554:(fft~), and a range of standard 1637:Software using the BSD license 918: 899: 881: 867:"Possibilities#2: Audio Layer" 859: 848: 827: 818: 1: 1642:Free software programmed in C 940: 801:"Software by Miller Puckette" 698:Patch 2: Reverberation in Pd. 644:and the abandoned iPhone app 1632:Visual programming languages 1173:Habibdoost, Mansoor (2013). 835:"FAQ: Max 4 - Cycling '74" 7: 1612:Audio programming languages 996:Kreidler, Johannes (2009). 730: 306:visual programming language 132:Visual programming language 16:Visual programming language 10: 1663: 1590:Mortuos Plango, Vivos Voco 1498:Experimental Music Studios 410:as a networking protocol. 18: 1617:Electronic music software 1574: 1541: 1470: 1382:Composers Desktop Project 1362: 1346: 1242: 1065:Brinkmann, Peter (2012). 914:. IGN Entertainment, Inc. 890:"ICMC2005: The ReacTable" 447:(DSP) board (such as the 370:With the addition of the 288: 283: 269: 257: 232: 228: 206: 202: 194: 182: 170: 149: 137: 125: 94: 90: 68: 64: 52: 40: 31: 1280:Gottfried Michael Koenig 1042:Farnell, Andy J (2010). 783: 636:Projects using Pure Data 445:digital signal processor 1554:Artificial intelligence 1549:Algorithmic composition 1154:Matsumura, Sei (2012). 952:Puckette, M. S. (1996) 433:central processing unit 77:; 17 months ago 971:Puckette, Miller Smith 778:List of music software 623: 610: 552:Fast Fourier transform 506: 1627:Software synthesizers 1019:Pd~graz, ed. (2006). 615: 599: 504: 422:are both examples of 215:; 2 years ago 627:Language limitations 424:dataflow programming 1622:Free audio software 1528:Oberlin TIMARA Labs 1523:Princeton Sound Lab 684:Hello world program 518:sample (audio) rate 461:Like Max, Pd has a 414:Similarities to Max 348:. Ports exist for 195:First appeared 167: 28: 1310:Jean-Claude Risset 1270:Giuseppe di Giugno 624: 564:Open Sound Control 507: 189:Miller S. Puckette 165: 54:Original author(s) 26: 1599: 1598: 1564:Digital synthesis 1255:Richard Boulanger 1165:978-4-86100-780-4 1146:978-3-659-96899-0 1124:978-3-659-88634-8 1080:978-1-4493-1490-3 1057:978-0-262-01441-0 1034:978-3-936000-37-5 1011:978-3-936000-57-3 988:978-981-270-541-9 607:Miller Puckette, 550:oscillators, the 497:Language features 441:signal processing 295: 294: 163: 162: 1654: 1407:Laptop orchestra 1357: 1352: 1229: 1222: 1215: 1206: 1205: 1201: 1196: 1195: 1193:Official website 1180: 1169: 1150: 1128: 1106: 1084: 1061: 1038: 1023:. Wolke Verlag, 1015: 1000:. Wolke Verlag, 992: 979:World Scientific 934: 933: 922: 916: 915: 903: 897: 896: 894: 885: 879: 878: 876: 874: 863: 857: 852: 846: 845: 843: 841: 831: 825: 822: 816: 815: 813: 811: 797: 747: 742: 741: 740: 707: 695: 679: 608: 566:(OSC) through a 397: 385: 376:Pure Data Packet 279: 276: 223: 221: 216: 184:Designed by 168: 164: 159: 156: 118: 113: 110: 108: 106: 85: 83: 78: 45: 36: 29: 25: 1662: 1661: 1657: 1656: 1655: 1653: 1652: 1651: 1602: 1601: 1600: 1595: 1570: 1559:Sound synthesis 1537: 1466: 1417:MIDI controller 1364: 1358: 1344: 1300:Miller Puckette 1238: 1233: 1191: 1190: 1187: 1166: 1147: 1125: 1103: 1081: 1058: 1044:Designing Sound 1035: 1012: 989: 966: 964:Further reading 943: 938: 937: 924: 923: 919: 904: 900: 892: 886: 882: 872: 870: 865: 864: 860: 853: 849: 839: 837: 833: 832: 828: 823: 819: 809: 807: 805:Miller Puckette 799: 798: 791: 786: 743: 738: 736: 733: 711: 708: 699: 696: 687: 680: 668: 653:Electronic Arts 638: 629: 609: 606: 584:data structures 580: 578:Data structures 499: 456:David Zicarelli 437:sound synthesis 416: 395: 383: 310:Miller Puckette 273: 224: 219: 217: 214: 153: 121: 103: 86: 81: 79: 76: 59:Miller Puckette 48: 24: 17: 12: 11: 5: 1660: 1650: 1649: 1644: 1639: 1634: 1629: 1624: 1619: 1614: 1597: 1596: 1594: 1593: 1586: 1578: 1576: 1572: 1571: 1569: 1568: 1567: 1566: 1556: 1551: 1545: 1543: 1539: 1538: 1536: 1535: 1530: 1525: 1520: 1515: 1510: 1505: 1500: 1495: 1490: 1485: 1480: 1474: 1472: 1468: 1467: 1465: 1464: 1459: 1454: 1449: 1444: 1439: 1434: 1429: 1424: 1419: 1414: 1409: 1404: 1399: 1394: 1389: 1384: 1379: 1374: 1368: 1366: 1360: 1359: 1347: 1345: 1343: 1342: 1340:Iannis Xenakis 1337: 1332: 1327: 1322: 1320:Laurie Spiegel 1317: 1312: 1307: 1305:Roger Reynolds 1302: 1297: 1292: 1287: 1282: 1277: 1272: 1267: 1262: 1257: 1252: 1246: 1244: 1240: 1239: 1236:Computer music 1232: 1231: 1224: 1217: 1209: 1203: 1202: 1186: 1185:External links 1183: 1182: 1181: 1170: 1164: 1151: 1145: 1133:Barkl, Michael 1129: 1123: 1111:Barkl, Michael 1107: 1101: 1089:Barkl, Michael 1085: 1079: 1071:O'Reilly Media 1062: 1056: 1039: 1033: 1021:bang Pure Data 1016: 1010: 993: 987: 965: 962: 961: 960: 957: 950: 947: 942: 939: 936: 935: 917: 898: 880: 869:. 2 March 2010 858: 847: 826: 817: 788: 787: 785: 782: 781: 780: 775: 770: 765: 760: 755: 749: 748: 732: 729: 728: 727: 720: 717: 713: 712: 709: 702: 700: 697: 690: 688: 681: 674: 672: 667: 664: 637: 634: 628: 625: 604: 579: 576: 498: 495: 428:directed graph 418:Pure Data and 415: 412: 314:computer music 293: 292: 286: 285: 281: 280: 271: 267: 266: 261: 255: 254: 239:Cross-platform 236: 230: 229: 226: 225: 212: 210: 208:Stable release 204: 203: 200: 199: 196: 192: 191: 186: 180: 179: 174: 161: 160: 151: 147: 146: 141: 135: 134: 129: 123: 122: 120: 119: 100: 98: 92: 91: 88: 87: 74: 72: 70:Stable release 66: 65: 62: 61: 56: 50: 49: 46: 38: 37: 15: 9: 6: 4: 3: 2: 1659: 1648: 1645: 1643: 1640: 1638: 1635: 1633: 1630: 1628: 1625: 1623: 1620: 1618: 1615: 1613: 1610: 1609: 1607: 1592: 1591: 1587: 1585: 1584: 1580: 1579: 1577: 1573: 1565: 1562: 1561: 1560: 1557: 1555: 1552: 1550: 1547: 1546: 1544: 1540: 1534: 1531: 1529: 1526: 1524: 1521: 1519: 1516: 1514: 1511: 1509: 1506: 1504: 1501: 1499: 1496: 1494: 1491: 1489: 1486: 1484: 1481: 1479: 1476: 1475: 1473: 1469: 1463: 1460: 1458: 1455: 1453: 1452:SuperCollider 1450: 1448: 1445: 1443: 1440: 1438: 1435: 1433: 1430: 1428: 1425: 1423: 1420: 1418: 1415: 1413: 1410: 1408: 1405: 1403: 1400: 1398: 1395: 1393: 1390: 1388: 1385: 1383: 1380: 1378: 1375: 1373: 1370: 1369: 1367: 1361: 1356: 1351: 1341: 1338: 1336: 1333: 1331: 1328: 1326: 1323: 1321: 1318: 1316: 1313: 1311: 1308: 1306: 1303: 1301: 1298: 1296: 1293: 1291: 1288: 1286: 1283: 1281: 1278: 1276: 1275:Charles Dodge 1273: 1271: 1268: 1266: 1265:John Chowning 1263: 1261: 1258: 1256: 1253: 1251: 1248: 1247: 1245: 1241: 1237: 1230: 1225: 1223: 1218: 1216: 1211: 1210: 1207: 1200: 1194: 1189: 1188: 1178: 1177: 1171: 1167: 1161: 1157: 1152: 1148: 1142: 1138: 1134: 1130: 1126: 1120: 1116: 1112: 1108: 1104: 1102:3-8383-1647-9 1098: 1094: 1090: 1086: 1082: 1076: 1072: 1068: 1063: 1059: 1053: 1049: 1048:The MIT Press 1045: 1040: 1036: 1030: 1026: 1022: 1017: 1013: 1007: 1003: 999: 994: 990: 984: 981:, Singapore. 980: 976: 972: 968: 967: 958: 955: 951: 948: 945: 944: 931: 927: 921: 913: 909: 902: 891: 884: 868: 862: 856: 851: 836: 830: 821: 806: 802: 796: 794: 789: 779: 776: 774: 771: 769: 766: 764: 761: 759: 756: 754: 751: 750: 746: 735: 725: 721: 718: 715: 714: 706: 701: 694: 689: 685: 678: 673: 670: 669: 666:Code examples 663: 660: 658: 654: 649: 647: 643: 633: 621: 620: 614: 603: 598: 596: 591: 589: 585: 575: 573: 569: 565: 561: 557: 553: 549: 545: 541: 537: 532: 530: 526: 521: 519: 515: 512: 503: 494: 492: 488: 484: 480: 476: 472: 468: 465:code base of 464: 459: 457: 453: 450: 446: 442: 438: 434: 429: 425: 421: 411: 409: 403: 401: 393: 390:for Windows, 389: 381: 377: 373: 368: 366: 362: 357: 355: 351: 347: 343: 339: 335: 331: 328:. It runs on 327: 323: 319: 315: 311: 308:developed by 307: 303: 299: 291: 287: 284:Influenced by 282: 278: 272: 268: 265: 262: 260: 256: 252: 248: 244: 240: 237: 235: 231: 227: 211: 209: 205: 201: 197: 193: 190: 187: 185: 181: 178: 175: 173: 169: 158: 152: 148: 145: 142: 140: 136: 133: 130: 128: 124: 117: 112: 102: 101: 99: 97: 93: 89: 73: 71: 67: 63: 60: 57: 55: 51: 44: 39: 35: 30: 22: 1588: 1583:Illiac Suite 1581: 1575:Compositions 1426: 1363:Programs and 1335:Barry Vercoe 1315:Curtis Roads 1250:Marc Battier 1175: 1155: 1136: 1114: 1092: 1066: 1043: 1020: 997: 974: 929: 920: 911: 901: 883: 871:. Retrieved 861: 850: 838:. Retrieved 829: 820: 808:. Retrieved 804: 661: 650: 639: 630: 617: 600: 592: 581: 536:mathematical 533: 528: 522: 508: 466: 460: 431:on the host 417: 404: 369: 358: 326:BSD-3-Clause 301: 297: 296: 264:BSD-3-Clause 144:BSD-3-Clause 21:IBM PureData 1457:TidalCycles 1422:Music Mouse 1365:instruments 1295:Gérard Pape 1290:Max Mathews 1285:Paul Lansky 382:for Linux, 322:open-source 1606:Categories 1542:Techniques 1260:David Cope 941:References 810:14 January 388:framestein 318:multimedia 220:2022-03-15 111:/pure-data 109:/pure-data 96:Repository 82:2023-03-15 1478:Bell Labs 1442:Riffusion 1437:Radiodrum 1427:Pure Data 954:Pure Data 873:5 January 840:5 January 763:reacTable 682:Patch 1: 642:Reactable 595:C structs 548:wavetable 467:externals 298:Pure Data 166:Pure Data 27:Pure Data 1447:Sonic Pi 1135:(2018). 1113:(2018). 1091:(2012). 973:(2007). 768:Puredyne 731:See also 619:Solitude 605:—  568:FireWire 514:software 396:Mac OS X 392:GridFlow 384:Mac OS X 275:puredata 177:Dataflow 172:Paradigm 155:puredata 1432:MUSIC-N 1412:Max/MSP 1330:Trimpin 1325:The Hub 1025:Hofheim 1002:Hofheim 912:GameSpy 758:Max/MSP 556:filters 544:bitwise 540:logical 463:modular 350:FreeBSD 346:Windows 342:Android 304:) is a 290:Patcher 270:Website 259:License 247:Windows 218: ( 150:Website 139:License 80: ( 1488:CEMAMu 1471:Places 1387:Csound 1243:People 1162:  1143:  1121:  1099:  1077:  1054:  1031:  1008:  985:  686:in Pd. 562:, via 542:, and 483:Scheme 479:Python 400:OpenGL 105:github 1513:IRCAM 1483:CCRMA 1392:FAUST 1372:ChucK 893:(PDF) 784:Notes 657:Spore 525:float 449:Ariel 443:to a 380:PiDiP 365:IRCAM 334:MacOS 330:Linux 277:.info 251:Linux 243:macOS 157:.info 1508:ICMA 1503:ICEM 1462:UPIC 1402:Kyma 1397:HMSL 1377:Cmix 1160:ISBN 1141:ISBN 1119:ISBN 1097:ISBN 1075:ISBN 1052:ISBN 1029:ISBN 1006:ISBN 983:ISBN 875:2017 842:2017 812:2022 646:RjDj 560:MIDI 529:bang 452:ISPW 439:and 408:FUDI 354:IRIX 352:and 344:and 316:and 198:1996 127:Type 107:.com 1533:IEM 588:GUI 572:USB 511:DSP 491:Tcl 487:Lua 471:API 420:Max 386:), 361:Max 338:iOS 1608:: 1158:. 1139:. 1117:. 1095:. 1073:. 1069:. 1050:. 1046:. 1027:. 1004:. 977:. 928:. 910:. 803:. 792:^ 724:Hz 659:. 590:. 570:, 538:, 489:, 485:, 481:, 378:/ 356:. 340:, 336:, 332:, 302:Pd 249:, 245:, 234:OS 1228:e 1221:t 1214:v 1179:. 1168:. 1149:. 1127:. 1105:. 1083:. 1060:. 1037:. 1014:. 991:. 877:. 844:. 814:. 475:C 300:( 253:) 241:( 222:) 84:) 23:.

Index

IBM PureData


Original author(s)
Miller Puckette
Stable release
Repository
github.com/pure-data/pure-data
Edit this at Wikidata
Type
Visual programming language
License
BSD-3-Clause
puredata.info
Paradigm
Dataflow
Designed by
Miller S. Puckette
Stable release
OS
Cross-platform
macOS
Windows
Linux
License
BSD-3-Clause
puredata.info
Patcher
visual programming language
Miller Puckette

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.