220 26169 <3c0fde91-671d-4751-955d-7b04cfa120bc@isocpp.org> article
Path: news.gmane.org!not-for-mail
From: alexander.zywicki@gmail.com
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: Any interest to adding audio support to the std library?
Date: Fri, 3 Jun 2016 21:04:20 -0700 (PDT)
Lines: 449
Approved: news@gmane.org
Message-ID: <3c0fde91-671d-4751-955d-7b04cfa120bc@isocpp.org>
References: <5751B06A.4080501@mail1.stofanet.dk> <5290948.va25uYNizX@tjmaciei-mobl1>
 <CAEhD+6Ca=j3SaS5nC_Qe=6FGMdJLgpQd1LnGfiep8m9GrEU1jQ@mail.gmail.com>
 <1580229.cHEgQxCuA1@tjmaciei-mobl1> <CANh-dX=heKaWzvE+rk8FeCSTQyZ8-FR9UaGdam8quLaEuLJ=-A@mail.gmail.com>
 <62b7649a-5de5-4330-9bac-708375d36e2c@isocpp.org>
 <CAOcFa=fnWS=T2p6xgQ_EiCnVTmkSk_UrobDMYvXhaKi95cxrdQ@mail.gmail.com>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: plane.gmane.org
Mime-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_2708_1354587437.1465013060639"
X-Trace: ger.gmane.org 1465013115 26159 80.91.229.3 (4 Jun 2016 04:05:15 GMT)
X-Complaints-To: usenet@ger.gmane.org
NNTP-Posting-Date: Sat, 4 Jun 2016 04:05:15 +0000 (UTC)
To: ISO C++ Standard - Future Proposals <std-proposals@isocpp.org>
Original-X-From: std-proposals+bncBCS7TY6DTQOBBRVGZG5AKGQEWS4NFCA@isocpp.org Sat Jun 04 06:05:10 2016
Return-path: <std-proposals+bncBCS7TY6DTQOBBRVGZG5AKGQEWS4NFCA@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-qk0-f199.google.com ([209.85.220.199])
	by plane.gmane.org with esmtp (Exim 4.69)
	(envelope-from <std-proposals+bncBCS7TY6DTQOBBRVGZG5AKGQEWS4NFCA@isocpp.org>)
	id 1b92ox-0003GO-Vd
	for gclcip-std-proposals@m.gmane.org; Sat, 04 Jun 2016 06:04:24 +0200
Original-Received: by mail-qk0-f199.google.com with SMTP id g77sf239039803qke.3
        for <gclcip-std-proposals@m.gmane.org>; Fri, 03 Jun 2016 21:04:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isocpp-org.20150623.gappssmtp.com; s=20150623;
        h=date:from:to:message-id:in-reply-to:references:subject:mime-version
         :x-original-sender:reply-to:precedence:mailing-list:list-id
         :x-spam-checked-in-group:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe;
        bh=MYD3wZxeN8cPBCjMe6AAYUz6KbVUUDS+39JSagtc74w=;
        b=Ul55ktfOgJsJDDPLE9CKehwdojG0ET6dMgoYRcCvt0WkwC1X4zbH5Bqs+vM9pYEvFq
         qCA2hzo2GD8g2EGUWH83dekhPii2m2G4JVhOZy8ObsiZnD/F3yCSsFgQhex5pdEN50VK
         Y3GdDNZPVi3nsv66avD+zknpkypZ3WgA19if9OwM2g3FWpcma3Ua+07kakmgDmGDx9Yq
         JAOvyXHG08eWQkSC+4tNEfK8THoxqkULXWs+P0JSJxhIC+g5362SLHLH3g6mB8HKy0R7
         ujSrN8hx8aAxweheqGexY3Kwu6EtVDfDGDP6vBudQwRwvs3p856C4Y1EbQtx0lUn0yF3
         jkng==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20120113;
        h=date:from:to:message-id:in-reply-to:references:subject:mime-version
         :x-original-sender:reply-to:precedence:mailing-list:list-id
         :x-spam-checked-in-group:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe;
        bh=MYD3wZxeN8cPBCjMe6AAYUz6KbVUUDS+39JSagtc74w=;
        b=dyvBThjf8onDvubu3tzrisz2EVf+j4X6Su/fGu2yFBQwwYLFWfSCkeiSEybznec40Z
         tlhhNTkrBRjR9W7hUkSfT08S+w9ay4lJNFANyC8waBtenW4y8KidR0Oa17+L+s7kEEwi
         j7tivr+M3D2peNIR8CenFTXRWxIqjKrzgCCVDb8TKj7v+8LR5QRlWjiWA3i4C0h4k2Ql
         WVwjKgCnDbbi9SJ5LTb5uaPNR3ZLe/Sf/FF1muCre0f+Z6qXnV2t13pw0ZfC9jVjMF7+
         op08sK0UOz6/y+7rRcJNQ95S043+DzG9cbtPif0LjwSsa0jt4iGNxmFs35wVLDEx2jsh
         5exA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20130820;
        h=x-gm-message-state:date:from:to:message-id:in-reply-to:references
         :subject:mime-version:x-original-sender:reply-to:precedence
         :mailing-list:list-id:x-spam-checked-in-group:list-post:list-help
         :list-archive:list-subscribe:list-unsubscribe;
        bh=MYD3wZxeN8cPBCjMe6AAYUz6KbVUUDS+39JSagtc74w=;
        b=ejd0WC8MFVXIE9B9BB1dNp1eNkh6H0a2u9JOZAZn66wgLPXrkqhjCYVM51e5CIct27
         6L9+KSYfXRKpX/v3i0UTXazKJrKI1Yei9Xjkd5jv0WK8mBO4u+QnbdJtpYrKwJJlBSdh
         tyyay0HRX3LDn1yfgD4W0N91grLjPqG20EnQ+VxpwpO4+hqJ0Cc2g4ZmmPbsITxrhCTj
         LndiuWS4hlO37ohw1FRUprG11UDeTa71U+2CGIqKoaypcmYNrq9pU6+buPM+1tzHZ6C+
         nVJ3BWdg/JbT72pFhjwGfCMGlq7/2LfoDYbEi54DyEY6CqhnGtGZLU+Xc3CEb59UziUC
         K/VA==
X-Gm-Message-State: ALyK8tJTaQLcDjxYv2ygoHEmdW1+8J0OVSZ3UZ9e/6rGjgn5KnB5JjeLz9DP2h8VUI3qDQ==
X-Received: by 10.140.29.101 with SMTP id a92mr5083257qga.24.1465013062920;
        Fri, 03 Jun 2016 21:04:22 -0700 (PDT)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.36.92.16 with SMTP id q16ls158528itb.12.gmail; Fri, 03 Jun
 2016 21:04:21 -0700 (PDT)
X-Received: by 10.36.36.211 with SMTP id f202mr91892ita.8.1465013061921;
        Fri, 03 Jun 2016 21:04:21 -0700 (PDT)
In-Reply-To: <CAOcFa=fnWS=T2p6xgQ_EiCnVTmkSk_UrobDMYvXhaKi95cxrdQ@mail.gmail.com>
X-Original-Sender: alexander.zywicki@gmail.com
Precedence: list
Mailing-list: list std-proposals@isocpp.org; contact std-proposals+owners@isocpp.org
List-ID: <std-proposals.isocpp.org>
X-Spam-Checked-In-Group: std-proposals@isocpp.org
X-Google-Group-Id: 399137483710
List-Post: <https://groups.google.com/a/isocpp.org/group/std-proposals/post>, <mailto:std-proposals@isocpp.org>
List-Help: <https://support.google.com/a/isocpp.org/bin/topic.py?topic=25838>, <mailto:std-proposals+help@isocpp.org>
List-Archive: <https://groups.google.com/a/isocpp.org/group/std-proposals/>
List-Subscribe: <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>,
 <mailto:std-proposals+subscribe@isocpp.org>
List-Unsubscribe: <mailto:googlegroups-manage+399137483710+unsubscribe@googlegroups.com>,
 <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>
Xref: news.gmane.org gmane.comp.lang.c++.isocpp.proposals:26169
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/26169>

------=_Part_2708_1354587437.1465013060639
Content-Type: multipart/alternative; 
	boundary="----=_Part_2709_948455483.1465013060639"

------=_Part_2709_948455483.1465013060639
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

I have drafted up a list of basic definitions about how audio could be=20
represented based on your comment here. I think if we are to attempt to=20
move forward a consensus must be reached about the fundamental=20
representation of audio data the library will take.=20

C++ std::audio library

theory and definitions:

    sample:
    a single sample of audio data.
    can be represented by a signed integer, float or double.
    must pass the following test to be a valid sample type:
        ((std::is_integral<T>::value && std::is_signed<T>::value) ||=20
std::is_floating_point<T>::value) =3D=3D true
    or could be constrained by:
         std::is_arithmetic<T>::value=3D=3Dtrue
     if unsigned samples are allowed/desired

    frame:
    a collection of 0-N samples
    each sample represents an individual channel of audio data
    indexable as an array
    (should N be runtime or compile time?)

    buffer:
    a collection of 0-N frames
    indexable as an array
    (should N be runtime or compile time?)
    ideally maintains a continous piece of memory to house its frames

    device /interface:
    a device recognized by the system as being capable of reading and=20
writing audio data
    can be polled for information regarding the capabilities of the=20
device/interface


    audio callback:
    a function/lambda/functor registered with the library to be called once=
=20
per buffer interval

    sampling rate: the number of samples per second of audio data

    frame interval: the length of a frame in seconds (1.0/sample_rate)
    buffer interval: the length of a buffer in seconds (frame_interval*=20
buffer_size)

What should be added/removed/edited or clarified?


On Friday, June 3, 2016 at 9:11:26 PM UTC-5, Ron wrote:
>
> Okay, I've done some thinking here.  The simplest solution should be the=
=20
> correct one.  I think the standard should stick to something very basic=
=20
> here, otherwise we get into an area that is too complicated to implement.=
 =20
> All we should have in terms of a standard audio interface for C++ is:
>
> 1) A method for enumerating the interfaces on a machine.
> 2) A method for getting each interfaces capabilities (supported rates, bi=
t=20
> depths etc.).
> 3) A method for activating a requested device for sending and receiving=
=20
> frames in the requested format.
>
> Valid types for audio samples should be either a signed integer, a float=
=20
> or a double.  And that's pretty much it.  Get audio input, put audio=20
> output.  Anything other than that would be a different proposal all=20
> together.  Audio, video or DSP processing in general should certainly be =
a=20
> different proposal.
>
> But I would propose we also add an int24_t class into the standard for=20
> processing 24-bit samples.  Something as simple as this would suffice for=
=20
> now:
> class int24_t
> {
> private:
>     int8_t val[3];
> };
>
> Something more fully featured would be desirable, like this:=20
> https://github.com/RonNovy/CppDSP/blob/master/src/int24_t.h
> But I guess that, would be another proposal.
>
> On Fri, Jun 3, 2016 at 6:47 PM, <alexande...@gmail.com <javascript:>>=20
> wrote:
>
>> On Friday, June 3, 2016 at 8:30:49 PM UTC-5, Jeffrey Yasskin wrote:
>> > On Fri, Jun 3, 2016 at 6:09 PM, Thiago Macieira <thi...@macieira.org>=
=20
>> wrote:
>> > On s=C3=A1bado, 4 de junho de 2016 02:20:15 BRT Andrey Semashev wrote:
>> >
>> > > What is needed is a standardized interface for these different modul=
es
>> >
>> > > to work with each other. The interface should also allow me, the
>> >
>> > > developer, to work with the media (e.g. create my own audio or image
>> >
>> > > filter or a new codec or a new device driver).
>> >
>> >
>> >
>> > That I agree with.
>> >
>> >
>> >
>> > But should the standard mandate that there should be at least one? How=
=20
>> does
>> >
>> > someone write a plugin to the C++ Standard Library? Will we now mandat=
e=20
>> this
>> >
>> > kind of ability?
>> >
>> >
>> >
>> > Yes. We already do this with things like the random engines.
>> >
>> >
>> > If not, then will there be a requirement that the C++ library vendor=
=20
>> provide
>> >
>> > it? If so, please think carefully how Apple should code libc++ to work=
=20
>> on iOS.
>> >
>> >
>> >
>> > WebCrypto has an example of navigating a legal minefield for=20
>> implementers.
>> >
>> >
>> >
>> > Also remember to leave the legal speculation to lawyers. It's good to=
=20
>> have the heads-up that "hey lawyers should look at this", but anything m=
ore=20
>> is unwise.
>> >
>> >
>> > Again, I think this is not material for the C++ Standard Library.
>> >
>> >
>> > I think it's a great area for the C++ library to expand into. I'm=20
>> definitely worried about the expertise of the people writing the proposa=
l=20
>> (e.g. if I proposed an audio library for C++, I should be laughed off th=
e=20
>> stage), but we can overcome that by asking well-known audio users for th=
eir=20
>> opinions before standardizing the proposal.
>> >
>> >
>> > Jeffrey
>>
>> I agree about the issue of expertise. By no means would I call myself an=
=20
>> expert, but I have a degree in audio engineering and a pretty solid gras=
p=20
>> of the c++ language. Are there people out there more skilled than me at=
=20
>> each topic? Of course, but that's why I am here, to get the opinions of=
=20
>> those people if I can an figure out what needs to be done to make this=
=20
>> library a reality.
>>
>> --
>> You received this message because you are subscribed to the Google Group=
s=20
>> "ISO C++ Standard - Future Proposals" group.
>> To unsubscribe from this group and stop receiving emails from it, send a=
n=20
>> email to std-proposal...@isocpp.org <javascript:>.
>> To post to this group, send email to std-pr...@isocpp.org <javascript:>.
>> To view this discussion on the web visit=20
>> https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/62b7649a-5d=
e5-4330-9bac-708375d36e2c%40isocpp.org
>> .
>>
>
>

--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/3c0fde91-671d-4751-955d-7b04cfa120bc%40isocpp.or=
g.

------=_Part_2709_948455483.1465013060639
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">I have drafted up a list of basic definitions about how au=
dio could be represented based on your comment here. I think if we are to a=
ttempt to move forward a consensus must be reached about the fundamental re=
presentation of audio data the library will take. <br><br><div style=3D"tex=
t-align: center;">C++ std::audio library<br><br>theory and definitions:<br>=
<br>=C2=A0=C2=A0=C2=A0 sample:<br>=C2=A0=C2=A0=C2=A0 a single sample of aud=
io data.<br>=C2=A0=C2=A0=C2=A0 can be represented by a signed integer, floa=
t or double.<br>=C2=A0=C2=A0=C2=A0 must pass the following test to be a val=
id sample type:<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ((std::is_int=
egral&lt;T&gt;::value &amp;&amp; std::is_signed&lt;T&gt;::value) || std::is=
_floating_point&lt;T&gt;::value) =3D=3D true<br>=C2=A0=C2=A0=C2=A0 or could=
 be constrained by:<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 std=
::is_arithmetic&lt;T&gt;::value=3D=3Dtrue<br>=C2=A0=C2=A0=C2=A0=C2=A0 if un=
signed samples are allowed/desired<br><br>=C2=A0=C2=A0=C2=A0 frame:<br>=C2=
=A0=C2=A0=C2=A0 a collection of 0-N samples<br>=C2=A0=C2=A0=C2=A0 each samp=
le represents an individual channel of audio data<br>=C2=A0=C2=A0=C2=A0 ind=
exable as an array<br>=C2=A0=C2=A0=C2=A0 (should N be runtime or compile ti=
me?)<br><br>=C2=A0=C2=A0=C2=A0 buffer:<br>=C2=A0=C2=A0=C2=A0 a collection o=
f 0-N frames<br>=C2=A0=C2=A0=C2=A0 indexable as an array<br>=C2=A0=C2=A0=C2=
=A0 (should N be runtime or compile time?)<br>=C2=A0=C2=A0=C2=A0 ideally ma=
intains a continous piece of memory to house its frames<br><br>=C2=A0=C2=A0=
=C2=A0 device /interface:<br>=C2=A0=C2=A0=C2=A0 a device recognized by the =
system as being capable of reading and writing audio data<br>=C2=A0=C2=A0=
=C2=A0 can be polled for information regarding the capabilities of the devi=
ce/interface<br><br><br>=C2=A0=C2=A0=C2=A0 audio callback:<br>=C2=A0=C2=A0=
=C2=A0 a function/lambda/functor registered with the library to be called o=
nce per buffer interval<br><br>=C2=A0=C2=A0=C2=A0 sampling rate: the number=
 of samples per second of audio data<br><br>=C2=A0=C2=A0=C2=A0 frame interv=
al: the length of a frame in seconds (1.0/sample_rate)<br>=C2=A0=C2=A0=C2=
=A0 buffer interval: the length of a buffer in seconds (frame_interval* buf=
fer_size)<br><br><div style=3D"text-align: left;">What should be added/remo=
ved/edited or clarified?<br></div></div><br><br>On Friday, June 3, 2016 at =
9:11:26 PM UTC-5, Ron wrote:<blockquote class=3D"gmail_quote" style=3D"marg=
in: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><d=
iv dir=3D"ltr"><div>Okay, I&#39;ve done some thinking here.=C2=A0 The simpl=
est solution should be the correct one.=C2=A0 I think the standard should s=
tick to something very basic here, otherwise we get into an area that is to=
o complicated to implement.=C2=A0 All we should have in terms of a standard=
 audio interface for C++ is:</div><div><br></div><div>1) A method for enume=
rating the interfaces on a machine.</div><div>2) A method for getting each =
interfaces capabilities (supported rates, bit depths etc.).</div><div>3) A =
method for activating a requested device for sending and receiving frames i=
n the requested format.</div><div><br></div><div>Valid types for audio samp=
les should be either a signed integer, a float or a double.=C2=A0 And that&=
#39;s pretty much it.=C2=A0 Get audio input, put audio output.=C2=A0 Anythi=
ng other than that would be a different proposal all together.=C2=A0 Audio,=
 video or DSP processing in general should certainly be a different proposa=
l.</div><div><br></div><div>But I would propose we also add an int24_t clas=
s into the standard for processing 24-bit samples.=C2=A0 Something as simpl=
e as this would suffice for now:</div><div>class int24_t</div><div>{</div><=
div>private:</div><div>=C2=A0 =C2=A0 int8_t val[3];</div><div>};</div><div>=
<br></div><div>Something more fully featured would be desirable, like this:=
 <a href=3D"https://github.com/RonNovy/CppDSP/blob/master/src/int24_t.h" ta=
rget=3D"_blank" rel=3D"nofollow" onmousedown=3D"this.href=3D&#39;https://ww=
w.google.com/url?q\x3dhttps%3A%2F%2Fgithub.com%2FRonNovy%2FCppDSP%2Fblob%2F=
master%2Fsrc%2Fint24_t.h\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNH43AqVQTU-=
hwL7G8EiOcSTbZPweA&#39;;return true;" onclick=3D"this.href=3D&#39;https://w=
ww.google.com/url?q\x3dhttps%3A%2F%2Fgithub.com%2FRonNovy%2FCppDSP%2Fblob%2=
Fmaster%2Fsrc%2Fint24_t.h\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNH43AqVQTU=
-hwL7G8EiOcSTbZPweA&#39;;return true;">https://github.com/RonNovy/<wbr>CppD=
SP/blob/master/src/int24_<wbr>t.h</a></div><div>But I guess that, would be =
another proposal.</div></div><div><br><div class=3D"gmail_quote">On Fri, Ju=
n 3, 2016 at 6:47 PM,  <span dir=3D"ltr">&lt;<a href=3D"javascript:" target=
=3D"_blank" gdf-obfuscated-mailto=3D"w80Ybt52AQAJ" rel=3D"nofollow" onmouse=
down=3D"this.href=3D&#39;javascript:&#39;;return true;" onclick=3D"this.hre=
f=3D&#39;javascript:&#39;;return true;">alexande...@gmail.com</a>&gt;</span=
> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bo=
rder-left:1px #ccc solid;padding-left:1ex">On Friday, June 3, 2016 at 8:30:=
49 PM UTC-5, Jeffrey Yasskin wrote:<br>
<span>&gt; On Fri, Jun 3, 2016 at 6:09 PM, Thiago Macieira &lt;<a>thi...@ma=
cieira.org</a>&gt; wrote:<br>
&gt; On s=C3=A1bado, 4 de junho de 2016 02:20:15 BRT Andrey Semashev wrote:=
<br>
&gt;<br>
&gt; &gt; What is needed is a standardized interface for these different mo=
dules<br>
&gt;<br>
&gt; &gt; to work with each other. The interface should also allow me, the<=
br>
&gt;<br>
&gt; &gt; developer, to work with the media (e.g. create my own audio or im=
age<br>
&gt;<br>
&gt; &gt; filter or a new codec or a new device driver).<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; That I agree with.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; But should the standard mandate that there should be at least one? How=
 does<br>
&gt;<br>
&gt; someone write a plugin to the C++ Standard Library? Will we now mandat=
e this<br>
&gt;<br>
&gt; kind of ability?<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Yes. We already do this with things like the random engines.<br>
&gt;<br>
&gt;<br>
&gt; If not, then will there be a requirement that the C++ library vendor p=
rovide<br>
&gt;<br>
&gt; it? If so, please think carefully how Apple should code libc++ to work=
 on iOS.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; WebCrypto has an example of=C2=A0navigating a legal minefield for impl=
ementers.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Also remember to leave the legal speculation to lawyers. It&#39;s good=
 to have the heads-up that &quot;hey lawyers should look at this&quot;, but=
 anything more is unwise.<br>
&gt;<br>
&gt;<br>
&gt; Again, I think this is not material for the C++ Standard Library.<br>
&gt;<br>
&gt;<br>
&gt; I think it&#39;s a great area for the C++ library to expand into. I&#3=
9;m definitely worried about the expertise of the people writing the propos=
al (e.g. if I proposed an audio library for C++, I should be laughed off th=
e stage), but we can overcome that by asking well-known audio users for the=
ir opinions before standardizing the proposal.<br>
&gt;<br>
&gt;<br>
&gt; Jeffrey<br>
<br>
</span>I agree about the issue of expertise. By no means would I call mysel=
f an expert, but I have a degree in audio engineering and a pretty solid gr=
asp of the c++ language. Are there people out there more skilled than me at=
 each topic? Of course, but that&#39;s why I am here, to get the opinions o=
f those people if I can an figure out what needs to be done to make this li=
brary a reality.<br>
<span><br>
--<br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"javascript:" target=3D"_blank" gdf-obfuscated-mailto=3D"=
w80Ybt52AQAJ" rel=3D"nofollow" onmousedown=3D"this.href=3D&#39;javascript:&=
#39;;return true;" onclick=3D"this.href=3D&#39;javascript:&#39;;return true=
;">std-proposal...@<wbr>isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"javascript:" target=3D"_bla=
nk" gdf-obfuscated-mailto=3D"w80Ybt52AQAJ" rel=3D"nofollow" onmousedown=3D"=
this.href=3D&#39;javascript:&#39;;return true;" onclick=3D"this.href=3D&#39=
;javascript:&#39;;return true;">std-pr...@isocpp.org</a>.<br>
</span>To view this discussion on the web visit <a href=3D"https://groups.g=
oogle.com/a/isocpp.org/d/msgid/std-proposals/62b7649a-5de5-4330-9bac-708375=
d36e2c%40isocpp.org" rel=3D"nofollow" target=3D"_blank" onmousedown=3D"this=
..href=3D&#39;https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/6=
2b7649a-5de5-4330-9bac-708375d36e2c%40isocpp.org&#39;;return true;" onclick=
=3D"this.href=3D&#39;https://groups.google.com/a/isocpp.org/d/msgid/std-pro=
posals/62b7649a-5de5-4330-9bac-708375d36e2c%40isocpp.org&#39;;return true;"=
>https://groups.google.com/a/<wbr>isocpp.org/d/msgid/std-<wbr>proposals/62b=
7649a-5de5-4330-<wbr>9bac-708375d36e2c%40isocpp.org</a><wbr>.<br>
</blockquote></div><br></div>
</blockquote></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/3c0fde91-671d-4751-955d-7b04cfa120bc%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/3c0fde91-671d-4751-955d-7b04cfa120bc=
%40isocpp.org</a>.<br />

------=_Part_2709_948455483.1465013060639--

------=_Part_2708_1354587437.1465013060639
Content-Type: text/plain; charset=US-ASCII; 
	name=std_audio_theories_concepts.txt
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=std_audio_theories_concepts.txt
X-Attachment-Id: 6627695d-c41d-48ad-b42f-b3a67af03d47
Content-ID: <6627695d-c41d-48ad-b42f-b3a67af03d47>

C++ std::audio library

theory and definitions:

    sample:
    a single sample of audio data.
    can be represented by a signed integer, float or double.
    must pass the following test to be a valid sample type:
        ((std::is_integral<T>::value && std::is_signed<T>::value) || std::is_floating_point<T>::value) == true
    or could be constrained by:
         std::is_arithmetic<T>::value==true
     if unsigned samples are allowed/desired

    frame:
    a collection of 0-N samples
    each sample represents an individual channel of audio data
    indexable as an array
    (should N be runtime or compile time?)

    buffer:
    a collection of 0-N frames
    indexable as an array
    (should N be runtime or compile time?)
    ideally maintains a continous piece of memory to house its frames

    device /interface:
    a device recognized by the system as being capable of reading and writing audio data
    can be polled for information regarding the capabilities of the device/interface


    audio callback:
    a function/lambda/functor registered with the library to be called once per buffer interval

    sampling rate: the number of samples per second of audio data

    frame interval: the length of a frame in seconds (1.0/sample_rate)
    buffer interval: the length of a buffer in seconds (frame_interval* buffer_size)

------=_Part_2708_1354587437.1465013060639--

.
