From murdoch@dunc@n @end|ng |rom gm@||@com  Wed May  6 20:26:34 2020
From: murdoch@dunc@n @end|ng |rom gm@||@com (Duncan Murdoch)
Date: Wed, 6 May 2020 14:26:34 -0400
Subject: [Rd] defining r audio connections
In-Reply-To: <20200506170919.GA34684@localhost>
References: <20200506170919.GA34684@localhost>
Message-ID: <d6158363-d59a-3fa9-7ccd-0a80985094ab@gmail.com>

On 06/05/2020 1:09 p.m., frederik at ofb.net wrote:
> Dear R Devel,
> 
> Since Linux moved away from using a file-system interface for audio, I think it is necessary to write special libraries to interface with audio hardware from various languages on Linux.
> 
> In R, it seems like the appropriate datatype for a `snd_pcm_t` handle pointing to an open ALSA source or sink would be a "connection". Connection types are already defined in R for "file", "url", "pipe", "fifo", "socketConnection", etc.
> 
> Is there a tutorial or an example package where a new type of connection is defined, so that I can see how to do this properly in a package?
> 
> I can see from the R source that, for example, `do_gzfile` is defined in `connections.c` and referenced in `names.c`. However, I thought I should ask here first in case there is a better place to start, than trying to copy this code.
> 
> I only want an object that I can use `readBin` and `writeBin` on, to read and write audio data using e.g. `snd_pcm_writei` which is part of the `alsa-lib` package.

I don't think R supports user-defined connections, but probably writing 
readBin and writeBin equivalents specific to your library wouldn't be 
any harder than creating a connection.  For those, you will probably 
want to work with an "external pointer" (see Writing R Extensions). 
Rcpp probably has support for these if you're working in C++.

Duncan Murdoch



[Rd] defining r audio connections
Duncan Murdoch