I should also add a few thoughts about this situation: (0) We should not let ourselves be overwhelmed by our wealth of possibilities. Just because someone else did something different better than we did is no reason to be apathetic and do nothing.
(1) J is a useful tool for thinking about computer "architectural" issues: (1a) J allows for the concise expression of ideas as working code (1b) J's arrays closely match the character of computer memory (1c) J's "loops are just notation" approach helps us focus elsewhere (2) We can use different tools together. Audacity is a good tool. But it should not be our only tool, any more than J should be our only tool. Generally speaking, computers tend to be useful when we can use them to interact with outside systems. (The internet is one approach there, but has never been the only approach. And, the internet should also not be our only tool...) (3) Sound can be a useful component of a user interface, and knowing how to deal with it at a variety of levels of abstraction can be a useful skill. (4) File formats can only be useful to us to the degree that we understand them. And, consequently, we can only work with them in ways that our tools support. (5) It's never just one thing. Take care, -- Raul On Tue, Apr 27, 2021 at 3:42 AM Raul Miller <[email protected]> wrote: > > PlaySound uses the wav audio format. > > FYI, > > -- > Raul > > On Mon, Apr 26, 2021 at 9:06 PM Ian Clark <[email protected]> wrote: > > > > Raul wrote: > > > Still... possibly of interest to some people here? > > > > Yes, definitely. I remember playing with Oleg's media/wav -but too long ago > > to recall much ambient detail. I regretted its lack of Mac support, though. > > > > Mathematica has long had the ability to play any line graph it can generate > > as an audio waveform. They tout the feature as a useful tool in the pure > > mathematician's armoury. It's a bit like chemists sniffing or tasting their > > reagents. Offhand I recall the Riemann Zeta function having an eerie spacey > > sound, like a musical circular saw. > > > > Taking the Mathematica people at their word suggests that > > ~addons/graphics/plot ought to have the ability to generate wav, ogg, mp3, > > aiff or indeed any of the portable audio formats from a line graph, just as > > it can output it in visual form to pdf, png, etc. A decent interface with > > Audacity would be good too. > > > > Audacity I particularly recommend. ( http://www.audacityteam.org/download/ > > ) It's a general-purpose waveform editor you'd spend a long time > > replicating in J, but soon feel the need for. I've even heard of it being > > used as a logic analyser for circuit-design. Of all the DAWs (Digital Audo > > Workstations) it's the most flexible and internally accessible, and a lot > > of 3rd parties have contributed fancy add-ons. > > > > Audacity is freeware; most other DAWs decidedly aren't. > > > > I'd recommend generating standard audio formats from the word go, rather > > than reinvent the wheel by working with PlaySound applied to raw J number > > lists, as Oleg does. But it's quite on-the-cards you'll cook up a rare > > sound with J that would repay importing into Audacity, Ableton LIVE, Logic > > Pro <http://www.audacityteam.org/download/> or even GarageBand to give it a > > drum accompaniment or a vocal track. All these can import most of the audio > > formats you meet with, the cross-platform bog standard being mp3 (or used > > to be). > > > > In contrast, going down Oleg's route, you'd slave away for a year and > > eventually reinvent Audacity. > > > > > > > > On Mon, 26 Apr 2021 at 23:56, Raul Miller <[email protected]> wrote: > > > > > I've been playing around a little with Oleg Kobchenko's media/wav > > > > > > In its current implementation, it relys on > > > > > > https://docs.microsoft.com/en-us/windows/win32/multimedia/the-playsound-function > > > which means that it does not adequately support osx nor linux > > > machines. Finding and supporting equivalent mechanisms there would be > > > interesting. > > > > > > But, anyways, here's a brief introduction: > > > > > > load'media/wav' > > > lq=: [: <. 0.5 + 255 * ] > > > normalize=: (% >./)@(- <./) > > > 4 wavplay wavmake lq normalize 1 o. 2p1*440*normalize i.11000 > > > > > > This will play one second of 440 Hz -- > > > https://en.wikipedia.org/wiki/A_(musical_note) > > > > > > The default sample rate used by this playback mechanism is 11000 > > > samples per second. > > > > > > The normalize verb transforms a numeric list so that its minimum value > > > is 0 and its maximum value is 1. > > > > > > The lq verb translates a 0..1 floating point or fractional list to a > > > 0..255 numeric list. And, 4 wavplay wavmake on the result of lq sends > > > the sequence as an audio sample to be played by the computer's sound > > > system. > > > > > > If I wanted to be a little fancier, I might also want to disable a > > > potential ending "click" that can arise when a sound sample ends with > > > a non-neutral voltage value and no corresponding sound sample follows > > > it. And, maybe while I am at that, I should make it so that repeated > > > applications of lq perform its transformation only once. > > > > > > softend=: , 2#{: (+ * * i.@|) 128 - {: > > > lqsoft=: softend@lq^:(1 >: >./) > > > > > > Now I can throw in a one second "envelope" on my note > > > > > > A=: normalize 1 o. 2p1*440*normalize i.11000 > > > envelope=: normalize (* ^@-) 15*normalize i.11000 > > > play=: 4 wavplay wavmake > > > > > > play lqsoft envelope*A > > > > > > There's a lot more that can be done here -- assembling and scheduling > > > different notes, introducing beats and resonances, etc. etc. I've > > > barely scratched the surface of what can be done. And, of course, > > > different machines will introduce their own quirks, and we each have > > > our own various ideas of what sounds good. > > > > > > Still... possibly of interest to some people here? > > > > > > Thanks, > > > > > > -- > > > Raul > > > ---------------------------------------------------------------------- > > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
