KR20120127747A - 오디오 파일을 처리하기 위해 공유된 버퍼 관리 - Google Patents

오디오 파일을 처리하기 위해 공유된 버퍼 관리 Download PDF

Info

Publication number
KR20120127747A
KR20120127747A KR1020127028169A KR20127028169A KR20120127747A KR 20120127747 A KR20120127747 A KR 20120127747A KR 1020127028169 A KR1020127028169 A KR 1020127028169A KR 20127028169 A KR20127028169 A KR 20127028169A KR 20120127747 A KR20120127747 A KR 20120127747A
Authority
KR
South Korea
Prior art keywords
audio
waveform
memory
midi
frame
Prior art date
Application number
KR1020127028169A
Other languages
English (en)
Inventor
니디시 라마찬드라 카마스
프라야트 브이 쿨카르니
수레시 데바라팔리
앨리스터 알레매니아
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20120127747A publication Critical patent/KR20120127747A/ko

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H7/00Instruments in which the tones are synthesised from a data store, e.g. computer organs
    • G10H7/002Instruments in which the tones are synthesised from a data store, e.g. computer organs using a common processing for different operations or calculations, and a set of microinstructions (programme) to control the sequence thereof
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10KSOUND-PRODUCING DEVICES; METHODS OR DEVICES FOR PROTECTING AGAINST, OR FOR DAMPING, NOISE OR OTHER ACOUSTIC WAVES IN GENERAL; ACOUSTICS NOT OTHERWISE PROVIDED FOR
    • G10K15/00Acoustics not otherwise provided for
    • G10K15/02Synthesis of acoustic waves
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2230/00General physical, ergonomic or hardware implementation of electrophonic musical tools or instruments, e.g. shape or architecture
    • G10H2230/025Computing or signal processing architecture features
    • G10H2230/031Use of cache memory for electrophonic musical instrument processes, e.g. for improving processing capabilities or solving interfacing problems

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Electrophonic Musical Instruments (AREA)

Abstract

본 개시물은 오디오 프로세싱 엘리먼트로부터 파형 샘플을 수신하고, 소정의 프레임에 대한 파형 합을 합산 및 저장하는 합산 버퍼를 이용하는 기술을 설명한다. 일 예로, 방법은 제 1 오디오 프레임과 연관된 파형 합 (waveform sum) 을 생성하도록 오디오 프로세싱 엘리먼트로부터 수신된 파형 샘플을 합산하는 단계, 복수의 메모리 블록들로 논리적으로 분할되는 메모리 내에 저장하는 단계, 제 1 오디오 프레임과 연관된 파형 합을 포함하는 메모리 블록들을 록킹하는 단계, 록킹된 메모리 블록들의 콘텐츠들을 블록 단위로 외부 프로세서로 전송하는 단계, 메모리 블록의 콘텐츠들이 외부 프로세서로 전송된 후에 메모리 블록을 언록킹하는 단계, 및 제 1 오디오 프레임과 연관된 파형 합들을 포함하는 남아있는 록킹된 메모리 블록들의 콘텐츠들을 전송함과 동시에 제 2 오디오 프레임과 연관된 파형 합을 언록킹된 메모리 블록 내에 저장하는 단계를 포함한다.

Description

오디오 파일을 처리하기 위해 공유된 버퍼 관리{SHARED BUFFER MANAGEMENT FOR PROCESSING AUDIO FILES}
35 U.S.C. §119 에 따른 우선권 주장
본 출원은 2007 년 3 월 22 일에 출원 되었으며, 발명의 명칭이 "SHARED BUFFER MANAGEMENT FOR PROCESSING AUDIO FILES" 인 미국 가출원 제 60/896,425 호에 대하여 우선권을 주장하며, 이들은 본 발명의 양수인에게 양도되어 있으며 이에 의해 본 명세서에서 참조로서 명백히 통합된다.
본 개시물은 오디오 디바이스에 관한 것이고, 보다 상세하게는 MIDI (musical instrument digital interface) 와 같은 오디오 포맷 또는 유사한 포맷에 기초하여 오디오 출력을 생성하는 오디오 디바이스에 관한 것이다.
MIDI 는 음악, 스피치, 톤 (tone), 경보 등과 같은 오디오 사운드의 생성, 통신 및/또는 재생 (playback) 에 이용된 포맷이다. MIDI 포맷 재생을 지원하는 디바이스는 각종 "보이스 (voice)" 을 생성하는데 이용될 수 있는 오디오 정보 세트를 저장할 수도 있다. 각 보이스는 특정 기구에 의해 음색 (musical note) 과 같은 하나 이상의 사운드에 대응할 수도 있다. 예를 들어, 제 1 보이스는 피아노로 연주되는 바와 같은 중앙 C 에 대응할 수도 있고, 제 2 보이스는 트롬본으로 연주되는 바와 같은 중앙 C 에 대응할 수도 있고, 제 3 보이스는 트롬본 등으로 연주되는 바와 같은 D# 에 대응할 수도 있다. 특정 악기로 연주되는 바와 같은 음색을 반복하기 위해서, MIDI 컴플라이언트 (compliant) 디바이스는 저-주파수 발진기의 움직임, 비브라토 (vibrato) 와 같은 효과와 같은 각종 오디오 특징, 및 사운드의 감지에 영향을 줄 수 있는 다수의 다른 오디오 특징을 지정하는 보이스들에 대한 정보 세트를 포함할 수도 있다. 대부분의 임의의 사운드가 정의되고, MIDI 파일 내에서 전달되며, MIDI 포맷을 지원하는 디바이스에 의해 재생될 수 있다.
MIDI 포맷을 지원하는 디바이스가 음색을 생성하기 시작해야 한다는 것을 나타내는 이벤트가 발생할 때, 이 디바이스는 음색 (또는 다른 사운드) 을 생성할 수도 있다. 유사하게, 디바이스가 음색 생성을 정지해야 한다는 것을 나타내는 이벤트가 발생할 때, 이 디바이스는 음색을 생성하는 것을 정지한다. 전체 음악적 악곡은, 특정 보이스들이 시작 및 정지될 때를 나타내는 이벤트를 지정함으로써 MIDI 포맷에 따라 코딩될 수도 있다. 이 방식으로, 음악적 악곡은 MIDI 포맷에 따라 콤팩트 파일 포맷으로 저장 및 송신될 수도 있다.
MIDI 는 다양한 디바이스에서 지원된다. 예를 들어, 무선전화기와 같은 무선 통신 디바이스는 호출음 또는 다른 오디오 출력과 같은 다운로드 가능한 사운드에 대해 MIDI 파일을 지원할 수도 있다. 애플 컴퓨터 (Apple Computer, Inc) 의 "iPod" 디바이스 및 마이크로소프트 (Microsoft Corporation) 의 "Zune" 디바이스와 같은 디지털 음악 플레이어가 또한, MIDI 파일 포맷을 지원할 수도 있다. MIDI 포맷을 지원하는 다른 디바이스들로는, 각종 음악 신시사이저 (synthesizer), 무선 모바일 디바이스, 직접 양방향 통신 디바이스 (때때로 워키-토키로 불림), 네트워크 전화기, 개인용 컴퓨터, 데스트톱 및 랩톱 컴퓨터, 워크스테이션, 위성 무선 디바이스, 인터콤 (intercom) 디바이스, 무선 방송 디바이스, 핸드 헬드 게이밍 디바이스, 디바이스 내에 장착된 회로 보드, 정보 키오스크 (kiosk), 각종 전산화된 어린이용 장난감, 자동차, 선박 및 항공기에 이용된 내장형 (on-board) 컴퓨터, 및 다양한 다른 비다이스들이 있다.
일반적으로, 본 개시물은 오디오 파일을 처리하기 위한 기술을 설명한다. 이 기술은 다른 오디오 포맷, 기술 또는 표준에 유용할 수도 있지만, 이 기술은 특히 MIDI 포맷에 상응하는 오디오 파일의 재생에 유용할 수도 있다. 본 명세서에 이용된 바와 같이, MIDI 파일이란 용어는 MIDI 포맷에 따르는 적어도 하나의 오디오 트랙을 포함하는 임의의 파일을 지칭한다. 본 개시물에 따르면, 기술은, 복수의 오디오 프로세싱 하드웨어 엘리먼트로부터 파형 샘플을 수신하도록 동작하는 합산 버퍼 (summing buffer) 를 이용한다. 합산 버퍼가 프로세싱 엘리먼트들 중 하나의 엘리먼트로부터 계산된 파형을 수신할 때, 합산 버퍼는 MIDI 프레임에 대한 전체 파형과 연관된 적절한 순간에 계산된 파형을 추가한다. 따라서, 합산 버퍼는 복수의 프로세싱 엘리먼트들의 출력을 조합한다. 이 방식으로, 합산 버퍼는 완전한 MIDI 프레임에 대한 파형의 전체 디지털 표시를 누산 및 저장한다. 합산 버퍼는 필수적으로, 소정의 오디오 프레임 내의 전체 오디오 편집을 대표하는 오디오 샘플을 생성하기 위해 프로세싱 엘리먼트들 중 상이한 엘리먼트들로부터 상이하게 생성된 보이스들과 연관된 상이한 순간을 합산한다.
합산 버퍼는 제 1 오디오 프레임에 대한 오디오 샘플을 디지털 신호 프로세서 (DSP) 와 같은 외부 프로세서로 전송한다. 합산 버퍼는, 합산 버퍼에 의해 독립적으로 록킹 및 언록킹될 수도 있는 복수의 메모리 블록들, 즉 블록 단위로 논리적으로 분할될 수도 있는 메모리 모듈을 포함한다. DSP 로의 전송이 메모리 모듈 내의 소정의 메모리 블록에 대해 완료될 때, 합산 버퍼는 이 메모리 블록을 언록킹한다. 제 1 프레임 동안 DSP 에 대한 메모리 모듈의 모든 메모리 블록의 전송의 완료를 대기하지 않고, 합산 버퍼는 언록킹된 메모리 블록의 콘텐츠를 클리어 (clear) 하기 시작하고, 제 2 프레임 (즉, 다음 프레임) 동안 파형 합이 클리어된 메모리 블록에 기록되는 것을 허용한다.
이들 기술의 결과로서, 합산 버퍼는, 디지털 신호 프로세서 (DSP) 로의 파형 합의 전송이 이전 프레임 동안 여전히 진행중이면서, 오디오 프로세싱 하드웨어 엘리먼트로부터 파형 샘플을 수신하고 이 결과의 파형 합을 메모리에 저장할 수도 있다. 이 방식으로, 합산 버퍼는 오디오 프로세싱 엘리먼트로부터의 파형 샘플을 효율적으로 합산하고 각 프레임에 대한 결과의 파형 합을 DSP 에 제공하도록 설계된다. 또한, 오디오 프로세싱 하드웨어 엘리먼트로부터 합산 버퍼로 메모리 관리 기능을 오프로딩 (offloading) 하는 것은 오디오 프로세싱 하드웨어 엘리먼트의 스루풋을 증가시킬 수도 있다.
일 양태에서, 본 개시물은, 제 1 오디오 프레임과 연관된 파형 합을 생성하도록 오디오 프로세싱 엘리먼트로부터 수신된 파형 샘플을 합산하는 단계, 제 1 오디오 프레임과 연관된 파형 합을 메모리 내에 저장하는 단계로서, 상기 메모리는 복수의 메모리 블록들로 논리적으로 분할되는, 상기 파형 합을 메모리 내에 저장하는 단계, 및 제 1 오디오 프레임과 연관된 파형 합을 포함하는 메모리 블록을 록킹하는 단계를 포함한다. 방법은, 록킹된 메모리 블록의 콘텐츠를 블록 단위로 외부 프로세서로 전송하는 단계, 메모리 블록의 콘텐츠가 외부 프로세서로 전송된 후에 메모리 블록을 언록킹하는 단계, 및 제 1 오디오 프레임과 연관된 파형 합을 포함하는 남아있는 록킹된 메모리 블록의 콘텐츠를 전송함과 동시에 제 2 오디오 프레임과 연관된 파형 합을 언록킹된 메모리 블록 내에 저장하는 단계를 더 포함한다.
다른 양태에서, 본 개시물은 제 1 오디오 프레임과 연관된 파형 합을 생성하도록 오디오 프로세싱 엘리먼트로부터 수신된 파형 샘플을 합산하는 누산기, 제 1 오디오 프레임과 연관된 파형 합을 저장하는 메모리로서, 복수의 메모리 블록들로 논리적으로 분할되는, 상기 메모리, 및 제 1 오디오 프레임과 연관된 파형 합을 포함하는 메모리 블록들을 록킹하는 제어 유닛을 포함하는 디바이스를 제공한다. 제어 유닛은, 록킹된 메모리 블록들의 콘텐츠들을 블록 단위로 외부 프로세서로 전송하고 메모리 블록의 콘텐츠들이 외부 프로세서로 전송된 후에 메모리 블록을 언록킹한다. 제어 유닛이 제 1 오디오 프레임과 연관된 파형 합을 포함하는 남아있는 록킹된 메모리 블록들의 콘텐츠들을 전송함과 동시에 메모리는 제 2 오디오 프레임과 연관된 파형 합을 언록킹된 메모리 블록 내에 저장한다.
다른 양태에서, 본 개시물은, 제 1 오디오 프레임과 연관된 파형 합을 생성하도록 오디오 프로세싱 엘리먼트로부터 수신된 파형 샘플을 합산하는 수단, 제 1 오디오 프레임과 연관된 파형 합을 저장하는 수단으로서, 상기 저장하는 수단은 복수의 메모리 블록들로 논리적으로 분할되는, 상기 저장하는 수단, 제 1 오디오 프레임과 연관된 상기 파형 합을 포함하는 메모리 블록들을 록킹하는 수단을 포함하는 디바이스를 제공한다. 디바이스는 또한, 록킹된 메모리 블록들의 콘텐츠들을 블록 단위로 외부 프로세서로 전송하는 수단, 및 메모리 블록의 콘텐츠들이 외부 프로세서로 전송된 후에 메모리 블록을 언록킹하는 수단을 포함하고, 전송하는 수단에 의해 상기 제 1 오디오 프레임과 연관된 파형 합들을 포함하는 남아있는 록킹된 메모리 블록들의 콘텐츠들이 외부 프로세서로 전송되는 동시에, 저장하는 수단에 의해 제 2 오디오 프레임과 연관된 파형 합이 언록킹된 메모리 블록 내에 저장된다.
다른 양태에서, 본 개시물은, 실행시 하나 이상의 프로세서로 하여금, 제 1 오디오 프레임과 연관된 파형 합을 생성하도록 오디오 프로세싱 엘리먼트로부터 수신된 파형 샘플을 합산하게 하고, 제 1 오디오 프레임과 연관된 파형 합을 복수의 메모리 블록들로 논리적으로 분할되는 메모리 내에 저장하게 하고, 제 1 오디오 프레임과 연관된 파형 합을 포함하는 메모리 블록들을 록킹하게 하고, 록킹된 메모리 블록들의 콘텐츠들을 블록 단위로 외부 프로세서로 전송하게 하고, 메모리 블록의 콘텐츠들이 외부 프로세서로 전송된 후에 메모리 블록을 언록킹하게 하며, 제 1 오디오 프레임과 연관된 파형 합들을 포함하는 남아있는 록킹된 메모리 블록들의 콘텐츠들을 전송함과 동시에 제 2 오디오 프레임과 연관된 파형 합을 언록킹된 메모리 블록 내에 저장하게 하는, 명령들을 포함하는 컴퓨터 판독 가능 매체를 제공한다.
다른 양태에서, 본 개시물은, 제 1 오디오 프레임과 연관된 파형 합을 생성하도록 오디오 프로세싱 엘리먼트로부터 수신된 파형 샘플을 합산하고, 제 1 오디오 프레임과 연관된 파형 합을 복수의 메모리 블록들로 논리적으로 분할되는 메모리 내에 저장하고, 제 1 오디오 프레임과 연관된 파형 합을 포함하는 메모리 블록들을 록킹하고, 록킹된 메모리 블록들의 콘텐츠들을 블록 단위로 외부 프로세서로 전송하고, 메모리 블록의 콘텐츠들이 외부 프로세서로 전송된 후에 메모리 블록을 언록킹하며, 제 1 오디오 프레임과 연관된 파형 합들을 포함하는 남아있는 록킹된 메모리 블록들의 콘텐츠들을 전송함과 동시에 제 2 오디오 프레임과 연관된 파형 합을 상기 언록킹된 메모리 블록 내에 저장하도록 구성되는 회로를 제공한다.
본 개시물의 하나 이상의 양태들의 상세한 설명은 이하의 상세한 설명 및 첨부된 도면들에서 설명된다. 본 발명의 다른 피처 (feature), 목적, 및 이점들은 상세한 설명 및 도면으로부터, 그리고 청구범위로부터 명백해질 것이다.
도 1 은 본 개시물에 따른 오디오 파일을 처리하기 위한 기술을 구현할 수도 있는 예시적인 오디오 디바이스를 나타내는 블록도이다.
도 2 는 본 개시물에 따른 오디오 합성 파라미터를 처리하기 위한 하드웨어 유닛의 일 예의 블록도이다.
도 3 은 본 개시물의 교시와 일치하는 예시적인 기술을 나타내는 흐름도이다.
도 4 는 본 개시물에 따른 합산 버퍼의 예시적인 아키텍처 (architecture) 를 나타내는 블록도이다.
도 5 는 합산 버퍼에 의해 유지된 예시적인 메모리 모듈을 나타내는 블록도이다.
도 6 은 본 개시물의 교시와 일치하는 예시적인 기술을 나타내는 흐름도이다.
본 개시물은 오디오 파일을 처리하기 위한 기술을 설명한다. 이 기술은 다른 오디오 포맷, 합성 파라미터를 이용하는 기술 또는 표준들에 유용할 수도 있지만, 이 기술은 특히, MIDI 포맷에 상응하는 오디오 파일의 재생에 유용할 수도 있다. 본 명세서에 이용되는 바와 같이, MIDI 파일이란 용어는 MIDI 포맷에 따르는 적어도 하나의 오디오 트랙을 포함하는 임의의 오디오 데이터 또는 파일을 지칭한다. MIDI 트랙을 포함할 수도 있는 각종 파일 포맷의 예들로는, 몇 개만 언급하자면 CMX, SMAF, XMF, SP-MIDI 가 있다. CMX 는 퀄컴 (Qualcomm Inc) 에 의해 개발된 콤팩트 미디어 확장 (Compact Media Extensions) 을 나타낸다. SMAF 는 야마하 (Yamaha Corp) 에 의해 개발된 합성 음악 모바일 애플리케이션 포맷 (Synthetic Music Mobile Application Format) 을 나타낸다. XMF 는 확장 가능한 음악 포맷을 나타내고, SP-MIDI 는 스케일러블 폴리포니 MIDI (Scalable Polyphony MIDI) 를 나타낸다.
오디오 프레임 내의 MIDI 파일 또는 다른 오디오 파일은 디바이스들 사이에서 전달될 수 있고, 오디오 프레임은 오디오 정보 또는 오디오-비디오 (멀티미디어) 정보를 포함할 수도 있다. 오디오 프레임은 단일 오디오 파일, 다수의 오디오 파일, 또는 가능하면 하나 이상의 오디오 파일 및 코딩된 비디오 프레임과 같은 다른 정보를 포함할 수도 있다. 오디오 프레임 내의 임의의 오디오 데이터는, 전술된 스트리밍 오디오 데이터 또는 하나 이상의 오디오 파일 포맷을 포함하는 본 명세서에 이용된 오디오 파일로 칭해질 수도 있다. 본 개시물에 따르면, 기술은 (예를 들어, 전용 MIDI 하드웨어 내의) 복수의 프로세싱 엘리먼트들의 각 엘리먼트로부터 파형 샘플을 수신하고, 그 다음에 디지털 신호 프로세서 (DSP) 로 전송되는 파형 합을 생성하도록 파형 샘플을 누산하는 합산 버퍼를 이용한다.
설명된 기술은 MIDI 파일과 같은 오디오 파일의 프로세싱을 향상시킬 수도 있다. 본 기술은 상이한 태스크를 소프트웨어, 펌웨어, 및 하드웨어로 분리할 수도 있다. 범용 프로세서는, 오디오 프레임의 오디오 파일을 분석하고 이에 의해 타이밍 파라미터를 식별하고, 오디오 파일과 연관된 이벤트를 스케줄링하도록 소프트웨어를 실행시킬 수도 있다. 그 다음에, 스케줄링된 이벤트는 오디오 파일 내의 타이밍 파라미터에 의해 지정된 바와 같이 동기화된 방식으로 DSP 에 의해 서비스될 수 있다. 범용 프로세서는 시간-동기화된 방식으로 이벤트를 DSP 로 디스페치 (dispatch) 하고, DSP 는 합성 파라미터를 생성하기 위해 시간-동기화된 스케줄에 따라 이벤트를 처리한다. 그 다음에, DSP 는 하드웨어 유닛 내의 합성 파라미터의 프로세싱을 스케줄링하고, 하드웨어 유닛은 합성 파라미터에 기초하여 오디오 샘플을 생성할 수 있다.
본 개시물에 따르면, 합산 버퍼가 프로세싱 엘리먼트들 중 하나의 엘리먼트로부터 계산된 파형을 수신할 때, 합산 버퍼는 MIDI 프레임에 대한 전체 파형과 연관된 적절한 순간에 계산된 파형을 추가한다. 따라서, 합산 버퍼는 복수의 프로세싱 엘리먼트들의 출력을 조합한다. 이 방식으로, 합산 버퍼는 완전한 MIDI 프레임에 대한 파형의 전체 디지털 표시를 누산 및 저장한다. 합산 버퍼는 필수적으로, 소정의 오디오 프레임 내의 전체 오디오 편집을 나타내는 오디오 샘플을 생성하기 위해, 프로세싱 엘리먼트들 중 상이한 엘리먼트들로부터 상이하게 생성된 보이스들과 연관된 상이한 순간을 합산한다.
도 1 은 예시적인 오디오 디바이스 (4) 를 나타내는 블록도이다. 오디오 디바이스 (4) 는 MIDI 파일, 예를 들어 적어도 하나의 MIDI 트랙을 포함하는 파일을 처리할 수 있는 임의의 디바이스를 포함할 수도 있다. 오디오 디바이스 (4) 의 예들로는 무선 통신 디바이스 이를 테면 무선전화기, 네트워크 전화기, 디지털 음악 플레이어, 음악 신시사이저, 무선 모바일 디바이스, 다이렉트 양방향 통신 디바이스 (때때로, 워키-토키로 불림), 개인용 컴퓨터, 데스트톱 또는 랩톱 컴퓨터, 워크스테이션, 위성 무선 디바이스, 인터콤 디바이스, 무선 방송 디바이스, 핸드 헬드 게이밍 디바이스, 디바이스 내에 장착된 회로 보드, 키오스크 디바이스, 비디오 게임 콘솔, 각종 전산화된 어린이용 장난감, 자동차, 선박 또는 항공기에 이용된 내장형 컴퓨터, 또는 다양한 다른 디바이스들이 있다.
도 1 에 도시된 각종 컴포넌트가 본 개시물의 양태들을 설명하기 위해 제공된다. 그러나, 다른 컴포넌트들이 존재할 수 있고, 몇몇의 도시된 컴포넌트들은 몇몇 구현들에 포함되지 않을 수도 있다. 예를 들어, 오디오 디바이스 (4) 가 무선전화기이면, 안테나, 송신기, 수신기 및 모뎀 (변조기-복조기) 이 포함되어 오디오 파일의 무선 통신을 용이하게 할 수도 있다.
도 1 의 예에 도시된 바와 같이, 오디오 디바이스 (4) 는 오디오 저장 유닛 (6) 을 포함하여 MIDI 파일을 저장한다. 다시, MIDI 파일은 일반적으로 MIDI 포맷으로 코딩된 적어도 하나의 트랙을 포함하는 임의의 오디오 파일을 지칭한다. 오디오 저장 유닛 (6) 은 임의의 휘발성 또는 비-휘발성 메모리 또는 저장 장치를 포함할 수도 있다. 본 개시물의 목적을 위해, 오디오 저장 유닛 (6) 은 MIDI 파일을 프로세서 (8) 로 포워딩하는 저장 유닛으로서 보일 수 있고, 또는 프로세서 (8) 는 MIDI 파일을 그 MIDI 파일이 처리될 순서로 오디오 저장 유닛 (6) 으로부터 검색된다. 물론, 오디오 저장 유닛 (6) 은 또한 다른 디바이스로부터 전송된 정보와 연관된 임시 저장 유닛, 또는 디지털 음악 플레이어와 연관된 저장 유닛일 수 있다. 오디오 저장 유닛 (6) 은 데이터 버스 또는 다른 접속을 통해 프로세서 (8) 에 커플링된 별도의 휘발성 메모리 칩 또는 비-휘발성 저장 디바이스일 수도 있다. 오디오 저장 유닛 (6) 으로부터 정보의 전송을 용이하게 하도록 메모리 또는 저장 디바이스 제어기 (미도시) 가 포함될 수도 있다.
본 개시물에 따르면, 디바이스 (4) 는 소프트웨어, 하드웨어 및 펌웨어 간의 MIDI 프로세싱 태스크를 분리하는 아키텍처를 구현한다. 특히, 디바이스 (4) 는 프로세서 (8), DSP (12) 및 오디오 하드웨어 유닛 (14) 을 포함한다. 이들 컴포넌트들 각각은 예를 들어, 직접 또는 버스를 통해 메모리 유닛 (10) 에 커플링될 수도 있다. 프로세서 (8) 는, MIDI 파일을 분석하고 MIDI 파일과 연관된 MIDI 이벤트를 스케줄링하도록 소프트웨어를 실행시키는 범용 프로세서를 포함할 수도 있다. 스케줄링된 이벤트는 MIDI 파일 내의 타이밍 파라미터로 지정된 바와 같이, 시간-동기화된 방식으로 DSP (12) 로 디스페치할 수 있고, 이에 의해 동기화된 방식으로 DSP (12) 에 의해 서비스될 수 있다. DSP (12) 는, MIDI 합성 파라미터를 생성하기 위해 범용 프로세서 (8) 에 의해 생성된 시간-동기화된 스케줄에 따라 MIDI 이벤트를 처리한다. DSP (12) 는 또한 오디오 하드웨어 유닛 (14) 에 의한 MIDI 합성 파라미터의 후속 프로세싱을 스케줄링할 수도 있다. 오디오 하드웨어 유닛 (14) 은 합성 파라미터에 기초하여 오디오 샘플을 생성한다. 대안의 실시형태에서, 본 명세서에 설명된 기능성은 본 명세서에 설명된 기술을 수행하도록 구성된 소프트웨어 또는 회로 내에서와 같이 다른 방식으로 구현될 수도 있다.
프로세서 (8) 는 다양한 종류의 범용 단일 또는 다수의 칩 마이크로프로세서 중 어느 하나일 수도 있다. 프로세서 (8) 는 CISC (Complex instruction Set Computer) 설계 또는 RISC (Reduced Instruction Set Computer) 설계를 구현할 수도 있다. 일반적으로, 프로세서 (8) 는 소프트웨어를 실행하는 중앙 처리 장치 (CPU) 를 포함한다. 예들로는, 인텔 (Intel Corporation), 애플 컴퓨터 (Apple Computer, Inc), 썬 마이크로시스템즈 (Sun Microsystems Inc.), AMD (Advanced Micro Devices Inc.) 등과 같은 회사들의 16-비트, 32-비트 또는 64-비트 마이크로프로세서들이 있다. 다른 예들로는, IBM (International Business Machines Corporation), 레드팻 (RedHat Inc.) 등과 같은 회사들의 유닉스 또는 리눅스 기반 마이크로프로세서들이 있다. 범용 프로세서는 ARM Inc. 의 상용 가능한 ARM9 를 포함할 수도 있고, DSP 는 퀄컴 (Qualcomm Inc.) 에 의해 개발된 QDSP4 DSP 를 포함할 수도 있다.
프로세서 (8) 는 제 1 프레임 (프레임 N) 에 대한 MIDI 파일을 서비스할 수도 있고, 제 1 프레임 (프레임 N) 이 DSP (12) 에 의해 서비스될 때 제 2 프레임 (프레임 N+1) 이 프로세서 (8) 에 의해 동시에 서비스될 수 있다. 제 1 프레임 (프레임 N) 이 오디오 하드웨어 유닛 (14) 에 의해 서비스될 때, 제 2 서비스 프레임 (프레임 N+1) 이 DSP (12) 에 의해 동시에 서비스되 한편, 제 3 프레임 (프레임 N+2) 은 프로세서 (8) 에 의해 서비스된다. 이 방식으로, MIDI 파일 프로세싱은 동일한 시간에 처리될 수 있는 파이프라인처리된 스테이지들로 분리되고, 이는 효율성을 향상시키고, 가능하다면 소정 스테이지에 필요한 연산 자원을 감소시킬 수 있다. DSP (12) 는 예를 들어, 프로세서 (8) 또는 MIDI 하드웨어 (14) 의 도움 없이 완전한 MIDI 알고리즘을 실행하는 종래의 DSP 에 비해 간단해질 수도 있다.
몇몇 경우, MIDI 하드웨어 유닛 (14) 에 의해 생성된 오디오 샘플이 예를 들어, 인터럽트-구동형 (interrupt-driven) 기술을 통해 DSP (12) 로 다시 전달된다. 이 경우, DSP 는 또한 오디오 샘플에 대해 포스트-프로세싱 기술을 수행할 수도 있다. DAC (16) 는, 디지털인 오디오 샘플들을, 사용자에게 오디오 사운드를 출력하기 위해 스피커 (19A 및 19B) 를 구동하도록 구동 회로 (18) 에 의해 이용될 수 있는 아날로그 신호들로 변환한다.
각 오디오 프레임에 있어서, 프로세서 (8) 는 하나 이상의 MIDI 파일을 판독하고, 이 MIDI 파일로부터의 MIDI 명령들을 실행할 수도 있다. 이들 MIDI 명령들에 기초하여, 프로세서 (8) 는 DSP (12) 에 의한 프로세싱을 위해 MIDI 이벤트를 스케줄링하고, 이 스케줄링에 따라 MIDI 이벤트를 DSP (12) 로 디스페치한다. 특히, 프로세서 (8) 에 의한 이 스케줄링은, MIDI 파일 내에 지정된 타이밍 파라미터에 기초하여 식별될 수 있는 MIDI 이벤트와 연관된 타이밍의 동기화를 포함할 수도 있다. MIDI 파일 내의 MIDI 명령들은 특정 MIDI 보이스가 시작 또는 정지되도록 명령할 수도 있다. 다른 MIDI 명령들은 애프터터치 (aftertouch) 효과, 호흡 제어 효과, 프로그램 변경, 피치 벤드 (bend) 효과, 팬 레프트 (pan left) 또는 팬 라이트 (pan right) 와 같은 시스템 메시지, 서스테인 페달 (sustain pedal) 효과, 주 볼륨 제어, 타이밍 파라미터와 같은 시스템 메시지, 조명 효과 큐 (cue) 와 같은 MIDI 제어 메시지, 및/또는 다른 사운드 영향에 관련될 수도 있다. MIDI 이벤트를 스케줄링한 후에, 프로세서 (8) 는, DSP (12) 가 이벤트를 처리할 수 있도록 메모리 (10) 또는 DSP (12) 에 스케줄링을 제공할 수도 있다. 대안으로, 프로세서 (8) 는 시간 동기화된 방식으로 MIDI 이벤트를 DSP (12) 로 디스패칭함으로써 스케줄링을 실행할 수도 있다.
메모리 (10) 는, 프로세서 (8), DSP (12) 및 MIDI 하드웨어 유닛 (14) 이 이들 상이한 컴포넌트에 대표된 각종 업무를 수행하기 위해 필요한 임의의 정보에 액세스할 수 있도록 구조화될 수도 있다. 몇몇 경우에서, 메모리 (10) 내의 MIDI 정보의 저장 레이아웃은 상이한 컴포넌트들 (8, 12 및 14) 로부터 효율적인 액세스를 허용하도록 배열될 수도 있다.
DSP (12) 가 프로세서 (8) 로부터 (또는 메모리 (10) 로부터) 스케줄링된 MIDI 이벤트를 수신할 때, DSP (12) 는 메모리 (10) 내에 다시 저장될 수도 있는 MIDI 이벤트를 처리하여 MIDI 합성 파라미터를 생성할 수도 있다. 다시, 이들 MIDI 이벤트가 DSP 에 의해 서비스되는 타이밍이 프로세서 (8) 에 의해 스케줄링되고, 이는 DSP (12) 가 이러한 스케줄링 태스크를 수행할 필요를 제거함으로써 효율성을 생성한다. 따라서, 프로세서 (8) 가 다음 오디오 프레임의 MIDI 이벤트를 스케줄링하는 동안 DSP (12) 는 제 1 오디오 프레임에 대한 MIDI 이벤트를 서비스한다. 오디오 프레임은 수 개의 오디오 샘플들을 포함할 수도 있는, 예를 들어, 10 밀리초 (ms) 간격의 시간의 블록들을을 포함할 수도 있다. 디지털 출력은 예를 들어, 아날로그 오디오 신호로 변환될 수 있는 프레임 당 480 개의 샘플을 초래할 수도 있다. 많은 이벤트는, 많은 음색 또는 사운드들이 MIDI 포맷에 따라 일 순간 내에 포함될 수 있도록 일 순간에 대응할 수도 있다. 물론, 임의의 오디오 프레임에 대표된 시간의 양 뿐 아니라 프레임 당 샘플의 수가 상이한 구현에서 변할 수도 있다.
일단 DSP (12) 가 MIDI 합성 파라미터를 생성하면, 이 합성 파라미터에 기초하여 오디오 하드웨어 유닛 (14) 이 오디오 샘플을 생성한다. DSP (12) 는 오디오 하드웨어 유닛 (14) 에 의한 MIDI 합성 파라미터의 프로세싱을 스케줄링할 수 있다. 오디오 하드웨어 유닛 (14) 에 의해 생성된 오디오 샘플들은 규칙적인 간격에서 샘플링되는 아날로그 신호의 디지털 표시인 펄스-코드 변조 (PCM) 샘플을 포함할 수도 있다. 오디오 하드웨어 유닛 (14) 에 의한 예시적인 오디오 생성의 추가의 상세한 설명은 도 2 를 참조하여 이하에서 논의된다.
몇몇 경우에서, 포스트 (post) 프로세싱이 오디오 샘플에 대해 수행될 필요가 있을 수도 있다. 이 경우, 오디오 하드웨어 유닛 (14) 은 이러한 포스트 프로세싱을 수행하도록 DSP (12) 를 지시하기 위해 DSP (12) 에 인터럽트 커맨드를 전송할 수 있다. 포스트 프로세싱은, 필터링, 스케일링, 볼륨 조정, 또는 궁극적으로 사운드 출력을 강화시킬 수도 있는 다양한 오디오 포스트 프로세싱을 포함할 수도 있다.
포스트 프로세싱에 이어서, DSP (12) 는 포스트 프로세싱된 오디오 샘플을 디지털 대 아날로그 변환기 (DAC; 16) 로 출력할 수도 있다. DAC (16) 는 디지털 오디오 신호를 아날로그 신호로 변환하고, 이 아날로그 신호를 구동 회로 (18) 로 출력한다. 구동 회로 (18) 는 이 신호를 증폭하여, 하나 이상의 스피커 (19A 및 19B) 를 구동하며 이로써 가청 사운드를 생성할 수도 있다.
도 2 는 도 1 의 오디오 디바이스 (4) 의 오디오 하드에어 유닛 (14) 에 대응할 수도 있는 예시적인 오디오 하드웨어 유닛 (20) 을 나타내는 블록도이다. 도 2 에 도시된 구현은 본 개시물의 교시와 일치하여 정의될 수 있는 다른 MIDI 하드웨어 구현으로서의 단지 예이다. 도 2 의 예에 나타난 바와 같이, 오디오 하드웨어 유닛 (20) 은 버스 인터페이스 (30) 를 포함하여 데이터를 전송 및 수신한다. 예를 들어, 버스 인터페이스 (30) 는 AMBA 고-성능 버스 (AHB) 마스터 인터페이스, AHB 슬레이브 인터페이스, 및 메모리 버스 인터페이스를 포함할 수도 있다. AMBA 는 개선된 마이크로프로세서 버스 아키텍처를 나타낸다. 대안으로, 버스 인터페이스 (30) 는 AXI 버스 인터페이스, 또는 다른 유형의 버스 인터페이스를 포함할 수도 있다. AXI 는 개선된 신장형 인터페이스를 나타낸다.
또한, 오디오 하드웨어 유닛 (20) 은 조정 모듈 (32) 을 포함할 수도 있다. 조정 모듈 (32) 은 오디오 하드웨어 유닛 (20) 내에서 데이터 흐름을 조정한다. 오디오 하드웨어 유닛 (20) 이 DSP (12, 도 1) 로부터 오디오 샘플을 합성하기 시작하라는 명령을 수신할 때, 조정 모듈 (32) 은 DSP (12, 도 1) 에 의해 생성된 오디오 프레임에 대한 합성 파라미터를 판독한다. 이들 합성 파라미터는 오디오 프레임을 재구성하는데 이용될 수 있다. MIDI 포맷의 경우, 합성 파라미터는 소정의 프레임 내의 하나 이상의 MIDI 보이스의 다양한 음파 특성을 설명한다. 예를 들어, MIDI 합성 파라미터 세트는 하나 이상의 보이스에 영향을 줄 수 있는 소정 레벨의 공진, 반향 (reverberation), 볼륨, 및/또는 다른 특성을 지정할 수도 있다.
조정 모듈 (32) 의 지시로, 합성 파라미터는 메모리 유닛 (10, 도 1) 으로부터 각각의 프로세싱 엘리먼트 (34A 또는 34N) 와 연관된 보이스 파라미터 세트 (VPS) 램 (46A 또는 46N) 으로 직접 로딩될 수도 있다. DSP (12, 도 1) 의 지시로, 프로그램 명령들은 메모리 (10) 로부터 각각의 프로세싱 엘리먼트 (34A 또는 34N) 와 연관된 프로그램 램 유닛 (44A 또는 44N) 으로 로딩된다.
프로그램 램 유닛 (44A 또는 44N) 으로 로딩된 명령들은, VPS 램 유닛 (46A 또는 46N) 내의 합성 파라미터의 리스트에 나타난 보이스들 중 하나를 합성하도록 연관된 프로세싱 엘리먼트 (34A 또는 34N) 에 명령한다. 임의의 수의 프로세싱 엘리먼트들 (34A-34N) (일괄하여, "프로세싱 엘리먼트 (34)") 이 존재할 수도 있고, 각 엘리먼트는 수학적 연산을 수행할 수 있는 하나 이상의 ALU 뿐만 아니라 데이터를 판독 및 기록하기 위한 하나 이상의 유닛을 포함할 수도 있다. 단순화를 위해 단지 2 개의 프로세싱 엘리먼트 (34A 및 34N) 가 도시되었으나, 더 많은 엘리먼트가 하드웨어 유닛 (20) 내에 포함될 수도 있다. 프로세싱 엘리먼트 (34) 는 서로 병렬로 보이스들을 합성할 수도 있다. 특히, 복수의 상이한 프로세싱 엘리먼트 (34) 는 상이한 합성 파라미터를 처리하도록 병렬로 작동한다. 이 방식으로, 오디오 하드웨어 유닛 (20) 내의 복수의 프로세싱 엘리먼트 (34) 은 가속화하고, 가능하다면 생성된 보이스들의 수를 증가시켜, 오디오 샘플의 생성을 향상시킬 수 있다.
조정 모듈 (32) 이 프로세싱 엘리먼트들 (34) 중 하나에 보이스를 합성할 것을 명령할 때, 프로세싱 엘리먼트들 (34) 의 각 엘리먼트는 합성 파라미터에 의해 정의된 하나 이상의 명령들을 실행시킬 수도 있다. 다시, 이들 명령들은 프로그램 램 유닛 (44A 또는 44N) 으로 로딩될 수도 있다. 프로그램 램 유닛 (44A 또는 44N) 으로 로딩된 명령들은 프로세싱 엘리먼트들 (34) 의 각 엘리먼트로 하여금 보이스 합성을 수행하게 한다. 예를 들어, 프로세싱 엘리먼트 (34) 는 합성 파라미터에서 지정된 파형에 대한 요청을 파형 페치 유닛 (WFU; 36) 으로 전송할 수도 있다. 프로세싱 엘리먼트들 (34) 각각은 WFU (36) 를 이용할 수도 있다. 2 개 이상의 프로세싱 엘리먼트 (34) 가 동시에 WFU (36) 의 이용을 요청하는 경우, WFU (36) 는 중재 방식을 이용하여 임의의 충돌 (conflict) 을 해결한다
프로세싱 엘리먼트들 (34) 중 하나의 엘리먼트로부터의 요청에 응답하여, WFU (36) 는 하나 이상의 파형 샘플을 요청한 프로세싱 엘리먼트로 리턴한다. 그러나, 파동이 예를 들어 파동의 최대 1 싸이클 만큼 샘플 내에서 위상 시프트될 수 있기 때문에, WFU (36) 는 보간을 이용하여 위상 시프트를 보상하기 위해 2 개의 샘플을 리턴할 수도 있다. 또한, 스테레오 신호가 2 개의 입체음향 채널에 대해 2 개의 별도의 파동을 포함할 수 있기 때문에, WFU (36) 는 상이한 채널에 대해 별도의 샘플을 리턴하여 예를 들어, 스테레오 출력에 대해 최대 4 개의 별도의 샘플을 초래할 수도 있다.
WFU (36) 가 오디오 샘플을 프로세싱 엘리먼트들 (34) 중 하나의 엘리먼트로 리턴한 후에, 각 프로세싱 엘리먼트는 오디오 합성 파라미터에 기초하여 추가의 프로그램 명령들을 실행시킬 수도 있다. 특히, 명령들은 프로세싱 엘리먼트들 (34) 중 하나의 엘리먼트로 하여금 오디오 하드웨어 유닛 (20) 내의 저 주파수 발진기 (LFO; 38) 로부터 대칭의 삼각파 (triangular wave) 를 요청하게 한다. LFO (38) 에 의해 리턴된 삼각파와 WFU (36) 에 의해 리턴된 파형을 곱함으로써, 각 프로세싱 엘리먼트는 파형의 각종 음파 특성을 조정하여 원하는 오디오 효과를 달성할 수도 있다. 예를 들어, 파형을 삼각파로 곱하는 것은 원하는 악기와 더 유사한 소리를 내는 파형을 초래할 수도 있다.
합성 파라미터에 기초하여 실행된 다른 명령들은 프로세싱 엘리먼트들 (34) 의 각 엘리먼트로 하여금 파형을 특정 횟수로 루프하게 하고, 파형의 진폭을 조정하게 하고, 반향을 추가하게 하고, 비브라토 효과를 추가하게 하고, 또는 다른 효과를 야기하게 한다. 이 방식으로, 프로세싱 엘리먼트 (34) 는 하나의 MIDI 프레임을 지속하는 보이스에 대한 파형을 계산할 수 있다. 결국, 각 프로세싱 엘리먼트는 종료 명령에 직면할 수도 있다. 프로세싱 엘리먼트들 (34) 중 하나의 엘리먼트가 종료 명령에 직면할 때, 그 프로세싱 엘리먼트는 보이스 합성의 종지 (end) 를 조정 모듈 (32) 로 시그널링한다. 계산된 보이스 파형이 프로그램 명령들의 실행 동안 다른 저장 명령의 지시로 합산 버퍼 (40) 에 제공될 수 있다. 이는 합산 버퍼 (40) 로 하여금 그 계산된 보이스 파형을 저장하게 한다.
합산 버퍼 (40) 가 프로세싱 엘리먼트들 (34) 중 하나의 엘리먼트로부터 계산된 파형을 수신할 때, 합산 버퍼 (40) 는 그 계산된 파형을 MIDI 프레임의 전체 파형과 연관된 적절한 순간에 추가한다. 따라서, 합산 버퍼 (40) 는 복수의 프로세싱 엘리먼트 (34) 의 출력을 조합한다. 예를 들어, 합산 버퍼 (40) 는 평파 (flat wave) (즉, 모든 디지털 샘플들이 0 인 파) 를 초기에 저장할 수도 있다. 합산 버퍼 (40) 가 프로세싱 엘리먼트들 (34) 중 하나의 엘리먼트로부터 계산된 파형과 같은 오디오 정보를 수신할 때, 합산 버퍼 (40) 는 계산된 파형의 각 디지털 샘플을 합산 버퍼 (40) 내에 저장된 파형의 각 샘플에 추가할 수 있다. 이 방식으로, 합산 버퍼 (40) 는 완전한 오디오 프레임에 대한 파형의 전체 디지털 표시를 누산 및 저장한다.
합산 버퍼 (40) 는 본질적으로 프로세싱 엘리먼트들 (34) 중 상이한 엘리먼트들로부터 상이한 오디오 정보를 합산한다. 상이한 오디오 정보는 상이한 생성된 보이스들과 연관된 상이한 순간을 나타낸다. 이 방식으로, 합산 버퍼 (40) 는 소정 오디오 프레임 내의 전체 오디오 편집을 나타내는 오디오 샘플을 생성한다.
결국, 조정 모듈 (32) 은, 프로세싱 엘리먼트들 (34) 이 현재 MIDI 프레임에 필요한 보이스들 모두의 합성을 완료하고 이들 보이스를 합산 버퍼 (40) 에 제공한다고 결정할 수도 있다. 이 때, 합산 버퍼 (40) 는 현재의 MIDI 프레임에 대한 완료된 파형을 나타내는 디지털 샘플을 포함한다. 조정 모듈 (32) 이 이 결정을 할 때, 조정 모듈 (32) 은 인터럽트를 DSP (12, 도 1) 로 전송한다. 인터럽트에 응답하여, DSP (12) 는 직접 메모리 교환 (DME) 을 통해 합산 버퍼 (40) 내의 제어 유닛 (미도시) 으로 요청을 전송하여 합산 버퍼 (40) 의 콘텐츠를 수신할 수도 있다. 대안으로, DSP (10) 는 또한 DME 를 수행하도록 미리 프로그래밍될 수도 있다. DME 는, DSP (12) 가 그 밖에 소정의 일을 수행하느라 분주한 가운데 백그라운드 프로세스에서 하나의 메모리 뱅크로부터 다른 메모리 뱅크로 데이터를 재전송하는 것을 허용하는 메모리 전송 절차를 지칭한다. DSP (12) 로의 합산 버퍼 (40) 의 콘텐츠의 DME 에 이어서, 그 다음에 DSP (12) 는 아날로그 도메인으로의 변환을 위해 디지털 오디오 샘플을 DAC (16) 에 제공하기 전에, 디지털 오디오 샘플에 대해 임의의 포스트 프로세싱을 수행할 수도 있다. 중요한 것은, 프레임 N 에 대하여 오디오 하드웨어 유닛 (20) 에 의해 수행되는 프로세싱은, 프레임 N+1 에 대한 DSP (12, 도 1) 에 의한 합성 파라미터 생성 및 프레임 N+2 에 대한 프로세서 (8, 도 1) 에 의한 스케줄링 동작과 동시에 발생한다는 것이다.
또한, 본 명세서에 설명된 바와 같이, 합산 버퍼 (40) 는 복수의 메모리 블록으로 논리적으로 분할되는 메모리를 포함하고 블록 단위로 메모리로부터 DSP (12) 로의 DME 전송 및 저장을 허용함으로써 효과적으로 동작한다. 특히, 합산 버퍼 (40) 가 프레임 N 에 대하여 특정 메모리 블록의 콘텐츠 전송을 완료했을 때, 합산 버퍼 (40) 는 메모리 블록을 언록킹 및 클리어하고, 다른 메모리 블록이 프레임 N 에 대하여 DME 전송을 여전히 하고 있을 때 프레임 N+1 에 대한 데이터를 메모리 블록에 저장한다.
캐시 메모리 (48), WFU/LFO 메모리 (39) 및 링크된 리스트 메모리 (42) 가 또한 도 2 에 도시된다. 캐시 메모리 (48) 는 WFU (36) 에 의해 기본 파형을 신속하고 효율적인 방식으로 페치하도록 이용될 수도 있다. WFU/LFO 메모리 (39) 는 조정 모듈 (32) 에 의해 보이스 파라미터 세트의 보이스 파라미터들을 저장하도록 이용될 수도 있다. 이 방식으로, WFU/LFO 메모리 (39) 는 파형 페치 유닛 (36) 및 LFO (38) 의 동작에 전용된 메모리로서 보여질 수 있다. 링크된 리스트 메모리 (42) 는 DSP (12) 에 의해 생성된 보이스 표시자들의 리스트를 저장하는데 이용된 메모리를 포함할 수도 있다. 보이스 표시자들은 메모리 (10) 내에 저장된 하나 이상의 합성 파라미터들에 대한 포인터들을 포함할 수도 있다. 리스트 내의 각 보이스 표시자는 각 MIDI 보이스에 대한 보이스 파라미터 세트를 저장하는 메모리 위치를 특정할 수도 있다. 도 2 에 도시된 각종 메모리 및 메모리들의 배열은 단지 예시적이다. 본 명세서에 설명된 기술은 갖가지 다른 메모리 배열들로 구현될 수 있다.
도 3 은 본 개시물의 교시와 일치하는 예시적인 기술을 나타내는 흐름도이다. 도 3 은 도 1 의 디바이스 (4) 및 도 2 의 하드웨어 유닛 (20) 에 대한 참조로서 설명될 것이다. 그러나, 다른 디바이스가 도 3 의 기술을 구현할 수 있다. 도 3 에 도시된 바와 같이, 메모리 (10) 는 오디오 프레임에 대한 오디오 합성 파라미터를 저장한다 (50). 오디오 합성 파라미터는, 예를 들어 오디오 프레임의 하나 이상의 오디오 파일 내에 지정된 스케줄링된 이벤트의 프로세싱에서 DSP (12) 에 의해 생성될 수도 있다.
그 다음에, 복수의 상이한 프로세싱 엘리먼트 (34) 가 상이한 합성 파라미터들을 동시에 처리한다 (52A, 52B, 및 52N). 특히, 제 1 합성 파라미터는 제 1 프로세싱 엘리먼트 (34A) 에서 처리되고 (52A), 제 2 합성 파라미터는 제 2 프로세싱 엘리먼트 (34B) 에서 처리되며 (52B), 제 N 합성 파라미터는 제 N 프로세싱 엘리먼트 (34N) 에서 처리된다 (52N). 합성 파라미터는 하나 이상의 보이스들에 영향을 줄 수 있는 피치, 공진, 반향, 볼륨, 및/또는 다른 특성을 정의하는 파라미터를 포함할 수도 있다.
임의의 수의 프로세싱 엘리먼트들 (34) 이 이용될 수도 있다. 프로세싱 엘리먼트들 (34) 중 하나의 엘리먼트가 각 프로세싱을 완료하는 임의의 시간에, 그 프로세싱 엘리먼트와 연관되어 생성된 오디오 정보는 합산 버퍼 (40) 내에 누산되어 오디오 샘플을 생성한다 (54). 더 많은 합성 파라미터들이 오디오 프레임에 존재하면 (56 의 "예" 가지), 각 프로세싱 엘리먼트 (34) 는 다음 합성 파라미터를 처리한다 (52A, 52B, 또는 52N). 이 프로세스는, 오디오 프레임에 대한 합성 파라미터들 모두가 서비스될 때까지 계속된다 (56 의 "아니오" 가지). 이 때, 합산 버퍼 (40) 는 오디오 프레임에 대한 오디오 샘플을 출력한다 (58). 예를 들어, 조정 모듈 (32) 은 DSP (12, 도 1) 로 인터럽트 커맨드를 전송하여, 오디오 샘플로 하여금 포스트 프로세싱을 위해 DSP (12) 로 전송되게 할 수도 있다.
도 4 는 본 개시물에 따른 합산 버퍼 (40) 의 예시적인 아키텍처를 나타내는 블록도이다. 라운드-로빈 중재기 (60) 는 프로세싱 엘리먼트 (34A-34N) 로부터 요청을 수신하여 파형 샘플을 합산하고, 라운드-로빈 방식으로 이 요청을 중재한다. 누산기 및 포화 로직 유닛 (62) 은 프로세싱 엘리먼트 (34) 로부터 수신된 파형 샘플을 누산한다. 예를 들어, 누산기 및 포화 로직 유닛 (62) 은 파형 합에 대한 파형 샘플들을 누산하기 위해 2 의 보수 (2C) 누산기를 포함할 수도 있고, 소정 수의 비트, 예를 들어 24 비트에서 포화될 수도 있다. 누산기 및 포화 로직 유닛 (62) 은 2 개의 오디오 채널 (왼쪽 및 오른쪽) 에 대해 독립적인 누산기를 가질 수도 있고, 각 채널을 개별적으로 합산할 수도 있다. 제어 유닛 (66) 은 메모리 모듈 (64) 내의 오디오 보이스들 (예를 들어, MIDI 보이스) 모두의 누산을 나타내는 누산된 파형 샘플 (본 명세서에서 "파형 합" 으로서 지칭됨) 을 저장한다. 예를 들어, 메모리 모듈 (64) 은 하나의 오디오 프레임에 대응하는 파형 합을 저장할 수도 있다. 몇몇 예에서, 파형 합은 펄스 코드 변조 (PCM) 형태에 있을 수도 있다.
프로세싱 엘리먼트 (34) 는 합산 버퍼 (40) 로 파형 샘플을 합산하기 위한 요청을 전송한다. 이 요청은 합산될 파형 샘플 (예를 들어, 이는 스테레오 포맷으로 왼쪽 샘플 및 오른쪽 샘플을 포함함), 및 샘플이 누산되는 위치의 주소 즉, 누산된 파형 샘플이 저장되는 메모리 내의 타겟 메모리 블록의 주소를 나타내는 파형 샘플의 샘플 넘버를 포함할 수도 있다. 당업자는 이 문맥에서, 타겟 메모리가 파형 샘플을 합산하는 기간 동안 유보해둔 임의의 메모리 위치일 수도 있다는 것을 인지할 것이다. 각 요청은 또한, 결과를 누산하거나 그것을 오버라이팅하는지 여부, 및 합산 후에 누산기의 결과를 포화시키는지 여부를 지정하는 2 개의 여분 신호를 포함할 수도 있다. 프로세싱 엘리먼트들 (34) 각각이 파형 샘플을 따라 타겟 메모리 블록 위치의 주소를 전송하기 때문에, 프로세싱 엘리먼트들 (34) 은 그 실행을 합성할 필요가 없고, 프로세싱 엘리먼트들 (34) 각각이 상이한 주소에 대응하는 파형을 전송할 수 있다. 합산 버퍼 (40) 가 프로세싱 엘리먼트들 (34) 중 하나의 엘리먼트로부터 요청을 수신한 후에, 라운드-로빈 중재기 (60) 는 서비스된 프로세싱 엘리먼트를 최하위 우선순위 레벨로 이동시킨다. 라운드-로빈 중재기 (60) 는 이에 의해 프로세싱 엘리먼트들 (34) 모두가 합산 버퍼 (40) 에 대해 동일한 액세스를 갖는 것을 보장한다.
제어 유닛 (66) 은 DSP (12) 로부터 요청을 수신하여 메모리 유닛 (64) 의 콘텐츠의 직접 메모리 교환 (DME) 전송을 초기화한다. 응답하여, 제어 유닛 (66) 은 메모리 모듈 (64) 을 록킹하고, 이는 메모리 모듈 (64) 의 록킹된 부분에 대한 임의의 요청을 차단하는 효과를 갖는다. 메모리 모듈 (64) 은 합산 버퍼 (40) 에 의해 독립적으로 록킹 및 언록킹될 수도 있는 복수의 메모리 블록으로, 즉 블록 단위로 논리적으로 분할될 수도 있다. DME 전송이 메모리 모듈 (64) 내의 소정의 메모리 블록에 대해 완료되자 마자, 제어 유닛 (66) 은 DSP (12) 로 전송되었던 메모리 블록, 콘텐츠를 언록킹한다. 메모리 모듈 (64) 의 메모리 블록들 모두의 DME 전송의 완료를 대기하지 않고, 제어 유닛 (66) 은 언록킹된 메모리 블록(들) 의 콘텐츠를 클리어하기 시작하고, 다음 프레임에 대한 파형 합이 클리어된 메모리 블록에 기록되는 것을 허용한다.
이들 기술의 결과로서, 합산 버퍼 (40) 는 프로세싱 엘리먼트들 (34) 로부터 파형 샘플을 수신하고, 파형 합의 DME 전송이 이전 프레임에 대해 여전히 진행되면서 결과의 파형 합을 소정의 프레임에 대한 메모리 모듈 (64) 에 저장할 수도 있다. 이 방식으로, 합산 버퍼 (40) 는 오디오 프로세싱 엘리먼트 (34) 로부터 파형 샘플을 효율적으로 합산하고 각 프레임에 대한 결과의 파형 합을 DSP (12) 에 제공하도록 설계된다. 본 명세서에 설명된 기술은, 프로세싱 엘리먼트 (34) 가 사용되지 않으면 DSP (12) 가 합산 버퍼 (40) 로부터 데이터를 판독하고, DSP (12) 가 사용되지 않으면 프로세싱 엘리먼트 (34) 가 합산 버퍼 (40) 에 데이터를 제공하기 때문에, 오디오 디바이스 (4, 도 1) 의 스루풋을 향상시킬 수도 있다. 합산 버퍼 (40) 는 스테레오 포맷으로 DSP (12) 에 파형 합을 제공할 수도 있다.
누산기 및 포화 로직 유닛 (62) 은, 요청으로 프로세싱 엘리먼트 (34) 로부터 수신된 신호에 응답하여 상이한 모드에서 동작할 수도 있다. 신호는 포화 및 누산을 인에이블 및 디스에이블할 수도 있다. 통상의 모드에서, 프로세싱 모듈 (34) 로부터 수신된 신호는 포화될 수 없지만 누산될 수 있다. 이 모드에서, 합산 버퍼 (40) 는 메모리 모듈 (64) 로부터 판독하고, 프로세싱 엘리먼트들 (34) 중 하나의 엘리먼트에 의해 제공된 값으로 누산하며, 그것을 포화 없이 메모리에 다시 저장한다. 포화 및 누산 모드에서, 프로세싱 엘리먼트 (34) 로부터 수신된 신호는 누산 및 포화 양자 모두를 인에이블하고, 합산 버퍼 (40) 는 파형 합을 누산하고 포화되도록 동작한다. 포화되지 않은 라이트-스루 (write-through) 모드에서, 프로세싱 엘리먼트 (34) 로부터 수신된 신호는 누산 및 포화 양자 모두를 할 수 없다. 합산 버퍼 (40) 는 메모리 모듈 (64) 의 판독을 스킵하고, 프로세싱 엘리먼트 (34) 로부터 수신된 파형 샘플의 왼쪽 및 오른쪽 채널 비트가 메모리 모듈 (64) 에 기록된다. 오버플로우 (overflow) 를 야기하는 피연산자는 결과의 합으로 하여금 롤 오버 (roll over) 하게 한다. 포화되는 라이트-스루 모드에서, 프로세싱 엘리먼트 (34) 로부터 수신된 신호는 포화될 수 있지만 누산될 수 없다. 합산 버퍼 (40) 는 메모리 모듈 (64) 의 판독을 스킵하고, 프로세싱 엘리먼트 (34) 로부터 수신된 파형 샘플의 왼쪽 및 오른쪽 채널 비트들이 메모리 모듈 (64) 에 기록된다. 오버플로우는, 비트 31:23 (오른쪽 채널에 대해 63:55) 이 모두 1 이 아니거나 모두 0 이 아닌 경우 발생하는 것으로 가정된다. 오버플로우의 경우에서, 샘플은 비트 31 (오른쪽 채널에 대해 비트 63) 에 기초하여 포지티브하게 또는 네거티브하게 포화된다.
도 5 는 합산 버퍼 (40) 에 의해 유지된 예시적인 메모리 모듈 (64) 을 나타내는 블록도이다. 도 5 의 예에서, 메모리 모듈 (64) 은 다수의 메모리 블록들 (70A-70N, 일괄하여 "메모리 블록들 (70)") 로 논리적으로 분할된다. 각 메모리 블록 (70) 은 하나 이상의 워드 (72) 를 포함할 수도 있고, 여기서 워드들 (72) 각각은 상이한 파형 합에 대응한다. 도시된 바와 같이, 메모리 블록 (70) 및 메모리 블록 (70) 내의 워드 (72) 는 메모리 모듈 (64) 의 상부로부터 저부까지 증가하는 순간에 대응할 수도 있다. 메모리 블록 (70) 은 소정의 메모리 블록 (70) 이 클리어되거나 소정 메모리 블록에 기록되는 것을 방지하기 위해 독립적으로 록킹 가능할 수도 있다. 일 예로, 메모리 모듈 (64) 은 16 개의 메모리 블록들을 포함하고, 여기서 각 메모리 블록은 32 개의 워드 (72) 로 구성되고, 각 워드 (72) 는 48 비트의 크기를 갖는다.
일 예의 구현에서, 메모리 모듈 (64) 은 하나의 오디오 프레임에 대응하는 파형 합을 저장하고, 여기서 하나의 오디오 프레임은 10 밀리세컨드의 오디오 데이터로서 정의된다. 48 kHz 의 샘플링 주파수에서, 프레임 당 파형 합의 수는 프레임 당 480 개의 파형 합일 것이다. 합산 버퍼 (40) 는 주기 당 메모리 모듈 (64) 로부터 하나의 파형 합의 가치의 데이터를 클리어할 수 있도록 설계될 수도 있다. 따라서, 48 kHz 의 샘플링 주파수에서, 합산 버퍼 (40) 는 메모리 모듈 (64) 의 전체를 클리어하도록 480 주기 중 최소 값을 취할 수 있다.
일 예로, 합산 버퍼 (40) 는, 오디오 프로세싱 엘리먼트 (34) 로부터 비트 55:32 이 24 비트 2 의 보수 (2C) 오른쪽 샘플이고 비트 23:0 이 24 비트 2C 왼쪽 샘플인 상태인 64 비트와 같은 파형 샘플을 수신한다. 누산기 및 포화 로직 유닛 (62) 은 파형 샘플로 수신된 샘플 넘버에 기초하여 MIDI 프레임에 대한 전체 파형과 연관된 적절한 순간에 수신된 파형 샘플을 추가한다. 샘플 넘버는, 파형 샘플 (즉, 2C 오른쪽 샘플 및 2C 왼쪽 샘플) 이 누산되는 위치의 주소를 나타낸다. 예를 들어, 합산 버퍼 (40) 는 메모리 모듈 (64) 내에 평파 (즉, 모든 디지털 샘플이 0 인 파) 를 초기에 저장할 수도 있다. 합산 버퍼 (40) 가 프로세싱 엘리먼트 (34) 중 하나의 엘리먼트로부터 파형 샘플을 수신할 때, 합산 버퍼 (40) 는 메모리 모듈 (64) 내에 저장된 파형의 각 샘플의 합에 파형 샘플의 각 디지털 샘플을 추가할 수 있다. 따라서, 누산기 및 포화 로직 유닛 (62) 은 소정 순간에 대응하는 (그리고 이에 따라 메모리 모듈 (64) 내의 소정 위치에 대응하는) 프로세싱 엘리먼트들 (34) 각각으로부터 수신된 모든 파형 샘플을 함께 추가하고, 이 위치에서 합을 저장한다. 이 방식으로, 합산 버퍼 (40) 는 완전한 MIDI 프레임에 대한 파형의 전체 디지털 표시를 누산 및 저장한다. 합산 버퍼 (40) 는 48 비트 워드 (72) 와 같은 메모리 모듈 (64) 내의 파형 합을 저장할 수도 있고, 각 워드 (72) 는 2C 오른쪽 채널 합 및 2C 왼쪽 채널 합을 포함한다. 예를 들어, 파형 합은, 비트 47:24 가 2C 오른쪽 채널 합이고, 비트 23:0 이 2C 왼쪽 채널 합인 상태로 메모리 모듈 (64) 내에 저장될 수도 있다.
도 6 은 본 개시물의 교시와 일치하는 예시적인 기술을 나타내는 흐름도이다. 합산 버퍼 (40) 의 제어 유닛 (66) 은 DSP (12) 로부터 요청을 수신하여, 메모리 모듈 (64) 의 콘텐츠의 직접 메모리 교환 (DME) 전송을 초기화한다 (74). 응답 시, 제어 유닛 (66) 은 메모리 모듈 (64) 을 록킹하고 (76), 이는 메모리 모듈 (64) 의 언록킹된 부분에 임의의 요청을 차단하는 효과가 있다. DME 전송이 메모리 모듈 (64) 내의 소정 메모리 블록에 대해 완료됨에 따라 (80), 제어 유닛 (66) 은 메모리 블록을 언록킹하고 (82), 이것의 콘텐츠는 DSP (12) 로 전송되었다. 메모리 모듈 (64) 의 메모리 블록들 모두의 DME 전송의 완료를 대기하지 않고, 합산 버퍼 (40) 는 언록킹된 메모리 블록(들)의 콘텐츠를 클리어하기 시작한다 (84). 제어 유닛 (66) 은 조정 모듈 (32, 도 2) 에 의한 요청에 따라 클리어 동작을 시작할 수도 있다. 제어 유닛 (66) 은, 그것이 여전히 언록킹된 메모리 블록에 도달할 때 클리어 동작을 차단한다.
조정 모듈 (32) 이 메모리 모듈 (64) 의 언록킹된 블록을 클리어하도록 합산 버퍼 (40) 에 요청할 때, 조정 모듈 (32) 은 오디오 프로세싱 엘리먼트 (34) 가 다음 오디오 프레임에 대한 파형 샘플을 누산하도록 합산 버퍼 (40) 에 요청을 전송하게 할 수 있다. 조정 모듈 (32) 은 합산 버퍼 (40) 가 클리어 동작을 실제로 수행하기 전에 프로세싱 엘리먼트 (34) 를 인에이블할 수도 있다. 합산 버퍼 (40) 는 프로세싱 엘리먼트 (34) 로부터 파형 샘플을 수신하다 (86). 합산 버퍼 (40) 는 라운드-로빈 중재기 (60) 를 통해 프로세싱 엘리먼트들 (34A-34N) 각각에 유사한 또는 동일한 인터페이스를 제공할 수도 있다. 라운드-로빈 중재기 (60) 는 라운드-로빈 방식으로 프로세싱 엘리먼트 (34) 로부터 요청을 중재하고, 차례로 요청 획득하기를 처리한다 (88). 라운드-로빈 중재기 (60) 는, 라운드 로빈 중재기 (60) 가 중재를 재오픈하는 시간에 합산 버퍼 (40) 가 현재 요청을 서비스하는 것을 완료할 때까지 중재 효력이 없는 프로세싱 엘리먼트 (34) 로부터의 요청을 차단한다 (90).
프로세싱 엘리먼트들 (34) 중 하나의 엘리먼트가 중재를 이길 때 (88 의 "예" 가지), 제어 유닛 (66) 은 프로세싱 엘리먼트 (34) 에 의한 요청과 함께 포함된 파형 샘플의 주소를 체크하여, 파형 샘플이 언록킹된 메모리 블록 또는 언록킹된 메모리 블록 내에서 벗어나는지 여부를 결정한다 (92). 예를 들어, 제어 유닛 (66) 은 메모리 모듈 (64) 내에 언록킹된 메모리 블록이 남아있는 시작 주소를 나타내는 "thermometer" 값을 록킹하기 위해 파형 샘플의 주소를 비교할 수도 있다. 비교가, 파형 샘플이 록킹된 메모리 블록 내에 있다고 나타내면, 제어 유닛 (66) 은 이 요청을 차단한다 (94).
주소가 언록킹된 메모리 블록 내에 있으면 (92 의 "예" 가지), 제어 유닛 (66) 은 누산 기능이 인에이블될 때 메모리 모듈 (64) 로 요청을 포워딩한다. 누산 기능이 디스에이블될 때, 제어 유닛 (66) 은 메모리 모듈 (64) 의 판독을 스킵하고, 수신된 파형 샘플을 메모리 모듈 (64) 에 간단히 기록한다. 전술된 바와 같이, 제어 유닛 (66) 은 프로세싱 엘리먼트 요청과 함께 수신된 신호로 나타난 바와 같은 모드에 의존하여 이 포인트에서 상이하게 동작할 수도 있다. 제어 유닛 (66) 은 현재 요청이 서비스되는 동안 다른 요청이 메모리 모듈 (64) 로 포워딩되는 것을 차단한다. 현재의 2C 채널 합이 메모리 모듈 (64) 로부터 이용 가능해질 때 (왼쪽 및 오른쪽 채널 합이 동시에 검색될 때), 누산기 및 포화 로직 유닛 (62) 은 2C 추가를 이용하여 프로세싱 엘리먼트로부터 검색된 그 대응하는 2C 채널 샘플로 각 합을 누산하고, 24 비트에서 포화될 수도 있다 (96). 라운드-로빈 중재기 (60) 는 그 다음에 프로세싱 엘리먼트들 (34) 간의 중재를 재오픈한다. 제어 유닛 (66) 은 (스톨 (stall) 을 다시 기록하지 않는다고 가정함) 메모리 모듈 (64) 에 누산된 파형 합을 기록한다 (98). 합산 버퍼 (40) 가 현재 기록되고 있는 동일한 주소에 대해 새로운 요청을 수신하는 경우에서, 메모리 모듈 (64) 은 데이터 부정 (corruption) 을 방지하도록 재기록 동작 우선순위를 준다. 명백한 동작이 현재 진행되고 재-기록이 발생하면, 메모리 모듈 (64) 은 (예를 들어, 고정된 우선순위 중재기를 이용하여) 재-기록 동작 우선순위를 준다.
모든 메모리 블록들이 DME 를 통해 판독되는 이전 프레임에 대한 DSP (12) 로 전송되고 (100의 "아니오" 가지), 기록되는 현재 프레임에 대한 메모리 모듈 (64) 에 기록될 더 이상의 샘플 합이 남아있지 않을 때 (102 의 "아니오" 가지), 조정 모듈 (32) 은 현재 프레임에 대한 메모리 모듈 (64) 의 콘텐츠의 새로운 DME 전송을 초기화하는 DSP (12) 로 인터럽트를 전송한다. DME 는, DSP (12) 가 사용되지 않고 결과로서 임의의 DME 스톨이 다음 프레임에 대해 이용 가능한 프로세싱 시간을 감소시킬 때 발생할 수도 있다.
이들 기술의 결과로서, 합산 버퍼 (40) 는 프로세싱 엘리먼트 (34) 로부터 파형 샘플을 수신하고, 파형 합의 DME 전송이 여전히 이전 프레임에 대해 진행되면서 소정 프레임에 대한 메모리 모듈 (64) 에 결과의 파형 합을 저장할 수도 있다. 이 방식으로, 합산 버퍼 (40) 는 오디오 프로세싱 엘리먼트 (34) 로부터 파형 샘플들을 효율적으로 누산하고 각 프레임에 대한 결과의 파형 합을 DSP (12) 에 제공하도록 설계된다.
각종 예들이 설명된다. 본 명세서에 설명된 기술의 하나 이상의 양태는 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에서 구현될 수도 있다. 모듈 또는 컴포넌트로서 설명된 임의의 피처들은 집적 로직 디바이스에 함께 구현되거나 이산이 아닌 상호동작 로직 디바이스로서 개별적으로 구현될 수도 있다. 소프트웨어에 구현되는 경우, 본 기술의 하나 이상의 양태들은 실행 시 전술된 하나 이상의 방법들을 수행하는 명령들을 포함하는 컴퓨터 판독가능 매체에 의해 적어도 부분적으로 실현될 수도 있다. 컴퓨터 판독가능 데이터 저장 매체는 패키징 재료를 포함할 수도 있는 컴퓨터 프로그램 제품의 부분을 형성할 수도 있다. 컴퓨터 판독가능 매체는, 동기식 동적 랜덤 액세스 메모리 (SDRAM) 와 같은 랜덤 액세스 메모리 (RAM), 판독 전용 메모리 (ROM), 비휘발성 랜덤 액세스 메모리 (NVRAM), 전기적 소거가능 프로그래머블 판독 전용 메모리 (EEPROM), 플래쉬 메모리, 자기 또는 광 데이터 저장 매체 등을 포함할 수도 있다. 이 기술은 추가로 또는 대안으로, 명령들 또는 데이터 구조물의 형태로 코드를 운반 또는 통신하고, 컴퓨터에 의해 액세스, 판독, 및/또는 실행될 수 있는 컴퓨터 판독가능 통신 매체에 의해 적어도 부분적으로 실현될 수도 있다.
명령들은 하나 이상의 디지털 신호 프로세서 (DSP), 범용 마이크로프로세서, 주문형 집적 회로 (ASIC), 필드 프로그래머블 로직 어레이 (FPGA), 또는 다른 등가의 집적 또는 이산 로직 회로와 같은 하나 이상의 프로세서들에 의해 실행될 수도 있다. 따라서, 본 명세서에 이용된 "프로세서" 라는 용어는 전술한 구조 또는 본 명세서에 설명된 기술의 구현에 적절한 임의의 다른 구조를 지칭할 수도 있다. 또한, 몇몇 양태에서, 본 명세서에 설명된 기능성은 본 개시물의 기술을 수행하기 위해 구성되거나 적응된 전용 소프트웨어 모듈 또는 하드웨어 모듈 내에 제공될 수도 있다.
하드웨어 구현되는 경우, 본 개시물의 하나 이상의 양태는 집적 회로, 칩세트, ASIC, FPGA, 로직과 같은 회로, 또는 본 명세서에 설명된 하나 이상의 기술을 수행하기 위해 구성되거나 적응된 이들의 다양한 조합에 지시될 수도 있다. 회로는 본 명세서에 설명된 바와 같이 집적 회로 또는 칩세트 내에 프로세서 및 하나 이상의 하드웨어 유닛들 양자 모두를 포함할 수도 있다.
또한, 회로가 전술된 기능들 몇몇 또는 모두를 구현할 수도 있다는 것을 당업자는 인지할 것이다. 모든 기능들을 구현하는 하나의 회로가 존재할 수도 있고, 또는 기능들을 구현하는 다수의 섹션의 회로가 존재할 수도 있다. 현재의 모바일 플랫폼 기술을 이용하여, 집적 회로는 적어도 하나의 DSP, 및 DSP를 제어하고/하거나 DSP 들과 통신하기 위해 적어도 하나의 ARM (Advanced Reduced Instruction Set Computer (RISC) Machine) 프로세서를 포함할 수도 있다. 또한, 회로는 몇몇 섹션에서 설계 또는 구현될 수도 있고, 몇몇 경우에서 섹션은 본 개시물에 설명된 상이한 기능들을 수행하기 위해 다시-이용될 수도 있다.
각종 양태들 및 실시예들이 설명되었다. 그러나, 다음의 청구항의 범위를 벗어나지 않고 본 개시물의 구조 및 기술에 대한 변형들이 만들어질 수 있다. 예를 들어, 다른 유형의 디바이스들이 또한 본 명세서에 설명된 오디오 프로세싱 기술을 구현할 수도 있다. 또한, 도 2 에 도시된 예시적인 하드웨어 유닛 (20) 이 보이스 합성에 대한 접근법에 기초하여 파동-테이블을 이용하더라도, 주파수 변조 합성 접근법을 포함하는 다른 접근법들이 또한 이용될 수 있다. 이들 및 다른 실시형태들이 다음 청구범위 내에 있다.

Claims (1)

  1. 본원 상세한 설명에 기재된 발명
KR1020127028169A 2007-03-22 2008-03-17 오디오 파일을 처리하기 위해 공유된 버퍼 관리 KR20120127747A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US89642507P 2007-03-22 2007-03-22
US60/896,425 2007-03-22
US12/041,855 US7723601B2 (en) 2007-03-22 2008-03-04 Shared buffer management for processing audio files
US12/041,855 2008-03-04
PCT/US2008/057230 WO2008115869A1 (en) 2007-03-22 2008-03-17 Shared buffer management for processing audio files

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020097022044A Division KR20090133119A (ko) 2007-03-22 2008-03-17 오디오 파일을 처리하기 위해 공유된 버퍼 관리

Publications (1)

Publication Number Publication Date
KR20120127747A true KR20120127747A (ko) 2012-11-23

Family

ID=39493419

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020097022044A KR20090133119A (ko) 2007-03-22 2008-03-17 오디오 파일을 처리하기 위해 공유된 버퍼 관리
KR1020127028169A KR20120127747A (ko) 2007-03-22 2008-03-17 오디오 파일을 처리하기 위해 공유된 버퍼 관리

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020097022044A KR20090133119A (ko) 2007-03-22 2008-03-17 오디오 파일을 처리하기 위해 공유된 버퍼 관리

Country Status (6)

Country Link
US (1) US7723601B2 (ko)
EP (1) EP2126894A1 (ko)
JP (2) JP2010522361A (ko)
KR (2) KR20090133119A (ko)
TW (1) TW200903449A (ko)
WO (1) WO2008115869A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8263849B2 (en) * 2008-12-12 2012-09-11 Young Chang Research And Development Institute Flash memory based stored sample electronic music synthesizer
JP2014092722A (ja) * 2012-11-05 2014-05-19 Yamaha Corp 音発生装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4393740A (en) * 1979-03-23 1983-07-19 The Wurlitzer Company Programmable tone generator
JPH0760422B2 (ja) * 1983-12-30 1995-06-28 株式会社日立製作所 記憶ロツク方式
US6272465B1 (en) 1994-11-02 2001-08-07 Legerity, Inc. Monolithic PC audio circuit
JP3267106B2 (ja) * 1995-07-05 2002-03-18 ヤマハ株式会社 楽音波形生成方法
US5895469A (en) 1996-03-08 1999-04-20 Vlsi Technology, Inc. System for reducing access times for retrieving audio samples and method therefor
JP3405181B2 (ja) * 1997-03-11 2003-05-12 ヤマハ株式会社 楽音発生方法
FR2762418B1 (fr) 1997-04-17 1999-06-11 Alsthom Cge Alcatel Procede de gestion d'une memoire partagee
JP3518357B2 (ja) * 1998-08-03 2004-04-12 ヤマハ株式会社 楽音生成方法、楽音生成装置及び楽音生成処理プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2001283594A (ja) * 2000-03-29 2001-10-12 Sharp Corp 不揮発性半導体記憶装置
US7378586B2 (en) * 2002-10-01 2008-05-27 Yamaha Corporation Compressed data structure and apparatus and method related thereto
JP4122968B2 (ja) 2002-12-25 2008-07-23 日本電気株式会社 共通資源へのアクセス方式、共通資源へのアクセス方法、及びプログラム
JP2005316659A (ja) * 2004-04-28 2005-11-10 Matsushita Electric Ind Co Ltd タスク間通信装置
CA2585937C (en) * 2004-10-26 2013-08-20 Richard S. Burwen Unnatural reverberation
JP4465626B2 (ja) * 2005-11-08 2010-05-19 ソニー株式会社 情報処理装置および方法、並びにプログラム
JP4973492B2 (ja) * 2007-01-30 2012-07-11 株式会社Jvcケンウッド 再生装置、再生方法及び再生プログラム
JP5228432B2 (ja) * 2007-10-10 2013-07-03 ヤマハ株式会社 素片検索装置およびプログラム

Also Published As

Publication number Publication date
KR20090133119A (ko) 2009-12-31
EP2126894A1 (en) 2009-12-02
JP2010522361A (ja) 2010-07-01
JP2013083984A (ja) 2013-05-09
US7723601B2 (en) 2010-05-25
US20080229912A1 (en) 2008-09-25
WO2008115869A1 (en) 2008-09-25
TW200903449A (en) 2009-01-16

Similar Documents

Publication Publication Date Title
JP5134078B2 (ja) 楽器ディジタルインタフェースハードウエア命令
KR101108460B1 (ko) 오디오 파일을 프로세싱하는 파형 페치 유닛
US7807915B2 (en) Bandwidth control for retrieval of reference waveforms in an audio device
JP2010522362A5 (ko)
KR20120127747A (ko) 오디오 파일을 처리하기 위해 공유된 버퍼 관리
US7663046B2 (en) Pipeline techniques for processing musical instrument digital interface (MIDI) files
US7893343B2 (en) Musical instrument digital interface parameter storage
US7663051B2 (en) Audio processing hardware elements
US7687703B2 (en) Method and device for generating triangular waves
CN101636781A (zh) 用于处理音频文件的共享缓冲器管理

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application