1. 제품
  2.   오디오
  3.   C++
  4.   STK
 
  

무료 C++ API 오디오 합성 및 디지털 신호 처리용

선도적인 오픈소스 C++ 라이브러리 STK(합성 툴킷)는 소프트웨어 개발자가 오디오 합성 및 디지털 신호 처리를 할 수 있게 합니다. 주요 기능, 실시간 오디오 기능, 그리고 개발자를 위한 실용적인 코드 예제를 살펴보세요.

STK (Synthesis ToolKit)란 무엇인가요?

STK (Synthesis ToolKit in C++)는 오디오 신호 처리와 알고리즘 음악 합성을 위해 설계된 권위 있는 오픈소스 라이브러리입니다. 스탠포드 대학교 CCRMA에서 개발되었으며, 복잡한 오디오 소프트웨어 제작을 단순화하는 강력한 C++ 클래스 집합을 개발자에게 제공합니다. 단일 애플리케이션과 달리, STK는 유닛 제너레이터—모듈식 빌딩 블록—의 컬렉션으로, 신디사이저, 이펙트 프로세서 및 악기의 빠른 개발을 가능하게 합니다. STK 라이브러리는 디지털 악기, 오디오 이펙트 소프트웨어, 게임 오디오 엔진, 사운드 합성 연구, 교육용 DSP 프로젝트 등을 다루는 개발자에게 유용합니다.

STK (Synthesis ToolKit in C++)는 오디오 신호 처리, 디지털 합성 및 악기 모델링을 위한 재사용 가능한 클래스를 제공하는 오픈소스 C++ 라이브러리입니다. 휴대성과 사용 용이성에 중점을 두어 특히 유용합니다. 크로스 플랫폼 오디오 드라이버와 MIDI 처리의 저수준 복잡성으로부터 개발자를 보호하여 사운드 디자인의 창의적 측면에 집중할 수 있게 합니다. 전문 플러그인이든 교육용 도구든, STK는 고성능 실시간 오디오에 필요한 안정성과 유연성을 제공합니다. 대형 오디오 프레임워크와 달리 STK는 아키텍처를 단순하고 투명하게 유지합니다. 개발자는 오디오 알고리즘이 어떻게 작동하는지 쉽게 이해하고 자체 실험을 위해 수정할 수 있습니다. 또한 플루트, 클라리넷, 플럭트 현악 시뮬레이션과 같은 즉시 사용할 수 있는 악기 모델을 제공하여 소프트웨어 신디사이저를 구축하기 위한 훌륭한 출발점이 됩니다.

Previous Next

STK 시작하기

전체 설치를 위해 다음 명령을 사용하십시오.

GitHub에서 STK 설치

 git clone https://github.com/thestk/stk.git

실시간 오디오 합성

STK의 가장 강력한 기능 중 하나는 실시간 사운드 생성 지원입니다. 개발자는 미리 녹음된 샘플에 의존하는 대신 프로그램 실행 중에 오디오 신호를 동적으로 생성할 수 있습니다. 이는 디지털 신시사이저, 음악 제작 도구, 실시간 오디오 퍼포먼스 소프트웨어와 같은 애플리케이션에 필수적입니다. STK는 낮은 지연 시간을 유지하면서 오디오 프레임을 지속적으로 생성하는 효율적인 처리 기능을 제공합니다. 이러한 기능 덕분에 STK는 반응형 오디오 합성이 필요한 연구 및 음악 기술 환경에서 자주 사용됩니다. 아래는 STK가 프로그래밍 방식으로 사운드를 생성하는 방법을 보여주는 간단한 예제입니다.

C++ 라이브러리를 통해 프로그래밍 방식으로 사운드를 생성하는 방법은?

#include "SineWave.h"
#include "RtAudio.h"

int main() { stk::SineWave oscillator; oscillator.setFrequency(440.0); // A4 note

for (int i = 0; i < 100; i++) { double sample = oscillator.tick(); std::cout << sample << std::endl; }

return 0; } 

물리 모델링 악기

오픈 소스 STK 라이브러리에는 물리 모델링 알고리즘을 사용하여 실제 악기를 시뮬레이션하는 내장 클래스가 포함되어 있습니다. 이러한 모델은 악기가 물리적 세계에서 어떻게 동작하는지를 재현합니다. 예를 들어 플루트, 클라리넷, 만돌린 및 활을 사용하는 현악기 등이 있습니다. 물리 모델링은 호흡 압력, 활 힘, 또는 현 진동과 같은 표현 파라미터를 개발자가 제어할 수 있게 해 주기 때문에 유용합니다.

STK 라이브러리를 통해 현실적인 디지털 악기를 만드는 방법은?

#include "Clarinet.h"

int main() { stk::Clarinet clarinet;
    
clarinet.noteOn(440.0, 0.8);

for(int i = 0; i < 200; i++) { double sound = clarinet.tick(); std::cout << sound << std::endl; }

clarinet.noteOff(0.5);

return 0; }  

내장 오디오 및 MIDI 지원

STK 라이브러리에는 실시간 오디오 및 MIDI 입출력 지원도 포함되어 있습니다. 이를 통해 애플리케이션은 MIDI 키보드 및 오디오 인터페이스와 같은 외부 장치와 상호 작용할 수 있습니다. MIDI 통합을 사용하면 개발자는 합성 파라미터를 실시간으로 제어할 수 있어 소프트웨어 신시사이저, 인터랙티브 음악 애플리케이션, 라이브 퍼포먼스 도구 등을 만들 수 있습니다. 다음 예제는 들어오는 MIDI 메시지를 수신하는 프로그램을 생성합니다.

C++ 애플리케이션에서 MIDI 메시지를 듣고 저장하는 방법은?

#include "RtMidi.h"

int main() { RtMidiIn midi;

if (midi.getPortCount() == 0) { std::cout << "사용 가능한 MIDI 포트가 없습니다!" << std::endl; return 0; }

midi.openPort(0);

std::cout << "MIDI 입력을 듣는 중..." << std::endl;

while (true) { std::vector message; midi.getMessage(&message);

if (!message.empty()) { std::cout << "MIDI 메시지를 받았습니다!" << std::endl; } }

return 0; }

 

C++를 통한 모듈형 유닛 생성기

STK 라이브러리는 모듈식 설계 철학을 따르며 방대한 "unit generators"(UGens) 배열을 제공합니다. 여기에는 진동기, 필터, 엔벨로프 및 딜레이 효과가 포함되어 있어 가상 모듈식 신시사이저처럼 패치하여 사용할 수 있습니다. 이러한 세분화는 개발자에게 신호 체인에 대한 완전한 제어권을 부여합니다. 각 클래스가 오디오 프레임을 효율적으로 처리하도록 설계되었기 때문에, 단순한 사인파 발생기부터 복잡한 다단계 입자 합성 엔진까지 다양한 STK 객체를 연결함으로써 구축할 수 있습니다.

 한국인