One of the great successes of the summer has been the ROUGOL online meetings on Zoom. Being online instead of in London has allowed a much wider range of speakers and attendees. The talks start at 7:45pm on Zoom, and there is usually chat before and after the meetings. There are usually 30-40 people attending.
Tonight (Monday 19th October) it was the turn of Jason Tribbeck to talk about sound. His day job is at a defence company designing simulators.
Jason's talk was all about sound and a new sound API for RISC OS. He started with his brief history, starting on the BBC Micro and including software/hardware for sound capture and playback for Archimedes.He developed the VTX2000 sound synthesiser and wrote audio playback for several games. He also composed music.
Stefan Fröhling from Cloverleaf started a conversation which resulted in the idea for a new sound API.
Jason gave us a quick overview of how Computer audio works, sampling and audio buffers to reduce CPU load. Historically RISC OS had audio input devices or audio input/output. Cards only tended to work with vendors cards. Acorn did have some ideas for an API but it never happened.
Modern computers have built-in audio input and output. Sound is also available on HDMI, USB and Bluetooth. I2S provides a flexible hardware standard.
API needs to be:-
1. Easy to implement.
2. Easy to use.
3. Allow backward compatibility.
4. Be hardware agnostic
5. Be extensible for future needs.
I2S is an obvious choice as supported by hardware such as Raspberry Pi. It is also easiest to implement.
RISC OS SOUND has gone through a number of transitions. Started on 8bit until 16-bit stereo in RISC PC.
This new API will be next stage with multiple audio input and output streams, 32-bit channel streams, shared and non-shared audio applications and compressed audio formats.
There will be a shared and deviated mode. Applications will need to use new API, but emulation for older sound systems.
API has 4 areas of interest:-
1. Applications that need to use sound.
2. Hardware that provides interface.
3. A new interface to convert between formats.
4. Discovery of hardware.
Jason started the development with documentation, with the layout modelled on the PRM.
The module will be called SoundSystem and source code is in Subversion. He is testing on RaspberryPI.
Code is written in pure ARM on GCCSDK via Jenkins.
There are 3 modules:-
1. Main API module
2. RaspberryPi I2s reference interface.
3. Dummy reference interface.
Jason is a strong believer in source repository and Unit testing, with continuous testing on each change.
Code testing is actually using an ARM emulator called Amethyst. Testing is done on X-ARM, written by Jason in 1993 as an ARM assembler. And ROUTE - RISC OS Unit Test Engine which allows XML descriptions of tests.
Development steps are:-
1. Removal of all existing APIs.
2. Development of SoundDMA/SoundChannel shims to provide emulation.
3. Development of new API features.
Future ideas include integration of RDSP from Amcog and a data manager.
After Jason finished his formal presentation, there were lots of questions.
The talk was recorded so should appear shortly if you missed the live talk.