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

오디오 앱 및 플러그인을 위한 오픈 소스 C++ 라이브러리

오디오 앱 및 플러그인을 위한 무료 C++ API. 핵심 기능 및 코드 예제에 대한 가이드를 통해 크로스 플랫폼 데스크톱, 모바일 및 오디오 플러그인 앱을 구축하는 방법을 배워보세요.

JUCE란 무엇인가요?

신디사이저, 디지털 오디오 워크스테이션(DAW), 사운드 처리 도구와 같은 최신 오디오 소프트웨어는 복잡한 오디오 프로그래밍 작업을 단순화하는 효율적인 프레임워크가 필요합니다. 오디오 개발 분야에서 가장 널리 사용되는 프레임워크 중 하나인 JUCE는 크로스 플랫폼 오디오 애플리케이션 및 플러그인을 구축하기 위해 설계된 오픈 소스 C++ 라이브러리입니다. JUCE는 오디오 처리, 플러그인 개발, GUI 생성, 하드웨어 통합을 위한 완전한 툴킷을 개발자에게 제공합니다. 이를 통해 개발자는 코드를 한 번 작성하고 Windows, macOS, Linux, iOS, Android를 포함한 여러 플랫폼에 애플리케이션을 배포할 수 있습니다.

JUCE(Jules’ Utility Class Extensions)는 데스크톱 및 모바일 애플리케이션, 특히 오디오 소프트웨어와 플러그인을 구축하는 데 사용되는 오픈 소스 C++ 애플리케이션 프레임워크입니다. 오디오 처리, MIDI 통신, GUI 생성, 플러그인 개발, 파일 처리 및 네트워킹 등과 같은 작업을 단순화하는 재사용 가능한 모듈을 제공합니다. JUCE는 개발자와 오디오 소프트웨어 회사가 VST, VST3, AU, AUv3, AAX, LV2 플러그인 및 독립 실행형 애플리케이션을 만들 때 널리 사용됩니다. 이는 오디오 애플리케이션 구축의 복잡성을 크게 줄여줍니다. 각 운영 체제마다 플랫폼별 코드를 작성하는 대신, 개발자는 JUCE의 통합 API를 사용하여 크로스 플랫폼 소프트웨어를 만들 수 있습니다.

Previous Next

JUCE 시작하기

JUCE를 설치하는 가장 쉬운 방법은 GitHub를 이용하는 것입니다. 전체 설치를 위해 다음 명령을 사용하십시오.

NuGet에서 JUCE 설치

 git clone https://github.com/juce-framework/JUCE.git 

CMake를 통해 JUCE 설치

 cd JUCE cmake . -B build cmake --build build 

오디오 처리 및 DSP 지원

오픈 소스 JUCE는 디지털 신호 처리(DSP)를 위한 내장 모듈을 제공하여 개발자가 오디오 이펙트, 신시사이저 및 사운드 프로세서를 만들 수 있게 합니다. 이 프레임워크에는 필터, 오실레이터, FFT 분석 및 실시간 오디오 처리를 위한 도구가 포함되어 있습니다. 이는 JUCE가 음악 제작 도구와 오디오 이펙트 플러그인을 만드는 데 이상적임을 의미합니다. 아래는 오디오 버퍼를 처리하고 각 샘플의 진폭을 감소시키는 코드 예시입니다. 이러한 작업은 일반적으로 게인 제어나 오디오 이펙트를 구현할 때 사용됩니다.

C++ API를 사용하여 오디오 버퍼를 처리하고 진폭을 감소시키는 방법은?

 void processBlock(juce::AudioBuffer& buffer) { for (int channel = 0; channel < buffer.getNumChannels(); ++channel) { auto* samples = buffer.getWritePointer(channel);

for (int i = 0; i < buffer.getNumSamples(); ++i) samples[i] *= 0.5f; // 볼륨 감소 } } 

C++ API를 통한 오디오 플러그인 개발

JUCE 라이브러리는 전문 오디오 플러그인 제작을 간소화합니다. 개발자는 단일 프레임워크를 사용하여 VST, VST3, AU, AUv3, AAX, LV2와 같은 주요 오디오 표준과 호환되는 플러그인을 만들 수 있습니다. 이 기능을 통해 개발자는 코드를 다시 작성하지 않고도 다양한 DAW에 플러그인을 배포할 수 있습니다. 아래 코드는 신호 게인을 20% 감소시키는 간단한 오디오 플러그인을 보여줍니다. 실제 프로젝트에서는 파라미터, 자동화 및 복잡한 DSP 알고리즘을 추가할 수 있습니다.

C++ API를 사용하여 간단한 오디오 플러그인을 만드는 방법은?

 class GainProcessor : public juce::AudioProcessor { public: void processBlock(juce::AudioBuffer& buffer, juce::MidiBuffer&) override { buffer.applyGain(0.8f); } }; 

크로스 플랫폼 개발

JUCE의 가장 강력한 기능 중 하나는 단일 C++ 코드베이스로 여러 플랫폼용 애플리케이션을 구축할 수 있다는 점입니다. 개발자는 플랫폼별 코드를 다시 작성하지 않고도 Windows, macOS, Linux, iOS 및 Android에서 실행되는 소프트웨어를 만들 수 있습니다. 이는 개발 시간을 크게 단축하고 운영 체제 간 일관된 동작을 보장합니다. 아래 예시는 대화창을 표시하는 간단한 JUCE 애플리케이션을 생성합니다. JUCE가 플랫폼 추상화를 처리하기 때문에 동일한 코드가 여러 운영 체제에서 작동합니다.

C++를 사용하여 크로스 플랫폼 JUCE 앱을 만드는 방법은?


#include 

class HelloWorld  : public juce::JUCEApplication { public: const juce::String getApplicationName() override { return "JUCE 데모"; } const juce::String getApplicationVersion() override { return "1.0"; }

void initialise (const juce::String&) override { juce::AlertWindow::showMessageBoxAsync( juce::AlertWindow::InfoIcon, "JUCE 앱", "크로스 플랫폼 JUCE 애플리케이션에서 인사합니다!"); }

void shutdown() override {} };

START_JUCE_APPLICATION (HelloWorld) 

MIDI 및 오디오 장치 통합

JUCE는 오디오 장치와 MIDI 컨트롤러와 상호 작용하기 위한 API도 포함하고 있습니다. 개발자는 프레임워크를 통해 마이크, 스피커, MIDI 키보드 및 기타 하드웨어에 직접 접근할 수 있습니다. 이는 신시사이저, DAW 및 라이브 퍼포먼스 소프트웨어와 같은 애플리케이션에 필수적입니다. 아래 코드는 들어오는 MIDI 메시지를 감지하고 MIDI 키가 눌릴 때마다 노트 번호를 출력합니다.

C++ API를 사용하여 들어오는 MIDI 메시지를 수신하는 방법은?

 void handleIncomingMidiMessage(juce::MidiInput*, const juce::MidiMessage& message) { if (message.isNoteOn()) { int note = message.getNoteNumber(); juce::Logger::writeToLog("Note On: " + juce::String(note)); } } 
 한국인