Status Update

It’s been over a month - what’s going on?

M. Edward (Ed) Borasky https://twitter.com/znmeb
04-22-2021

Hardware

The Jetson developer kits do not have all have on-board audio capture or playback hardware. However, they all have HDMI and USB ports. See (NVIDIA 2021a) for the details.

As a result, to actually hear a sound from a Jetson-based synthesizer, one needs either an HDMI audio extractor or a USB digital-analog converter (DAC). The HDMI ones are commonly used in home theater setups. I don’t have a home theater setup, so I can’t comment on these.

The USB ones range in price from less than $20US for a dongle with a headphone and microphone jack to studio-grade devices costing hundreds of dollars. Note that for both the HDMI and USB devices, the Jetsons support up to eight channels of 24-bit samples at a 192 kilohertz sampling rate (NVIDIA 2021b), (NVIDIA 2021c).

I went with a “prosumer” USB DAC from Amazon that will handle up to 24-bit samples at 192 kilohertz. It’s probably overkill for a synth, but I have a fair number of HiRes FLAC classical music files, so it will get used.

Software architecture

For a variety of reasons I am going with a “pet container” (Riek 2016a), (Riek 2016b), (Riek 2016c) architecture. IF you’ve been following the project on GitHub, you’ll see what I’ve been building.

However, about a week ago I realized I was duplicating large chunks of my other Jetson pet container project, edgyR. So rather than build a whole new pet container gizmo, I’m refactoring the code into a set of installers for the edgyR container. This will provide both JupyterLab and RStudio Server access to the analysis and synthesis engines.

Analysis / synthesis components

As of this writing, the supported packages are

The R library packages described in Sueur (2018) are also available. Of these, only cuSignal and CSound have code to use the GPU.

Livecoding support

In the process of research for this project, I re-discovered that there is a community of people who make music by coding it live. There were even algoraves before the pandemic.

I’ve known about ChucK for a number of years, but there are some other projects I discovered, as well as some organizations:

TidalCycles currently installs without incident and will probably be in the initial release. Sonic Pi has an Erlang dependency and I had some problems getting clean builds, so it won’t be on the initial release.

Orca is a fascinating tool - it’s a cross between Conway’s “Game of Life” and Pure Data aka Pd. Speaking of Pd, it does build, and if I can find a way to access it via a browser it will be on the initial release.

An x86_64 version?

For those of you lucky enough to have a Windows 10 machine with an NVIDIA GPU and adventurous enough to run the Windows Insider preview builds, Linux GUI app support with audio is now available. See The Initial Preview of GUI app support is now available for the Windows Subsystem for Linux and https://github.com/microsoft/wslg for the details.

I am both blessed with such a machine and adventurous enough, and will most likely be “porting” the edgyR image to WSL 2. This is a lot less work than the Jetson version; upstream binary packages are available for just about all the components that aren’t already in Ubuntu 18.04 LTS. I guess it still counts as “edgy” since it’s using an insider build of Windows.

NVIDIA. 2021a. “ASoC Driver for Jetson Products.” https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/asoc_driver.19.2.html#wwconnect_header.
———. 2021b. “High Definition Audio.” https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/asoc_driver.19.2.html#wwpID0E0SY0HA.
———. 2021c. “USB Audio.” https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/asoc_driver.19.2.html#wwpID0E0TX0HA.
Riek, Daniel. 2016a. “In Defense of the Pet Container, Part 1: Prelude - the Only Constant Is Complexity.” https://www.redhat.com/en/blog/defense-pet-container-part-1-prelude-only-constant-complexity.
———. 2016b. “In Defense of the Pet Container, Part 2: Wrappers, Aggregates and Models... Oh My!” https://www.redhat.com/en/blog/defense-pet-container-part-2-wrappers-aggregates-and-models-oh-my.
———. 2016c. “In Defense of the Pet Container, Part 3: Puppies, Kittens and... Containers.” https://www.redhat.com/en/blog/defense-pet-container-part-3-puppies-kittens-and-containers.
Sueur, J. 2018. Sound Analysis and Synthesis with r. Use r! Springer International Publishing. https://books.google.com/books?id=zfVeDwAAQBAJ.

References

Citation

For attribution, please cite this work as

Borasky (2021, April 22). AlgoCompSynth by znmeb: Status Update. Retrieved from https://www.algocompsynth.com/posts/2021-04-22-status-update/

BibTeX citation

@misc{borasky2021status,
  author = {Borasky, M. Edward (Ed)},
  title = {AlgoCompSynth by znmeb: Status Update},
  url = {https://www.algocompsynth.com/posts/2021-04-22-status-update/},
  year = {2021}
}