Skip to content

A simple frequency synthesizer using the Karplus-Strong algorithm

Notifications You must be signed in to change notification settings

letby3/Karplus-Strong-String-Synthesis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Karplus-Strong-String-Synthesis

Реализация простого синтезатора частот с использованием алгоритма Карплуса-Стронга Входом является набор частот в звуковом диапазоне, частота дискретизации, длительность в секундах. Выходом является сигнал, который допустимо записать в файл либо вывести на звуковую карту. При записи в файл привести отсчеты к формату int16 с использованием python-скрипта. Использовался метод перезаписи через txt файл для удобства.

Решение:

Hardware: i5-10300H

OS: Ubuntu 18.04

Compiler: CMake 3.8, Python 3.10.8 (Графики для удобства строил в Python)

Файлы: "StringSynthesis.cpp", "StringSynthesisFun.h", "main.py" Для создания файла в формате .wav используется python-скрипт

image

Pick-Direction Lowpass Filter

image

Pick-Position Comb Filter

image

One-Zero String Damping Filter

image

Allpass filter used for tuning

image

Allpass filter used to simulate string stiffness

image

Для упрощения использовалось свойтсво последовательных фильтров:

image

Тем самым была создана функция MergedFilter:

image

После MergedFilter применялся стандартный фильтр Allpass, вместо string stiffness.

Литература:

  1. https://ccrma.stanford.edu/realsimple/faust_strings/faust_strings.pdf
  2. http://musicweb.ucsd.edu/~trsmyth/papers/KSExtensions.pdf
  3. https://www.dsprelated.com/freebooks/filters/Allpass_Filters.html
  4. https://lms.kgeu.ru/pluginfile.php?file=%2F157450%2Fmod_resource%2Fcontent%2F2%2F%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F-9%20%D0%A1%D0%90%D0%A0%D0%A3.pdf

About

A simple frequency synthesizer using the Karplus-Strong algorithm

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published