<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri",sans-serif;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>I am editing some work related to this right now.  After it is accepted for publications, I can share it.  <o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> BlindRUG [mailto:blindrug-bounces@nfbnet.org] <b>On Behalf Of </b>Godfrey, Jonathan via BlindRUG<br><b>Sent:</b> Tuesday, April 05, 2016 5:28 PM<br><b>To:</b> Blind R Users Group <blindrug@nfbnet.org><br><b>Cc:</b> Godfrey, Jonathan <A.J.Godfrey@massey.ac.nz><br><b>Subject:</b> Re: [BlindRUG] Sonification of plots in R - an experiment<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'>Hi Robin et al.,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'>There have been a few discussions about this idea before now, but your work looks like it has gone further than other attempts I’ve seen to date. Good stuff.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'>I’ll send you the work Karen Vines and I did  off-list.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'>I think there are a few lessons from our experiences I’d like to share with you and the group.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'>We found it difficult to get a great handle on what the sonified result could show. We couldn’t really tell the difference between a normal curve and a variety of other symmetric unimodal distributions for example, especially if we used the exact observations instead of  a smooth curve.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'>I’m interested in using any means, including sound, to help show a blind person what appears in a graph window. I’m sure I have the components that deliver the contents of a graph window but I haven’t gone as far as the sonification yet. This should be fairly easy to do once I get the text descriptions for some content  sorted.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'>The main problem I encounter is that the standard plot() command that generates a scatter plot in many instances is a family of commands and the resulting graph windows can vary considerably. It would be much better if we could convince the entire R community to use xyplot() from the lattice package or some such, but that’s not likely!<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'>I would prefer to see your functions use (x, y) or (y~x) instead of the current (y, x) as they are more standard practice and match the options for plot) etc.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'>I’ll write more on this topic after e hear from others. Off to do some teaching now.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'>Jonathan<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-NZ style='color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma",sans-serif;mso-fareast-language:EN-NZ'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma",sans-serif;mso-fareast-language:EN-NZ'> BlindRUG [<a href="mailto:blindrug-bounces@nfbnet.org">mailto:blindrug-bounces@nfbnet.org</a>] <b>On Behalf Of </b>Williams, Robin via BlindRUG<br><b>Sent:</b> Wednesday, 6 April 2016 3:48 a.m.<br><b>To:</b> <a href="mailto:BlindRUG@nfbnet.org">BlindRUG@nfbnet.org</a><br><b>Cc:</b> Williams, Robin<br><b>Subject:</b> [BlindRUG] Sonification of plots in R - an experiment<o:p></o:p></span></p></div></div><p class=MsoNormal><span lang=EN-NZ><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>Dear all,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>In collaboration with a colleague here at the University of Exeter, I’ve started to experiment with the idea of producing sound scapes of plots. The idea was motivated by my current work, which requires me to look at lines of best fit (often using polynomial smoothers) through many datapoints. Essentially, we can produce a soundscape of a plotted function, or plotted data points. The idea is similar to the Mathtrax software produced by NASA some years ago, except we can now harness the power of R. The code is based on the tuner package. Essentially, we create a signal that represents the value of a plotted function using Fourier series, and output the wave to a .wav file. This can be played from within R, using a software such as Windows Media Player under Windows, or mplayer under linux. You can choose from four forms of wave which all sound quite different to me. Datapoints can be indicated with pulses, and tick marks on the x axis are indicated with a short blast of the distinctive sawtooth wave. The soundscape moves from left to write, in order to mimic moving along the x axis. So far, I’ve used the sonify() function to examine distributions whose PDF I was unfamiliar with, and to look at a nonparametric approximation to a line of best fit estimated from data. I’ve had to look at many of these plots over the years, which have often required sighted assistance, and so this represents quite a breakthrough in terms of working efficiency.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB>The code can be obtained from here:<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><a href="https://raw.githubusercontent.com/sieste/sonic-plot/master/Rsonify/sonify.R">https://raw.githubusercontent.com/sieste/sonic-plot/master/Rsonify/sonify.R</a><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB>For example, you could try<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB>X=seq(-5,-5,.01)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB>Y=sin(x)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB>Sonify(y,x,ticks=seq(-4,4,1),pulse_len=0) # without pulses for the datapoints<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB>Sonify(y,x,ticks=seq(-4,4,1),pulse_len=0.2) # to hear pulses at the datapoints<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>At this stage I would like to gather any feedback, and suggestions as to how the script could be made more useful still. Please send me any bugs you find in the code.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>Best wishes<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB>Robin<o:p></o:p></span></p></div></body></html>