<div dir="ltr">Neil's being way too kind when he mentions RSound. It's true that I add DSP functions into RSound as I need them for first-year classes, but I would *love* to see / help with a real DSP library. It seems to me like such a library would probably be built on ... 1-d Arrays of Float? ... and probably use typed racket for speed. If you have experience using SciPy's DSP libraries, it would be lovely to see a "wish list" of the most important functions and abstractions that they use.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 4, 2015 at 9:31 AM, Neil Toronto <span dir="ltr"><<a href="mailto:neil.toronto@gmail.com" target="_blank">neil.toronto@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Awesome! It's great to have you with us.<br>
<br>
On 02/04/2015 05:28 AM, Marmaduke Woodman wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
[...]<span class=""><br>
<br>
1) The plotting library doesn't seem to have the equivalent of<br>
MATLAB/MatPlotLib's imagesc/imshow, which simply plots a rectangular<br>
colormap of the matrix. [1]<br>
</span></blockquote>
<br>
You can use Plot and `images/flomap` together to do this, but it would be nice to make it easier.<br>
<br>
To get you started, here's an adaptation of the plotting example from the "Overview" section of the flomap docs:<br>
<br>
<br>
#lang racket<br>
<br>
(require images/icons/misc ; for bomb-flomap<br>
plot/utils ; for color-seq<br>
images/flomap<br>
plot)<br>
<br>
(define icon-fm (bomb-flomap #:bomb-color "orange" #:height 64))<br>
(flomap->bitmap icon-fm)<br>
<br>
(define-values (icon-width icon-height) (flomap-size icon-fm))<br>
<br>
;; Plot the red channel<br>
(plot (contour-intervals<br>
(λ (x y) (flomap-bilinear-ref icon-fm 1 x (- icon-height y)))<br>
#:levels 10<br>
#:colors (λ (ivls) (color-seq "black" "white" (length ivls)))<br>
#:contour-styles '(transparent)<br>
#:samples (+ 1 icon-height)<br>
-0.5 (+ 0.5 icon-width)<br>
-0.5 (+ 0.5 icon-height)))<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2) Arbitrary meshes in 3D: say I have a set of vertices and triangles.<br>
How can I plot the mesh and change edge & face properties? Given that 3D<br>
surface plotting is possible, plotting meshes seems necessarily possible<br>
but is not documented. Do I need to use GL for this?<br>
</blockquote>
<br></span>
Previously, Plot could only handle meshes that had two dimensions aligned to a grid. Now it has a decent 3D backend that can handle any mesh, but I haven't added a `triangles` function to it yet.<br>
<br>
The "pict3d" package, which uses OpenGL, can do this easily, but it's not ready for serious use yet. I just got it to run on all 3 of our officially supported platforms (Windows, Mac, Linux).<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
3) The array & linear algebra libraries were a happy find. Is there any<br>
way I can contribute there?<br>
</blockquote>
<br></span>
Yes. Very yes! We most need a `math/signal` module, and matrix LUP, SVD, and Eigen decompositions.<br>
<br>
I'd like to hook the matrix library into LAPACK on systems where it's available. But defining FFIs as an advanced task, worth trying only after you've programmed in Racket for a while.<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Are there plans to flesh out a larger set of<br>
scientific libraries as in SciPy (optimization, signal processing, for<br>
example)<br>
</blockquote>
<br></span>
Yes! If you'd like to work on any of these, we'd love it if you'd contribute.<br>
<br>
Be aware that, like SciPy, we can't accept anything derived from GPL-licensed code such as the GNU Scientific Library or R's standard library. We *can* accept anything derived from code licensed at least as permissively as ours (which is LGPL), such as SciPy (which is BSD) or C++'s Boost (which has its own permissive license).<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
4) Do any signal processing packages currently exist? I couldn't find<br>
anything on planet. Specifically I'd just like to design and apply a<br>
Butterworth filter to data, so maybe I can write that up myself, but<br>
existing work is welcome.<br>
</blockquote>
<br></span>
The "rsound" package does signal processing. I don't know how much of it is in its public API. The only signal-processing-related functions in Racket's standard library are in `math/array`: `array-fft` and its inverse, and corresponding per-axis FFT functions.<br>
<br>
Again, we'd love to get contributions, and welcome to the club!<span class="HOEnZb"><font color="#888888"><br>
<br>
Neil ⊥</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
____________________<br>
Racket Users list:<br>
<a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/<u></u>users</a><br>
</div></div></blockquote></div><br></div>