#13 in Midi & mixers books
Use arrows to jump to the previous/next product

Reddit mentions of BasicSynth

Sentiment score: 1
Reddit mentions: 1

We found 1 Reddit mentions of BasicSynth. Here are the top ones.

BasicSynth
Buying options
View on Amazon.com
or
    Features:
  • Baby ruffle edges
  • Removable cups
Specs:
Height9 Inches
Length6 Inches
Number of items1
Weight0.93916923612 Pounds
Width0.72 Inches

idea-bulb Interested in what Redditors like? Check out our Shuffle feature

Shuffle: random products popular on Reddit

Found 1 comment on BasicSynth:

u/ArtistEngineer ยท 2 pointsr/ECE

Just basic synthesizer stuff with AVRs.

Making a "proper" synthesizer from scratch is a fairly big job. Most people would probably recommend using csound as the fundamental building blocks.

I recently read through the book basicSynth, and this is the website: http://basicsynth.com/

It explains audio synthesis from zero to a full-blown synthesizer. It's a good read, even if you know some of it.

To run csound, you'd need something that runs Linux. e.g. a Raspberry Pi would be perfect.

To make interesting sounds, you don't need much processing. To make large and complex sounds, you do need a bit more processing but it's mainly for running several voices at once.

Do you know DDS? Direct Digital Synthesis?

You have a "phase accumulator". e.g. 32bit integer.

Every sample you add (or subtract) a value (Frequency Word) to the phase accumulator.

Every sample you take the top half (MSBits) of the phase accumulator, this becomes the lookup address into your wavetable (e.g. sine, square, triangle, random), the value at the wavetable is output to the DAC.

Vary the Frequency Word and you vary the frequency of the waveform.

This consumes about 10 instructions on most CPUs. That's your basic oscillator.

while(1)
{
outputsample = DDS_sin(440); // 440Hz sine wave generator
DAC(outputsample);
delay(sample_period);
}

Take two DDS blocks, and use one to modulate the other. You've got a basic FM synthesizer.

while(1)
{
outputsample = DDS_sin1(DDS_square(10) + 440); // 440Hz sine wave modulated with 10Hz square wave
DAC(outputsample);
delay(sample_period);
}


You can also add envelope modulation (Amplitude Modulation) to the output of your DDS blocks.

while(1)
{
outputsample = DDS_envelope() * DDS_sin1(DDS_sin2(10) + 440); // 440Hz modulated with 10Hz
DAC(outputsample);
delay(sample_period);
}