{"id":13699257,"url":"https://github.com/praat/praat","last_synced_at":"2025-05-14T11:09:56.647Z","repository":{"id":15942348,"uuid":"18684635","full_name":"praat/praat","owner":"praat","description":"Praat: Doing Phonetics By Computer","archived":false,"fork":false,"pushed_at":"2025-05-12T17:57:54.000Z","size":283166,"stargazers_count":1650,"open_issues_count":60,"forks_count":248,"subscribers_count":49,"default_branch":"master","last_synced_at":"2025-05-12T18:49:47.966Z","etag":null,"topics":["acoustics","phonetics","speech","speech-analysis"],"latest_commit_sha":null,"homepage":"http://www.praat.org","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/praat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-04-11T18:36:00.000Z","updated_at":"2025-05-12T17:58:03.000Z","dependencies_parsed_at":"2024-01-15T22:27:58.274Z","dependency_job_id":"92f97a74-205d-445a-b30d-6b7dae39cd74","html_url":"https://github.com/praat/praat","commit_stats":{"total_commits":5281,"total_committers":12,"mean_commits":440.0833333333333,"dds":"0.36413558038250327","last_synced_commit":"53be463c2cbd2246de3b0be7d298819c30b002f0"},"previous_names":[],"tags_count":534,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/praat%2Fpraat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/praat%2Fpraat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/praat%2Fpraat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/praat%2Fpraat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/praat","download_url":"https://codeload.github.com/praat/praat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254129489,"owners_count":22019628,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acoustics","phonetics","speech","speech-analysis"],"created_at":"2024-08-02T20:00:28.422Z","updated_at":"2025-05-14T11:09:51.634Z","avatar_url":"https://github.com/praat.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# Praat: doing phonetics by computer\n\nWelcome to Praat! Praat is a speech analysis tool used for doing phonetics by computer.\nPraat can analyse, synthesize, and manipulate speech, and create high-quality pictures for your publications.\nPraat was created by Paul Boersma and David Weenink of the Institute of Phonetics Sciences of the University of Amsterdam.\n\nSome of Praat’s most prominent features are:\n\n#### Speech analysis\n\nPraat allows you to analyze different aspects of speech including pitch, formant, intensity, and voice quality.\nYou have access to spectrograms (a visual representation of sound changing over time)\nand cochleagrams (a specific type of spectrogram more closely resembling how the inner ear receives sound).\n\n#### Speech synthesis\n\nPraat allows you to generate speech from a pitch curve and filters that you create (acoustic synthesis),\nor from muscle activities (articulatory synthesis).\n\n#### Speech manipulation\n\nPraat gives you the ability to modify existing speech utterances. You can alter pitch, intensity, and duration of speech.\n\n#### Speech labelling\n\nPraat allows you to custom-label your samples using the IPA (International Phonetics Alphabet),\nand annotate your sound segments based on the particular variables you are seeking to analyze.\nMulti-language text-to-speech facilities allow you to segment the sound into words and phonemes.\n\n#### Grammar models\n\nWith Praat, you can try out Optimality-Theoretic and Harmonic-Grammar learning,\nas well as several kinds of neural-network models.\n\n#### Statistical analysis\n\nPraat allows you to perform several statistical techniques, among which\nmultidimensional scaling, principal component analysis, and discriminant analysis.\n\nFor more information, consult the extensive manual in Praat (under Help),\nand the website [praat.org](http://praat.org), which has Praat tutorials in several languages.\n\n## 1. Binary executables\n\nWhile the [Praat website](https://www.fon.hum.uva.nl/praat) contains the latest executable for all platforms that we support\n(or used to support), the [releases on GitHub](https://github.com/praat/praat/releases) contain many older executables as well.\n\nThe meaning of the names of binary files available on GitHub is as follows (editions that currently receive updates are in bold):\n\n### 1.1. Windows binaries\n- **`praatXXXX_win-arm64.zip`: zipped executable for ARM64 Windows (11 and higher)**\n- **`praatXXXX_win-intel64.zip`: zipped executable for Intel64 Windows (7 and higher)**\n- **`praatXXXX_win-intel32.zip`: zipped executable for Intel32 Windows (7 and higher)**\n- `praatXXXX_win64.zip`: zipped executable for 64-bit Intel Windows (XP and higher, or 7 and higher)\n- `praatXXXX_win32.zip`: zipped executable for 32-bit Intel Windows (XP and higher, or 7 and higher)\n- `praatconXXXX_win64.zip`: zipped executable for 64-bit Intel Windows, console edition\n- `praatconXXXX_win32.zip`: zipped executable for 32-bit Intel Windows, console edition\n- `praatconXXXX_win32sit.exe`: self-extracting StuffIt archive with executable for 32-bit Intel Windows, console edition\n- `praatXXXX_win98.zip`: zipped executable for Windows 98\n- `praatXXXX_win98sit.exe`: self-extracting StuffIt archive with executable for Windows 98\n\n### 1.2. Mac binaries\n- **`praatXXXX_mac.dmg`: disk image with universal executable for (64-bit) Intel and Apple Silicon Macs (Cocoa)**\n- **`praatXXXX_xcodeproj.zip`: zipped Xcode project file for the universal (64-bit) edition (Cocoa)**\n- `praatXXXX_mac64.dmg`: disk image with executable for 64-bit Intel Macs (Cocoa)\n- `praatXXXX_xcodeproj64.zip`: zipped Xcode project file for the 64-bit edition (Cocoa)\n- `praatXXXX_mac32.dmg`: disk image with executable for 32-bit Intel Macs (Carbon)\n- `praatXXXX_xcodeproj32.zip`: zipped Xcode project file for the 32-bit edition (Carbon)\n- `praatXXXX_macU.dmg`: disk image with universal executable for (32-bit) PPC and Intel Macs (Carbon)\n- `praatXXXX_macU.sit`: StuffIt archive with universal executable for (32-bit) PPC and Intel Macs (Carbon)\n- `praatXXXX_macU.zip`: zipped universal executable for (32-bit) PPC and Intel Macs (Carbon)\n- `praatXXXX_macX.zip`: zipped executable for MacOS X (PPC)\n- `praatXXXX_mac9.sit`: StuffIt archive with executable for MacOS 9\n- `praatXXXX_mac9.zip`: zipped executable for MacOS 9\n- `praatXXXX_mac7.sit`: StuffIt archive with executable for MacOS 7\n\n### 1.3. Linux binaries\n- **`praatXXXX_linux-s390x-barren.tar.gz`: gzipped tarred executable for s390x Linux, without GUI, sound and graphics**\n- **`praatXXXX_linux-s390x.tar.gz`: gzipped tarred executable for s390x Linux (GTK 3)**\n- **`praatXXXX_linux-arm64-barren.tar.gz`: gzipped tarred executable for ARM64 Linux, without GUI, sound and graphics**\n- **`praatXXXX_linux-arm64.tar.gz`: gzipped tarred executable for ARM64 Linux (GTK 3)**\n- **`praatXXXX_linux-intel64-barren.tar.gz`: gzipped tarred executable for Intel64 Linux, without GUI, sound and graphics**\n- **`praatXXXX_linux-intel64.tar.gz`: gzipped tarred executable for Intel64 Linux (GTK 3)**\n- `praatXXXX_linux-arm64-nogui.tar.gz`: gzipped tarred executable for ARM64 Linux, without GUI and sound but with graphics (Cairo and Pango)\n- `praatXXXX_linux-intel64-nogui.tar.gz`: gzipped tarred executable for Intel64 Linux, without GUI and sound but with graphics (Cairo and Pango)\n- `praatXXXX_linux64barren.tar.gz`: gzipped tarred executable for 64-bit Intel Linux, without GUI, sound and graphics\n- `praatXXXX_linux64nogui.tar.gz`: gzipped tarred executable for 64-bit Intel Linux, without GUI and sound but with graphics (Cairo and Pango)\n- `praatXXXX_linux64.tar.gz`: gzipped tarred executable for 64-bit Intel Linux (GTK 2 or 3)\n- `praatXXXX_linux32.tar.gz`: gzipped tarred executable for 32-bit Intel Linux (GTK 2)\n- `praatXXXX_linux_motif64.tar.gz`: gzipped tarred executable for 64-bit Intel Linux (Motif)\n- `praatXXXX_linux_motif32.tar.gz`: gzipped tarred executable for 32-bit Intel Linux (Motif)\n\n### 1.4. Chromebook binaries\n- **`praatXXXX_chrome-arm64.tar.gz`: gzipped tarred executable for Linux on ARM64 Chromebooks (GTK 3)**\n- **`praatXXXX_chrome-intel64.tar.gz`: gzipped tarred executable for Intel64 Linux on Intel64 Chromebooks (GTK 3)**\n- `praatXXXX_chrome64.tar.gz`: gzipped tarred executable for 64-bit Linux on Intel64 Chromebooks (GTK 2 or 3)\n\n### 1.5. Raspberry Pi binaries\n- **`praatXXXX_rpi-armv7.tar.gz`: gzipped tarred executable for (32-bit) ARMv7 Linux on the Raspberry Pi 4B (GTK 3)**\n- `praatXXXX_rpi_armv7.tar.gz`: gzipped tarred executable for (32-bit) ARMv7 Linux on the Raspberry Pi 4B (GTK 2 or 3)\n\n### 1.6. Other Unix binaries (all obsolete)\n- `praatXXXX_solaris.tar.gz`: gzipped tarred executable for Sun Solaris\n- `praatXXXX_sgi.tar.gz`: gzipped tarred executable for Silicon Graphics Iris\n- `praatXXXX_hpux.tar.gz`: gzipped tarred executable for HP-UX (Hewlett-Packard Unix)\n\n## 2. Compiling the source code\n\nYou need the Praat source code only in the following cases:\n\n1. you want to extend Praat’s functionality by adding C or C++ code to it; or\n2. you want to understand or reuse Praat’s source code; or\n3. you want to compile Praat for a computer for which we do not provide binary executables,\ne.g. Linux for some non-Intel computers, FreeBSD, HP-UX, SGI, or SPARC Solaris.\n\nBefore trying to dive into Praat’s source code, you should be familiar with the working of the Praat program\nand with writing Praat scripts. The Praat program can be downloaded from https://www.fon.hum.uva.nl/praat,\na place where you can also get to by just typing http://praat.org.\n\n### 2.1. License\n\nMost of the source code of Praat is distributed on GitHub under the General Public License,\n[version 2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) or later.\nHowever, as Praat includes software written by others,\nthe whole of Praat is distributed under the General Public License,\n[version 3](https://www.fon.hum.uva.nl/praat/manual/General_Public_License__version_3.html) or later.\nSee [Acknowledgments](https://www.fon.hum.uva.nl/praat/manual/Acknowledgments.html) for details on the licenses\nof software libraries by others that are included in Praat.\nOf course, any improvements in the Praat source code are welcomed by the authors.\n\n### 2.2. Downloading the archive\n\nTo download the latest source code of Praat from GitHub,\nclick on the *zip* or *tar.gz* archive at the latest release,\nor fork (\"clone\") the praat/praat repository at any later change.\n\n### 2.3. Steps to take if you want to extend Praat\n\nFirst make sure that the source code can be compiled as is.\nThen add your own buttons by editing `main/main_Praat.cpp` or `fon/praat_Fon.cpp`.\nConsult the manual page on [Programming](http://www.fon.hum.uva.nl/praat/manual/Programming_with_Praat.html).\n\n### 2.4. The programming language\n\nMost of the source code is written in C++, but some parts are written in C.\nThe code requires that your compiler supports C99 and C++17.\n\n## 3. Developing Praat for one platform\n\nDeveloping Praat means two things: *building* the Praat executable from the Praat\nsource code, and *testing* the correctness of the Praat executable.\n\n**Building** is largely automated:\n\n- On the Mac, you use an existing Xcode project (these files are included in the releases).\n- On other platforms (Windows and Unixes), you use existing makefiles\n  (these files are included in the source tree).\n\n**Testing** on a platform can be done by starting up Praat on that platform,\nand then go through to types of tests. Basic GUI functionality is tested as follows:\n\n1. record a sound (New -\u003e `Record mono Sound...`)\n2. open the sound (`View \u0026 Edit`)\n3. select a part of the sound (drag the mouse across the waveform)\n4. play the sound (click on the rectangle below or above the selection)\n\nThe integrity of Praats’s algorithms (e.g. signal processing)\nand of the Praat scripting language is tested as follows:\n\n1. open the script `test/runAlltests.praat` (Praat -\u003e `Open Praat script...`)\n2. run the script (Run -\u003e `Run`)\n3. after 2 to 10 minutes, the Info window should contain a big “OK” graph\n4. go through steps 1 through 3 for `dwtest/runAllTests.praat`\n5. if you feel adventurous, try some tests in the folder `test/manually`\n\n### 3.1. Developing Praat for Windows\n\nOn Windows, Praat is **built** through the makefiles provided in Praat’s source tree.\n\nOne could use Cygwin or MSYS2. As we like to provide not only an Intel64 and Intel32 edition,\nbut an ARM64 edition as well, and Cygwin has no toolchains for ARM64, we work with MSYS2 instead.\n\nAfter installing MSYS2, we see that a `mingw64` toolchain (for Praat’s Intel64 edition)\nand a `mingw32` toolchain (for Praat’s Intel32 edition) are already available.\nMake sure you have installed at least `make`, `gcc`, `g++` and `pkg-config` to make those work.\nTo also install a `clangarm64` toolchain (for Praat’s ARM64 edition),\nrun `clangarm64.exe` to get a `clangarm64` shell. In that shell, run `pacman -Suy` to update and\n`pacman -S mingw-w64-clang-aarch64-clang` to install the build tools package.\nIn the same way you can create a `clang64` toolchain and a `clang32` toolchain\n(`pacman -S mingw-w64-clang-x86_64-clang` and `pacman -S mingw-w64-i686-clang`),\nwhich are good alternatives to the .\n\nMove the Praat sources folders somewhere in your `/home/yourname` tree,\nperhaps even in three places, e.g. as `/home/yourname/praats-arm64`,\n`/home/yourname/praats-intel64` and `/home/yourname/praats-intel32`;\nthe folders `fon` and `sys` should be visible within each of these folders.\n\nIf you now want to build Praat’s ARM64 edition, start the shell `clangarm64` and type\n\n    cd ~/praats-arm64\n    cp makefiles/makefile.defs.msys-clang ./makefile.defs\n    make -j12\n\nIf you want to build Praat’s Intel64 edition, start the shell `clang64` and type\n\n    cd ~/praats-intel64\n    cp makefiles/makefile.defs.msys-clang ./makefile.defs\n    make -j12\n\nor start the shell `mingw64` and type\n\n    cd ~/praats-intel64\n    cp makefiles/makefile.defs.msys-mingw64 ./makefile.defs\n    make -j12\n\nIf you want to build Praat’s Intel32 edition, start the shell `clang32` and type\n\n    cd ~/praats-intel32\n    cp makefiles/makefile.defs.msys-clang ./makefile.defs\n    make -j12\n\nor start the shell `mingw32` and type\n\n    cd ~/praats-intel32\n    cp makefiles/makefile.defs.msys-mingw32 ./makefile.defs\n    make -j12\n\n(With Cygwin, you would install the Devel package mingw64-x86_64-gcc-g++\nfor Praat’s Intel64 edition and mingw64-i686-gcc-g++ for Praat’s Intel32 edition,\nplus perhaps `make` and `pkg-config` if you dont’t have those yet.)\n\n**Code-signing.** From version 6.4.25 on, we have signed the three Praat executables\nwith an “open-source code-signing certificate” (by Certum)\nunder the name “Paulus Boersma” (the Dutch-legal name of one of the authors).\nThis is designed to make it easier for Praat to pass the SmartScreen checks\non Windows 11. Early testing shows that the signature is seen by SmartScreen,\nbut that SmartScreen can still block Praat, so that users still have to\nclick “Run Anyway” (or “Unblock” under Properties).\nIt seems that the card reader for this certificate cannot be used yet for code-signing on ARM64 Windows\nor on MacOS Sonoma/Sequoia, so for the moment we have to fall back on an obsolete Intel64 Windows 10 machine\nand are looking for a more robust solution.\n\n**Testing** on multiple platform versions can be done with virtual machines\nfor Windows 7 (64-bit), Windows 8.1 (64-bit), 64-bit Windows 10 (1507, 1803, 22H2) and Windows 11,\nfor instance on an Intel64 Mac with Parallels Desktop.\nOn an ARM64 Mac with Parallels Desktop, you can test only on Windows 11.\n\n### 3.2. Compiling for Macintosh\n\nTo **build** Praat on the Mac, extract the *praatXXXX_xcodeproj.zip* file\nfrom [Praat’s latest release](https://github.com/praat/praat/releases)\ninto the folder that contains `sys`, `fon`, `dwtools` and so on (e.g. `~/Dropbox/Praats/src`).\nThen open the project `praat.xcodeproj` in Xcode 15.1 (or perhaps later, but not in Xcode 15.0),\nand edit the Intermediate and Product build paths to something that suits you\n(Xcode -\u003e Settings... -\u003e Locations -\u003e Derived Data -\u003e Advanced... -\u003e Custom -\u003e Absolute,\nthen type something after Products, e.g. `~/Dropbox/Praats/bin/macos`,\nas well as something after Intermediates, e.g. `~/builds/mac_intermediates`, then click Done).\nAfter this preliminary work, choose Build or Run for the target `praat_mac`.\nYou can compile with the 14.2 SDK, which will work as far back as macOS 10.11 El Capitan,\nwhich is our deployment target, and will look good even on macOS 14 Sonoma.\n\nIf you get an error message like “Code Signing Identity xxx does not match any valid, non-expired,\ncode-signing certificate in your keychain”, then select the target `praat_mac`, go to Info → Build,\nand switch “Code Signing Identity” to “Don’t Code Sign”,\nor sign with your own certificate if you have one as a registered Apple developer.\n\nIf you get lots of errors saying “Expected unqualified-id” or “Unknown type name NSString”,\nthen you may have to switch the Type of some .cpp file from “C++ Source” to “Objective-C++ Source”\n(under “Identity and Type” in the righthand sidebar).\n\nIf you want to build Praat as a library instead of as an executable,\ntry the target `praat_mac_a` (static) or `praat_mac_so` (dynamic).\n\n**Notarization.** If you want others to be able to use your Mac app,\nyou will probably have to not only *sign* the executable, but also *notarize* it. To this end,\ndo Xcode (version 15) -\u003e Product -\u003e Archive -\u003e Distribute App -\u003e Developer ID -\u003e Upload -\u003e\nAutomatically manage signing -\u003e Upload -\u003e ...wait... (“Package Approved”) ...wait...\n(“Ready to distribute”) -\u003e Export Notarized App). If your Praat.app was built into\n`~/Dropbox/Praats/bin/macos/Configuration64`, then you can save the notarized\n`Praat.app` in `~/Dropbox/Praats/bin/macos`, then drag it in the Finder to\n`~/Dropbox/Praats/bin/macos/Configuration64`, overwriting the non-notarized\nPraat.app that was already there. If on the way you receive an error\n“App Store Connect Operation Error -- You must first sign the relevant contracts online”,\nor “Couldn’t communicate with a helper application“,\nor just a crash (happens with Xcode 15.0),\nyou will have to log in to `developer.apple.com` and do Review Agreement -\u003e Agree;\nyou may then also have to go (or log in) to App Store Connect, then Business (or Agreements, Tax, and Banking)\n-\u003e Paid Apps Agreement -\u003e View and Agree to Terms (even if you have no paid apps).\n\n**Testing** on multiple Intel64 platform versions can be done on older Intel64 Macs,\nusing virtual machines with Parallels Desktop. For instance, a 2013 Macbook Pro can handle\nOS X 10.11 El Capitan, 10.12 Sierra, 10.13 High Sierra, macOS 10.14 Mojave, 10.15 Catalina,\nand macOS 11 Big Sur, while a 2018 Macbook Pro can handle macOS 10.14 Mojave, 10.15 Catalina,\nmacOS 11 Big Sur, macOS 12 Monterey, and macOS 13 Ventura (and macOS 14 Sonoma natively).\nTesting on multiple ARM64 platform versions can be done on an older ARM64 Mac,\nusing virtual machines with Parallels Desktop. For instance, a 2020 Mac Mini could handle\nmacOS 11 Big Sur, macOS 12 Monterey, and macOS 13 Ventura (and macOS 14 Sonoma natively),\nwhile a 2023 Macbook Pro can do macOS 14 Sonoma or macOS 15 Sequoia natively.\n\n### 3.3. Compiling on Linux and other Unixes\n\nTo set up the system libraries required for **building** with the Clang or GCC compiler,\ninstall the necessary build tools as well as some graphics and sound packages:\n\n    sudo apt install make rsync pkg-config\n    # either:\n        sudo apt install clang libc++-dev libc++abi-dev\n    # or:\n        sudo apt install gcc g++\n    sudo apt install libgtk-3-dev\n    sudo apt install libasound2-dev\n    sudo apt install libpulse-dev\n    sudo apt install libjack-dev\n\nTo set up your source tree for Linux, go to Praat's sources directory (where the folders `fon` and `sys` are)\nand type one of the four following commands:\n\n    # on Ubuntu command line (Intel64 or ARM64 processor)\n    # either:\n        cp makefiles/makefile.defs.linux.pulse-clang ./makefile.defs\n    # or:\n        cp makefiles/makefile.defs.linux.pulse-gcc ./makefile.defs\n\n    # on Ubuntu command line (s390x processor)\n    cp makefiles/makefile.defs.linux.s390x.pulse ./makefile.defs\n\n    # on Chromebook command line\n    cp makefiles/makefile.defs.chrome64 ./makefile.defs\n\n    # on Raspberry Pi command line\n    cp makefiles/makefile.defs.linux.rpi ./makefile.defs\n    \n    # on FreeBSD command line\n    cp makefiles/makefile.defs.freebsd.alsa ./makefile.defs\n\nTo build the Praat executable, type `make -j15` or so.\nIf your Unix isn’t Linux, you may have to edit the library names in the makefile\n(you may need pthread, gtk-3, gdk-3, atk-1.0, pangoft2-1.0, gdk_pixbuf-2.0, m, pangocairo-1.0,\ncairo-gobject, cairo, gio-2.0, pango-1.0, freetype, fontconfig, gobject-2.0, gmodule-2.0, \ngthread-2.0, rt, glib-2.0, asound, jack).\n\nWhen compiling Praat on an external supercomputer or so, you will not have sound.\nIf you do have `libgtk-3-dev` (and its dependencies), do\n\n    # on Ubuntu command line (Intel64 or ARM64 processor)\n    cp makefiles/makefile.defs.linux.silent ./makefile.defs\n\nThen type `make -j12` or so to build the program. If your Unix isn’t Linux,\nyou may have to edit the library names in the makefile (you may need pthread, gtk-3, gdk-3, atk-1.0,\npangoft2-1.0, gdk_pixbuf-2.0, m, pangocairo-1.0, cairo-gobject, cairo, gio-2.0, pango-1.0, \nfreetype, fontconfig, gobject-2.0, gmodule-2.0, gthread-2.0, rt, glib-2.0).\n\nWhen compiling Praat for use as a server for commands from your web pages,\nyou may not need sound, a GUI, amd graphics. In that case, do\n\n    # on Ubuntu command line (Intel64 or ARM64 processor)\n    # either:\n        cp makefiles/makefile.defs.linux.barren-clang ./makefile.defs\n    # or:\n        cp makefiles/makefile.defs.linux.barren-gcc ./makefile.defs\n\n    # on Ubuntu command line (s390x processor)\n    cp makefiles/makefile.defs.linux.s390x.barren ./makefile.defs\n\nwhich creates the executable `praat_barren`. Then type `make` or `make -j15` to build the program.\nIf your Unix isn’t Linux, you may have to edit the library names in the makefile.\n\nThe above works exactly the same for Intel64 and ARM64 processors, with the same makefiles.\n\n**Testing** on multiple platform versions can be done with virtual machines\nfor e.g. Ubuntu 20.04, Ubuntu 22.04, Fedora 35, Fedora 37, Mint 20.2,\nDebian GNU Linux 10.10, CentOS 8.4, and CentOS Stream 9, \nfor instance on an Intel64 Mac with Parallels Desktop.\nOn an ARM64 Mac, we test with virtual machines for Ubuntu 22.04, Fedora 38,\nand Debian GNU Linux 12 ARM64.\n\n## 4. Developing Praat on all platforms simultaneously\n\nAt the time of writing (5 January 2024), we develop 12 of the 13 Praat editions on a single\ncomputer, which is a 2023 M3 Macbook Pro. The Mac edition is built natively with Xcode,\nthe three Windows editions are built via Parallels Desktop 19,\nand the six Linux editions and the two Chromebook editions are built via OrbStack;\nonly the Raspberry Pi edition is built separately (on a Raspberry Pi).\nWe put all 13 editions into a `bin` folder on Dropbox, so that it is easy to test\nthe Windows and Linux editions on other computers.\n\nIn the following we assume that you want to create all of those editions as well.\nWe hope that our example will be useful to you.\n\n### 4.1. MacOS development set-up\n\nYour source code folders, such as `fon` and `sys`,\nwill reside in a folder like `~/Dropbox/Praats/src`,\nwhere you also put `praat.xcodeproj`, as described above in 3.2.\nOn our 2023 Mac with Xcode 15.1, building Praat with Command-B or Command-R,\nafter cleaning the build folder with Shift-Command-K,\ntakes only 56 seconds for the ARM64 part and Intel64 part together (optimization level O3).\n\n### 4.2. Windows development set-up\n\nOn a Windows 10 or Windows 11 computer, you can install MSYS2 or Cygwin,\nand create some `praats` folders, as described above in 3.1.\n\nIf you work under Parallels Desktop on an ARM64 Mac,\nyou will want MSYS2, because it has an edition for ARM64.\nYour source tree will reside on the Windows disk,\nwhich can be much faster than building directly on the MacOS disk.\nTo move the source from the MacOS disk to the Windows disk,\nyou “mount” the MacOS disk from MSYS2 or Cygwin; this is easy:\nin Parallels Desktop, choose `Windows 11 ARM` -\u003e `Configure`,\nthen `Options`, then `Sharing`, then `Share Mac`, and set `Share folders` to `Home folder only`\n(if this scares you, then use `Custom Folders` instead).\nYour MacOS home folder (i.e. `/Users/yourname`) is now visible anywhere on Windows\nas the `Z` drive (or so); from any of the three MSYS shells you can access it as `/z`,\nand from the Cygwin terminal you can access it as `/cygdrive/z`.\n\nWhen developing Praat for Windows, you just edit your files in Xcode;\ndo not forget to save them (as you do e.g. by building in Xcode).\nThen, just as you use Command-B and Command-R in Xcode,\nyou will be able to type `praat-build` (which only builds) or `praat-run` (which builds and runs)\ninto your MSYS2 shell. To accomplish this,\nadd the following definitions into `/home/yourname/.bashrc` (i.e. in your MSYS2 Shell home folder),\nso that `bash` will automatically execute them whenever you start your\nMSYS shell or Cygwin terminal (you will need to have installed `rsync` and `make`).\nOn our 2023 Mac, the ARM64 edition will be the default,\nbut the Intel64 and Intel32 versions will also be available;\nas the same `.bashrc` file is shared among all three editions,\nwe use the environment variable `MSYSTEM` to differentiate between the three:\n\n    # in MSYS2:~/.bashrc\n    if [[ \"$MSYSTEM\" == \"CLANGARM64\" ]]; then\n        BUILD_FOLDER=\"~/praats-arm64\"\n        MAKEFILE_DEFS=\"makefiles/makefile.defs.msys-arm64\"\n    elif [[ \"$MSYSTEM\" == \"MINGW64\" ]]; then\n        BUILD_FOLDER=\"~/praats-intel64\"\n        MAKEFILE_DEFS=\"makefiles/makefile.defs.msys-mingw64\"\n    elif [[ \"$MSYSTEM\" == \"MINGW32\" ]]; then\n        BUILD_FOLDER=\"~/praats-intel32\"\n        MAKEFILE_DEFS=\"makefiles/makefile.defs.msys-mingw32\"\n    fi\n    ORIGINAL_SOURCES=\"/z/Dropbox/Praats/src\"\n    EXCLUDES='--exclude=\"*.xcodeproj\" --exclude=\"Icon*\" --exclude=\".*\" --exclude=\"*kanweg*\"'\n    alias praat-build=\"( cd $BUILD_FOLDER \u0026\u0026\\\n        rsync -rptvz $ORIGINAL_SOURCES/ $EXCLUDES . \u0026\u0026\\\n        cp $MAKEFILE_DEFS ./makefile.defs \u0026\u0026\\\n        make -j12 )\"\n    alias praat=\"$BUILD_FOLDER/Praat.exe\"\n    alias praat-run=\"praat-build \u0026\u0026 praat\"\n\nThis also defines `praat` for running Praat without first rebuilding it.\nThe cycle from editing Praat on the Mac to running the new version on Windows therefore takes only two steps:\n\n1. edit and save the source code in Xcode on your Mac;\n2. type `praat-run` on your Windows 11 (under Parallels Desktop on your Mac) in one of the three MSYS2 shells.\n\nOn our 2023 Mac, the three builds cost 86 seconds for ARM64,\n212 seconds for Intel64 (under emulation), and 390 seconds for Intel32 (also under emulation).\n\n### 4.3. Linux development set-up\n\nOn an Ubuntu 20.04 or 22.04 computer, create a folder `praats` in your home folder,\nas described above in 3.3.\n\nIf you work under Parallels Desktop (19 or later) on an Intel64 Mac,\nchoose `Ubuntu 20.04 or 22.04` -\u003e `Configure`,\nthen `Options`, then `Sharing`, then `Share Mac`, and set `Share folders` to `Home folder only`\n(or use `Custom Folders` instead).\nYour MacOS home folder (i.e. `/Users/yourname`) is now visible on the Ubuntu desktop\nas `Home`, and from the `Terminal` you can access it as `/media/psf/Home`.\n\nHowever, on an ARM64 Mac this procedure with Parallels Desktop works only for the ARM64 edition.\nWith OrbStack we can instead create the Intel64 edition as well\n(and building the ARM64 edition is also faster). Your Mac home folder is known\nsimply as `/Users/yourname` or so.\n\nWhen developing Praat for Linux, you just edit and save your files in Xcode.\nYou will be able to type `praat-build` (which only builds) or `praat-run` (which builds and runs)\ninto your `Terminal` after you add the following definitions into\n`/home/yourname/.bash_aliases` in your Ubuntu home folder\n(this will be run automatically by `.bashrc` whenever you start a `Terminal` window,\nassuming that it uses the `bash` shell; please note the subtle but crucial difference\nbetween `/Users/yourname` and `/home/yourname`):\n\n    # in Ubuntu:/home/yourname/.bash_aliases\n    ORIGINAL_SOURCES=\"/Users/yourname/Dropbox/Praats/src\"\n    EXCLUDES='--exclude=\"*.xcodeproj\" --exclude=\"Icon*\" --exclude=\".*\" --exclude=\"*kanweg*\"'\n    alias praat-build=\"( cd ~/praats \u0026\u0026\\\n        rsync -rptvz $ORIGINAL_SOURCES/ $EXCLUDES . \u0026\u0026\\\n        cp makefiles/makefile.defs.linux.pulse-clang makefile.defs \u0026\u0026\\\n        make -j15 )\"\n    alias praat=\"~/praats/praat\"\n    alias praat-run=\"praat-build \u0026\u0026 praat\"\n\nIn OrbStack, if you don’t have a GUI, try `praat-run --version` instead;\nbut note that you can have a GUI by running XQuartz. With XQuartz running,\nyou type something like `xhost +192.168.1.99` (if that’s the local IP address of your computer)\ninto the XQuartz terminal window (or put `xhost +192.168.1.99` and `exec quartz-wm` into your `.xinitrc` file),\nand type something like `export DISPLAY=192.168.1.99:0` (depending on your local IP address)\nin your OrbStack window (or into your `.bashrc` file), followed by `praat` into your OrbStack window;\nthe Praat-for-Linux Objects and Picture windows will then show up on your Mac screen.\n\nOn our 2023 Mac, building Praat this way from scratch takes 42 seconds for the ARM64 edition\nand 130 seconds (under emulation) for the Intel64 edition (optimization level O3).\n\nTo build `praat_barren`, create a folder `praatsb`, and define\n\n    # in Ubuntu:~/.bash_aliases\n    alias praatb-build=\"( cd ~/praatsb \u0026\u0026\\\n        rsync -rptvz $ORIGINAL_SOURCES/ $EXCLUDES . \u0026\u0026\\\n        cp makefiles/makefile.defs.linux.barren-clang makefile.defs \u0026\u0026\\\n        make -j15 )\"\n    alias praatb=\"~/praatsb/praat_barren\"\n    alias praatb-run=\"praatb-build \u0026\u0026 praatb\"\n\nYou test `praat_barren` briefly by typing\n\n    # on Ubuntu command line\n    praatb --version\n\nTo build Praat for Chrome64 (64-bit Intel Chromebooks only),\ncreate a folder `praatc`, and define\n\n    # in Ubuntu:~/.bash_aliases\n    alias praatc-build=\"( cd ~/praatsc \u0026\u0026\\\n        rsync -rptvz $ORIGINAL_SOURCES/ EXCLUDES . \u0026\u0026\\\n        cp makefiles/makefile.defs.chrome64 makefile.defs \u0026\u0026\\\n        make -j15 )\"\n    alias praatc=\"~/praatsc/praat\"\n    alias praatc-run=\"praatc-build \u0026\u0026 praat\"\n\nTo test Praat for Chrome64, you can just run it on Ubuntu by typing `praatc`,\nor you transfer it to a Chromebook for the real test.\n\n### 4.4. Chromebook development set-up\n\nParallels Desktop 19 has no emulator for Chrome, so the choice is between\nbuilding Praat on a Chromebook directly or building Praat on Ubuntu 20.04 or 22.04.\nOn a 2019 HP Chromebook with Intel processor, building Praat takes\na forbidding 27 minutes.\n\nSo we choose to build Praat on Ubuntu (under Parallels Desktop on an Intel64 Mac),\nbecause building the Intel Chrome64 edition on OrbStack Ubuntu 20.04 takes only\n63 seconds (ARM64) or 215 seconds (Intel64). If you have the Linux set-up described in 4.3,\nyou can do this with the `praatc-build` command.\n\nNext, you need a way to get the executable `praat` from Mac/Ubuntu to your Chromebook.\nThe distributors of Praat do this via an intermediary university computer;\nlet’s call this computer-in-the-middle `fon.hum.uva.nl`\n(not coincidentally, that’s the name of the computer that hosts `praat.org`).\nIf you have an account on that computer (say it’s called `yourname`),\nthen you can access that account with `ssh`, and it is best to do that without\ntyping your password each time. To accomplish this, type\n\n    # on Ubuntu command line\n    ssh-keygen\n\non your Ubuntu. This gives you a file `~/.ssh/id_rsa.pub` on your Ubuntu,\nwhich contains your public `ssh` key. You should append the contents of this `id_rsa.pub`\nto the file `~/.ssh/authorized_keys` on your intermediary computer. From that moment on,\nyour intermediary computer will accept `rsync -e ssh` calls from your Ubuntu.\nOn the intermediary computer, create a folder `~/builds`, and a folder `chrome64` inside that.\nIf you now define\n\n    # in Ubuntu:~/.bash_aliases\n    praatc-put=\"rsync -tpvz ~/praatsc/praat yourname@fon.hum.uva.nl:~/builds/chrome64\"\n    praatc-mid=\"praatc-build \u0026\u0026 praatc-put\"\n\nyou can build and send Praat for Chrome to the intermediary computer by just typing\n\n    # on Ubuntu command line\n    praatc-mid\n\nOn your Chromebook, start up Linux (see the Chromebook download page for details),\ncreate a directory `~/praats` there, and define the following:\n\n    # in Chromebook:~/.bash_aliases\n    alias praat-get=\"( cd ~/praats \u0026\u0026\\\n        rsync -tpvz yourname@fon.hum.uva.nl:~/builds/chrome64/praat . )\"\n    alias praat=\"~/praats/praat\"\n    alias praat-run=\"praat-get \u0026\u0026 praat\"\n\nFrom then on, you can use\n\n    # on Chromebook command line\n    praat-run\n\nto fetch Praat from the intermediary computer and run it.\n\nThe cycle from editing Praat on the Mac to running it on your Chromebook therefore takes only three steps:\n\n1. edit and save the source code in Xcode on your Mac;\n2. type `praatc-mid` on your Ubuntu (under Parallels Desktop on your Mac);\n3. type `praat-run` on your Chromebook.\n\nFor edits in a `cpp` file (no changes in header files), this whole cycle can be performed within 15 seconds.\n\n### 4.5. Raspberry Pi development set-up\n\nOne could perhaps create the Raspberry Pi edition by cross-compiling on Ubuntu 20.04 or 22.04.\nIf any reader of these lines has precise instructions, we would like to know about it\n(the main problem is how to install the GTK etc libraries in the Raspberry Pi toolchain,\nor how to get `dpkg` under Ubuntu-buster to actually find `armhf` libraries).\n\nTill then, you build on the Raspberry Pi itself. Your could do that via an intermediary computer\n(analogously to what we described above for Chromebook), but you can also do it directly\nif you include your Raspberry Pi in the same local network as your Mac and switch on SSH\non your Raspberry Pi (via Raspberry -\u003e  `Preferences` -\u003e `Raspberry Pi Configuration`\n-\u003e `Interfaces` -\u003e `SSH` -\u003e `Enable`. You add your Mac’s public SSH key to your Raspberry Pi with\n\n    # on Mac command line\n    ssh-keygen   # only if you have no SSH key yet\n    ssh-copy-id pi@192.168.1.2   # or whatever your Pi’s static IP address is\n\nOn your Raspberry Pi, you create a folder `~/praats`,\nafter which you can push the sources from your Mac to your Raspberry Pi with\n\n    # in Mac:~/.bash_profile\n    ORIGINAL_SOURCES=\"~/Praats/src\"\n    EXCLUDES='--exclude=\"*.xcodeproj\" --exclude=\"Icon*\" --exclude=\".*\" --exclude=\"*kanweg*\"'\n    alias praats-putpi=\"rsync -rptvz -e ssh $EXCLUDES \\\n        $ORIGINAL_SOURCES/ pi@192.168.1.2:~/praats\"\n\nOn the Raspberry Pi, you define\n\n    # in RaspberryPi:~/.bash_aliases\n    alias praat-build=\"( cd ~/praats \u0026\u0026\\\n        cp makefiles/makefile.defs.linux.rpi makefile.defs \u0026\u0026\\\n        make -j4 )\"\n    alias praat=\"~/praats/praat\"\n    alias praat-run=\"praat-build \u0026\u0026 praat\"\n\nafter which you can build and run Praat with\n\n    # on Raspberry Pi command line\n    praat-run\n\nThus, the cycle from editing Praat on the Mac to running it on your Raspberry Pi therefore takes three steps:\n\n1. edit and save the source code in Xcode on your Mac;\n2. type `praats-putpi` on your Mac;\n3. type `praat-run` on your Raspberry Pi, perhaps via `ssh -X pi@192.168.1.2` in your Mac terminal.\n\nFrom clean sources this takes around 19 minutes (on a Raspberry Pi 4B),\nbut if no header files change, then it can be done in approximately 20 seconds.\n\n### 4.6. s390x development set-up on LinuxONE\n\nOnce you have a (permanent) open-source LinuxONE account (https://community.ibm.com/zsystems/form/l1cc-oss-vm-request/),\nyou will probably have an SSH key generated in a `*.pem` file,\nwhich you moved for instance to `~/Dropbox/Praats/ssh/mylinux1key.pem`.\n\nOn your LinuxONE virtual machine, you create folders `~/praats` and `~/praatsb`,\nafter which you can push the sources from your Mac to your LinuxONE VM with\n\n    # in Mac:~/.bash_profile\n    ORIGINAL_SOURCES=\"~/Praats/src\"\n    EXCLUDES='--exclude=\"*.xcodeproj\" --exclude=\"Icon*\" --exclude=\".*\" --exclude=\"*kanweg*\"'\n    alias praats-putone=\"rsync -rptvz -e \\\"ssh -i ~/Dropbox/Praats/ssh/mylinux1key.pem\\\" $EXCLUDES \\\n        $ORIGINAL_SOURCES/ linux1@199.199.99.99:~/praats\"\n\nwhere instead of `199.199.99.99` you use the IP address that the LinuxONE owners sent to you.\nIn your LinuxONE VM, you define\n\n    # in LinuxONE:~/.bash_profile\n    alias praat-build=\"( cd ~/praats \u0026\u0026\\\n        cp makefiles/makefile.defs.linux.s390.pulse makefile.defs \u0026\u0026\\\n        make -j4 )\"\n    alias praat=\"~/praats/praat\"\n    alias praat-run=\"praat-build \u0026\u0026 praat\"\n    alias praatb-build=\"( cd ~/praatsb \u0026\u0026\\\n        cp makefiles/makefile.defs.linux.s390.barren makefile.defs \u0026\u0026\\\n        make -j4 )\"\n    alias praatb=\"~/praatsb/praat_barren\"\n    alias praatb-run=\"praatb-build \u0026\u0026 praatb\"\n\nafter which you can build and run Praat with\n\n    # on LinuxONE command line\n    praat-run\n\nThus, the cycle from editing Praat on the Mac to running it on your LinuxONE VM therefore takes three steps:\n\n1. edit and save the source code in Xcode on your Mac;\n2. type `praats-putone` on your Mac;\n3. type `praat-run` on your LinuxONE VM,\n   perhaps via `ssh -X -i ~/Dropbox/Praats/ssh/mylinux1key.pem linux1@199.199.99.99` in your Mac terminal.\n\n### 4.7. Distributing Praat\n\nIf you want to distribute your version of Praat, you can do so on GitHub and/or on a website\n(at least, that’s how the main authors do it). Both of these venues require that you have\nall the executables in one place. The guide below refers to the creation of packages\nfor all platforms for Praat version 9.9.99, although your version number will be different.\nThe packages will be collected in the directory `~/Praats/www` on the Mac.\n\nIf you follow the location mentioned in the `.xcodeproj` file, the Mac binary will reside\nin a place like `~/Dropbox/Praats/bin/Configuration64`.\n\nAfter notarizing the Mac binary (see above under 3.2),\nyou include the executable in a `.dmg` disk image, with the following commands:\n\n    # on Mac command line\n    PRAAT_WWW=\"~/Dropbox/Praats/www\"\n    PRAAT_VERSION=9999\n    cd ~/Dropbox/Praats/bin/macos/Configuration64\n    hdiutil create -fs HFS+ -ov -srcfolder Praat.app -volname Praat_${PRAAT_VERSION} praat_${PRAAT_VERSION}.dmg\n    hdiutil convert -ov -format UDZO -o ${PRAAT_WWW}/praat${PRAAT_VERSION}_mac.dmg praat_${PRAAT_VERSION}.dmg\n    rm praat_${PRAAT_VERSION}.dmg\n\nYou also need to distribute the `.xcodeproj` file, which is actually a folder, so that you have to zip it:\n\n    # on Mac command line\n    ORIGINAL_SOURCES=\"~/Dropbox/Praats/src\"\n    cd $ORIGINAL_SOURCES\n    zip -r $PRAAT_WWW/praat${PRAAT_VERSION}_xcodeproj.zip praat.xcodeproj\n\nThe Windows executables have to be sent from your Cygwin terminal or MSYS shell to your Mac.\nIt is easiest to do this without a version number (so that you have to supply the number only once),\nso you send them to the intermediate Mac folders `~/Dropbox/Praats/bin/win-intel64`\nand `~/Dropbox/Praats/bin/win-intel32` and `~/Dropbox/Praats/bin/win-arm64`.\nOn MSYS you can define:\n\n    # in MSYS:~/.bashrc\n    alias praat-dist=\"praat-build \u0026\u0026 rsync -t ~/praats/Praat.exe /z/Dropbox/Praats/bin/win-arm64\"\n    alias praat64-dist=\"praat64-build \u0026\u0026 rsync -t ~/praats64/Praat.exe /z/Dropbox/Praats/bin/win-intel64\"\n    alias praat32-dist=\"praat32-build \u0026\u0026 rsync -t ~/praats32/Praat.exe /z/Dropbox/Praats/bin/win-intel32\"\n\nso that you can “upload” the two executables to the Mac with\n\n    # on MSYS command line\n    praat-dist\n    praat64-dist\n    praat32-dist\n\nThe four Linux executables have to be sent from your Ubuntu terminal to your Mac,\nnamely to the folder `~/Dropbox/Praats/bin/linux_intel64` or `~/Dropbox/Praats/bin/linux_arm64`\n(each of which will contain `praat` and `praat_barren`), and to the folder\n`~/Dropbox/Praats/bin/chrome_intel64` or `~/Dropbox/Praats/bin/chrome_arm64`\n(which will contain only `praat`).\nOn Ubuntu you can define\n\n    # in MSYS2 Intel64 Ubuntu:~/.bash_aliases\n    alias praat-dist=\"praat-build \u0026\u0026 rsync -t ~/praats/praat /Users/yourname/Dropbox/Praats/bin/linux-intel64\"\n    alias praatb-dist=\"praatb-build \u0026\u0026 rsync -t ~/praatsb/praat_barren /Users/yourname/Dropbox/Praats/bin/linux-intel64\"\n    alias praatc-dist=\"praatc-build \u0026\u0026 rsync -t ~/praatsc/praat /Users/yourname/Dropbox/Praats/bin/chrome-intel64\"\n\n    # in MSYS2 ARM64 Ubuntu:~/.bash_aliases\n    alias praat-dist=\"praat-build \u0026\u0026 rsync -t ~/praats/praat /Users/yourname/Dropbox/Praats/bin/linux-arm64\"\n    alias praatb-dist=\"praatb-build \u0026\u0026 rsync -t ~/praatsb/praat_barren /Users/yourname/Dropbox/Praats/bin/linux-arm64\"\n    alias praatc-dist=\"praatc-build \u0026\u0026 rsync -t ~/praatsc/praat /Users/yourname/Dropbox/Praats/bin/chrome-arm64\"\n\nso that you can “upload” the four executables to the Mac with\n\n    # on Ubuntu command line\n    praat-dist\n    praatb-dist\n    praatc-dist\n\nYou can fetch the Raspberry Pi edition directly from your Raspberry Pi:\n\n    # on Mac command line\n    rsync -tpvz -e ssh pi@192.168.1.2:~/praats/praat ~/Dropbox/Praats/bin/rpi-armv7\n\nand the s390x edition directly from your LinuxONE account:\n\n    # on Mac command line\n    rsync -tpvz -e \"ssh -i ~/Dropbox/Praats/ssh/mylinux1key.pem\" linux1@199.199.99.99:~/praats/praat ~/Dropbox/Praats/bin/linux-s390x\n    rsync -tpvz -e \"ssh -i ~/Dropbox/Praats/ssh/mylinux1key.pem\" linux1@199.199.99.99:~/praatsb/praat_barren ~/Dropbox/Praats/bin/linux-s390x\n\nWhen the folders under `~/Dropbox/Praats/bin`, namely `win-intel64`, `win-intel32`, `win-arm64`,\n`linux-intel64`, `linux-arm64`, `chrome-intel64`, `chrome-arm64` and `rpi-armv7`\nall contain enough new executables (there should be 1, 1, 1, 3, 3, 1, 1 and 1, respectively),\nyou can issue the following commands to create the packages and install them in `~/Dropbox/Praats/www`:\n\n    # on Mac command line\n    zip $PRAAT_WWW/praat${PRAAT_VERSION}_win-intel64.zip ~/Dropbox/Praats/bin/win-intel64/Praat.exe\n    zip $PRAAT_WWW/praat${PRAAT_VERSION}_win-intel32.zip ~/Dropbox/Praats/bin/win-intel32/Praat.exe\n    zip $PRAAT_WWW/praat${PRAAT_VERSION}_win-arm64.zip ~/Dropbox/Praats/bin/win-arm64/Praat.exe\n    ( cd ~/Dropbox/Praats/bin/linux-intel64 \u0026\u0026\\\n      tar cvf praat${PRAAT_VERSION}_linux-intel64.tar praat \u0026\u0026\\\n      gzip praat${PRAAT_VERSION}_linux-intel64.tar \u0026\u0026\\\n      mv praat${PRAAT_VERSION}_linux-intel64.tar.gz $PRAAT_WWW )\n    ( cd ~/Dropbox/Praats/bin/linux-intel64 \u0026\u0026\\\n      tar cvf praat${PRAAT_VERSION}_linux-intel64-barren.tar praat_barren \u0026\u0026\\\n      gzip praat${PRAAT_VERSION}_linux-intel64-barren.tar \u0026\u0026\\\n      mv praat${PRAAT_VERSION}_linux-intel64-barren.tar.gz $PRAAT_WWW )\n    ( cd ~/Dropbox/Praats/bin/chrome-intel64 \u0026\u0026\\\n      tar cvf praat${PRAAT_VERSION}_chrome-intel64.tar praat \u0026\u0026\\\n      gzip praat${PRAAT_VERSION}_chrome-intel64.tar \u0026\u0026\\\n      mv praat${PRAAT_VERSION}_chrome-intel64.tar.gz $PRAAT_WWW )\n    ( cd ~/Dropbox/Praats/bin/linux-arm64 \u0026\u0026\\\n      tar cvf praat${PRAAT_VERSION}_linux-arm64.tar praat \u0026\u0026\\\n      gzip praat${PRAAT_VERSION}_linux-arm64.tar \u0026\u0026\\\n      mv praat${PRAAT_VERSION}_linux-arm64.tar.gz $PRAAT_WWW )\n    ( cd ~/Dropbox/Praats/bin/linux-arm64 \u0026\u0026\\\n      tar cvf praat${PRAAT_VERSION}_linux-arm64-barren.tar praat_barren \u0026\u0026\\\n      gzip praat${PRAAT_VERSION}_linux-arm64-barren.tar \u0026\u0026\\\n      mv praat${PRAAT_VERSION}_linux-arm64-barren.tar.gz $PRAAT_WWW )\n    ( cd ~/Dropbox/Praats/bin/chrome-arm64 \u0026\u0026\\\n      tar cvf praat${PRAAT_VERSION}_chrome-arm64.tar praat \u0026\u0026\\\n      gzip praat${PRAAT_VERSION}_chrome-arm64.tar \u0026\u0026\\\n      mv praat${PRAAT_VERSION}_chrome-arm64.tar.gz $PRAAT_WWW )\n    ( cd ~/Dropbox/Praats/bin/rpi-armv7 \u0026\u0026\\\n      tar cvf praat${PRAAT_VERSION}_rpi-armv7.tar praat \u0026\u0026\\\n      gzip praat${PRAAT_VERSION}_rpi-armv7.tar \u0026\u0026\\\n      mv praat${PRAAT_VERSION}_rpi-armv7.tar.gz $PRAAT_WWW )\n    ( cd ~/Dropbox/Praats/bin/linux-s390x \u0026\u0026\\\n      tar cvf praat${PRAAT_VERSION}_linux-s390x.tar praat \u0026\u0026\\\n      gzip praat${PRAAT_VERSION}_linux-s390x.tar \u0026\u0026\\\n      mv praat${PRAAT_VERSION}_linux-s390x.tar.gz $PRAAT_WWW )\n\nFinally, you can update your website and/or create a new release on GitHub.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpraat%2Fpraat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpraat%2Fpraat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpraat%2Fpraat/lists"}