Hacker News new | past | comments | ask | show | jobs | submit login

This is very cool and reminds me of something I've wanted for a long time: a tool like this that is used to make sound. The synthesizers I've used seem predisposed to making a certain type of sound, however, something like but which gives you complete control of the wave form, should give you complete freedom when creating sounds. Maybe I've been looking at the wrong synths... Neat though :)

What you want is an additive synthesizer. Usually these contain a lot of fairly high level 'helpers' rather than control over every individual sine wave, because while 8 sine waves are fun to play with full sound sculpting requires more, and applying envelopes, LFOs and other modulation sources to 64 (or 128 or 356 or 512...) sine waves rapidly becomes tedious.

You could easily make one with (or download a premade one for) Reaktor or Synthmaker (now called Flowstone DSP) or Max/MSP. Kyma is another system for doing so, but very expensive as it's hardware based. Pd/Puredata is free, albeit ugly. Various plugins exist, from VSTi's to rack extensions for Propellerheads' Reason. If you're feeling brave/patient and you want to do it in a hardware instrument, then you can get hold of a Kawai K5000 for only a few hundred $. If you're code-inclined (ugh* ) then try Supercollider or Csound. A related but slightly orthogonal techniques is spectral manipulation using tools such as Metasynth (Mac, $$$) or Coagula (Win, free). Neither of these latter two have seen an update for a long, time, reflecting the general lack of popularity of this technique.

(All these Italicized words are well-known product names, BTW that should come at or near the top in any search engine)

Also, check out http://amaranthaudio.com/ for Cycle which is new and impressive, though a bit clunky last time I checked. I'm hardware based but this is the first instrument I've seen in a while that could draw me back to the PC. I'm sure there's a bunch of iPad apps too, but not having an iPad I only check that platform occasionally.

Additive synthesis is a lot of fun but because there are so many harmonics to play with it's very easy to go astray and end up making clangorous noises that are not particularly musical or natural sounding; of course this makes them an automatic go-to for sci-fi noises, but the problem is that everything sounds unnatural in much the same way, if you see what I mean - the brain says 'ah, that's a very unnatural arrangement of harmonics' and gives up for all but the simpllest cases, much as it decides that poorly-designed FM sounds are quite noisy or that distorted sounds certainly involve a lot of clipping. It's still interesting territory for any sound nerd to explore, but don't expect m/any of your friends/loved ones to share your enthusiasm for such esoteric timbres.

* writing code is a rather masochistic approach to producing sounds IME.

I'll add SynthEdit, because the demo version is fully-featured, intuitive, standalone and free.

If you just want to do it by numbers without interface, and get as mathematically crazy as you like, R has some simple "turn a timeseries to a wav file" libraries.

Also to add: quite a few ipad apps that let you sketch in either a wave form or a spectrum, then turn knobs on it like a synth. Addictive Synth is one that lets you draw spectra freehand; WaveGenerator lets you put in various surfaces or even pictures and "listen" to them. This specific method is called "Wavetable Synthesis".

Oh good catch, I had forgotten about that. Good product, but their website really, really needs an overhaul.

I should also have mentioned that Mathematica makes this sort of thing quite accessible as well, and if you can't afford it or are just a hobbyist they are pretty liberal with their student licensing. http://reference.wolfram.com/mathematica/guide/SoundAndSonif...

Just FYI editing the spectra is usually referred to spectral or additive sysnthesis.

Wavetable synthesis involves a table of single-cycle waveforms that you then sweep through, either manually or preferably with some sort of modulation source. The PPG Wave is the most famous case, and Ensoniq's Transwave technology was basically the same thing. Typically you'll start with 2 waves of completely different harmonic spectra and interpolate between them. IIRC there's a quite affordable PPG wave for iPad now from Wolfgang Palm (who is the authority on this method of synthesis).

I was forgetting for a moment the key part of wavetable was the sweep/interpolation. Silly me! The name of the Wolfgang Palm App is the Wavegenerator I mentioned above -- been playing with it a while, v. v. cool, but (as per your original comment) I can't stray to far from presets without sounding horribly metallic.

You can do additive and additive-like synthesis with ZynAddSubFX, but instead of using per-harmonic envelopes and shift amounts, you can control the bandwidth and spacing of each harmonic.

To mimic an existing sound, such as an organ, I once used audio software to plot the FFT of the original sound, then manually entered the amplitudes of the fundamental and harmonics in a ZynAddSubFX XML instrument definition. I'd like something that automates that process.

Edit: regarding spectral manipulation, there is also SpectraLayers.

Back in my day, real men had to buy all these damn synths! My fave setup was to use additive synths for a lead, analog for the bass/strings/background texture, and fm for chunky mid ranges.. Worked really well... I kind of missing having all that crap.

You may be looking for an Analog synthesizer ( I can recommend the Arrick) or an FM synthesizer (like the DX11) which was based on Chowning's FM synthesis work at Stanford.

If you really want to create an arbitrary waveform (and I caution you that much of the timbre is in the attack and decay and harmonic filtering effects) the simplest way for non-engineers to do that is to use something like an Arduino with a Adafruit Waveshield and a scripted tool to generate .WAV files. The production path then is 'gen file, copy to SD card, stick in WaveShield and hit reset'.

GP wants additive synthesis, not subtractive or FM.

As for copying a file to an Arduino... you know you can play wav files on your computer right?

FM synthesis is additive, and it's a fair point you can play .wav files directly on your machine. I have been tying them to external events which was a bit more difficult.

Additive may not mean what you think it means perhaps? FM involves modulating the frequency of one oscillator with the value of another, whereas additive synthesis involves simply (lol) mixing multiple sinewave oscillators to generate a harmonic series.

Unless there is some more fundamental way in which they are equivalent, in which case I would be eager to learn more.

So I stand somewhat corrected, I had a memory of Chowning describing it as additive in his book "FM Theory & Applications" which I got with my TX11 but as it turns out he felt calling it additive was too simplistic as modulating a frequency is multiplicative. Each 'Op' however is added together to give the resulting tone. Now contrast that to my Arrick where I'll feed a square wave into a VCLF and peel the push filter out the harmonics over time to get a nice 'gong' sound which is definitely subtractive.

I did get a chance though to re-read chapter Chapter 3 "What is FM" and marvel at the relatively simple way it composes into very complex waveforms.

It's possible to calculate the exact frequencies that would be generated by FM synthesis and additively produce exactly those partials that are under Nyquist instead. IIRC, "alias-free" FM synthesis is the name of this technique when used to produce cleaner, band-limited waveforms.

Actually the DX/TX series allowed limited additive synthesis using their 4 or 6 operators (oscillators in Yamaha lingo). That's how the phonic-wheel organ sounds were programmed.

Your post prompted me to get off my ass and upload my .WAV file writer to BitBucket. I wrote it almost two years ago to do exactly what you're talking about -- generate a waveform and learn how to design my own sounds. There are a lot of sophisticated synth tools out there already, but I wanted to start from first principles and really understand what I was doing.

Here's a link to the library: https://bitbucket.org/cmcfarla/waveout

It's stupidly simple C code -- you just need to use three functions: One to open a file for writing audio, one to write a stereo sample, and one to close the file performing cleanup and bookkeeping. I included two examples -- a really basic example to just create a sine wave, and a slightly more complicated one that creates a sine wave with a panning effect.

While I've written a lot of code before, it's rare for me to put code up as open source. So, if I've missed something important, please let me know.

Try pure data. You can fill a table (an array) with whatever function you like, and then use the tabosc4~ object to generate a signal with that as the waveform of a single cycle.

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact