# B4J TutorialKarplus-Strong algorithm to synth a plucked guitar string sound

Not a tutorial exactly but a fast prototyping for basic Karplus-Strong algorithm realized by B4J and would like to share with someone who is interested.
I want to make my GuitarRhythm app using synth guitar sound as an option along with sampled guitar sound so I found this:

"The Karplus-Strong algorithm was first published in 1983 in a paper titled "Digital Synthesis of Plucked-String and Drum Timbres" by Kevin Karplus and Alex Strong. The great thing about this algorithm is that it yields realistic sounds despite being relatively simple."

This is one of the detailed introduction (http://crypto.stanford.edu/~blynn/sound/karplusstrong.html) and there are many implementations on Github using other lanuages:

The B4J code for the basic algorithm is:
B4X:
``````Sub Button1_Click
Dim f As Float = TextField1.Text
Dim d As Float = Slider1.Value
Button1.Text = "Wait ..."
Karplus(f, d)
DrawGraph
Sleep(10)
PDA.SendDataPlayer(AudioBufferByte)
Button1.Text = "Play"
End Sub

Sub Karplus(freq As Float, decay As Float)
Dim N As Int = Round(SampleRate / freq - 0.5)
Dim HD As Float = decay / 2.0
For i = 0 To N-1
AudioBuffer(i) = Rnd(-32768, 32768)
Next
AudioBuffer(N) = Round(HD * AudioBuffer(0))
For i = N+1 To BufferLength-1
AudioBuffer(i) = Round(HD * (AudioBuffer(i-N) + AudioBuffer(i-N-1)))
Next

AudioBufferByte = BC.ShortsToBytes(AudioBuffer)
End Sub``````

For fast prototyping I used PlayDataAudio.bas to play sound and didn't use the threading library, hence playing audio will suspend main UI, but at least sleep(10) will make UI updated before audio playing. It is better to use Threading and JAudiotrack library.

It is clear that the extended version of this algorithm should be realized to make the pitch correct at higher frequency and add more other synth parameters as next step.

Sourcecode attached.

#### Attachments

• kar0.png
29.3 KB · Views: 244
• Karplus.zip
3.9 KB · Views: 282

Share My Creation Modular system
Replies
12
Views
2K
Share My Creation Mini Synth
Replies
22
Views
3K
Share My Creation mp3muser
Replies
2
Views
889
Replies
0
Views
1K
Replies
4
Views
4K