KR20090130863A - Midi 파일을 프로세싱하기 위한 파이프라인 기술 - Google Patents

Midi 파일을 프로세싱하기 위한 파이프라인 기술 Download PDF

Info

Publication number
KR20090130863A
KR20090130863A KR1020097022030A KR20097022030A KR20090130863A KR 20090130863 A KR20090130863 A KR 20090130863A KR 1020097022030 A KR1020097022030 A KR 1020097022030A KR 20097022030 A KR20097022030 A KR 20097022030A KR 20090130863 A KR20090130863 A KR 20090130863A
Authority
KR
South Korea
Prior art keywords
midi
files
frame
audio samples
processing
Prior art date
Application number
KR1020097022030A
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 KR20090130863A publication Critical patent/KR20090130863A/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
    • G10H1/00Details of electrophonic musical instruments
    • 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
    • G10H1/00Details of electrophonic musical instruments
    • G10H1/0033Recording/reproducing or transmission of music for electrophonic musical instruments
    • G10H1/0041Recording/reproducing or transmission of music for electrophonic musical instruments in coded form
    • G10H1/0058Transmission between separate instruments or between individual components of a musical system
    • G10H1/0066Transmission between separate instruments or between individual components of a musical system using a MIDI interface
    • 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
    • G10H7/004Instruments 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 with one or more auxiliary processor in addition to the main processing unit
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Electrophonic Musical Instruments (AREA)

Abstract

본 개시물은, MIDI (Musical Instrument Digital Interface) 포맷에 부합하는 오디오 파일을 프로세싱하기 위한 기술들을 설명한다. 특히, 범용 프로세서상에서 동작하는 소프트웨어, DSP (Digital Signal Processor) 와 관련된 펌웨어, 및 MIDI 파일 프로세싱용으로 특별히 설계된 전용 하드웨어 사이에서 MIDI 파일 프로세싱과 관련된 다양한 태스크들이 구현된다. 대안적으로, 멀티-스레드 DSP 가 범용 프로세서 및 DSP 대신에 이용될 수도 있다. 일 양태에서, 본 개시물은 제 1 프로세스를 이용하여 MIDI 파일을 파싱하고 MIDI 파일과 관련된 MIDI 이벤트들을 스케줄링하는 단계, MIDI 합성 파라미터들을 생성하기 위해 제 2 프로세스를 이용하여 MIDI 이벤트들을 프로세싱하는 단계, 및 합성 파라미터들에 기초하여 하드웨어 유닛을 이용하여 오디오 샘플들을 생성하는 단계를 포함하는 방법을 제공한다.
MIDI 파일, MIDI 이벤트, MIDI 합성 파라미터, 오디오 샘플

Description

MIDI 파일을 프로세싱하기 위한 파이프라인 기술{PIPELINE TECHNIQUES FOR PROCESSING MUSICAL INSTRUMENT DIGITAL INTERFACE (MIDI) FILES}
관련 출원
35 U.S.C §119 에 따른 우선권 주장
본 특허 출원은, 발명의 명칭이 "PIPELINE TECHNIQUES FOR PROCESSING MUSICAL INSTRUMENT DIGITAL INTERFACE (MIDI) FILES" 로 2007년 3월 22일 출원되어 본 발명의 양수인에게 양도되어 있으며, 본 명세서에 참조로서 명백하게 포함되는 미국 가출원 번호 제60/896,455호를 우선권 주장한다.
기술 분야
본 개시물은, 오디오 디바이스에 관한 것으로, 더욱 상세하게는, 미디 (MIDI; musical instrument digital interface) 파일에 기초하여 오디오 출력을 생성하는 오디오 디바이스에 관한 것이다.
배경
MIDI 는 오디오 사운드 (예를 들어, 음악, 연설, 음조 (tone), 경고음 (alert) 등) 의 재생, 통신 및/또는 창작에 이용되는 포맷이다. MIDI 포맷 재생을 지원하는 디바이스는 다양한 "보이스" 를 생성하는데 이용될 수 있는 오디오 정보의 세트들을 저장할 수도 있다. 각각의 보이스는 하나 이상의 사운드, 예를 들어, 특정 악기에 의한 음색 (musical note) 에 해당할 수도 있다. 예를 들어, 제 1 보이스는 피아노에 의해 연주된 것과 같은 미들 C (middle C) 에 해당할 수도 있고, 제 2 보이스는 트롬본에 의해 연주된 것과 같은 미들 C 에 해당할 수도 있으며, 제 3 보이스는 트롬본에 의해 연주된 것과 같은 D# 에 해당할 수도 있다. 특정 악기에 의해 연주된 것과 같이 음색를 재생하기 위해, MIDI 컴플라이언트 디바이스 (MIDI compliant device) 는 저주파수 오실레이터의 거동, 진동음 (vibrato) 과 같은 효과음 (effect), 및 사운드의 인식에 영향을 줄 수 있는 다수의 다른 오디오 특성과 같은, 다양한 오디오 특성을 구체화하는 보이스에 대한 일 세트의 정보를 포함할 수도 있다. 대부분의 임의의 사운드가 정의되고, MIDI 파일로 디스패치되고, MIDI 포맷을 지원하는 디바이스에 의해 재생될 수 있다.
MIDI 포맷을 지원하는 디바이스는, 이 디바이스가 음색을 연주 (produce) 하기 시작해야만 하는 것을 나타내는 이벤트가 발생할 때, 음색 (또는 다른 사운드) 을 연주할 수도 있다. 유사하게, 이 디바이스는, 이 디바이스가 음색의 연주를 중지해야만 하는 것을 나타내는 이벤트가 발생할 때, 음색 연주를 중지한다. 전반적인 악곡 (entire musical composition) 은, 특정 보이스가 시작 및 중지해야만 하는 때를 나타내는 이벤트들을 구체화함으로써 MIDI 포맷에 따라서 코딩될 수도 있다. 이 방식에서, 악곡은 MIDI 포맷에 따른 콤팩트 파일 포맷으로 저장되어 송신될 수도 있다.
MIDI 는 광범위한 디바이스에서 지원된다. 예를 들어, 무선 전화기 (radiotelephone) 와 같은 무선 통신 디바이스는 호출음 (ringtone) 또는 다른 오디오 출력과 같은 다운로드가능한 사운드용 MIDI 파일을 지원할 수도 있다. 또 한, Apple Computer, Inc 가 제조한 "iPod" 디바이스, 및 Microsoft Corporation 이 제조한 "Zune" 디바이스와 같은 디지털 뮤직 플레이어는 MIDI 파일 포맷을 지원할 수도 있다. MIDI 포맷을 지원하는 다른 디바이스는 다양한 뮤직 신시사이저 (music synthesizer), 무선 이동 디바이스, 직접 양방향 통신 디바이스 (종종 워키-토키로 지칭됨), 네트워크 텔레폰, 퍼스널 컴퓨터, 데스크탑 및 랩탑 컴퓨터, 워크스테이션, 위성 라디오 디바이스, 인터콤 디바이스, 라디오 방송 디바이스, 휴대용 게이밍 디바이스, 디바이스에 장착된 회로 보드, 정보 키오스크, 아동용 다양한 컴퓨터화된 장난감, 자동차, 선박 (watercraft) 및 항공기 (aircraft) 에 사용되는 온-보드 컴퓨터, 및 광범위한 다른 디바이스를 포함할 수도 있다.
개요
일반적으로, 본 개시물은 MIDI 포맷에 부합하는 오디오 파일을 처리하기 위한 기술을 설명한다. 본 명세서에 이용된 바와 같이, 용어 MIDI 파일은 MIDI 포맷에 부합하는 적어도 하나의 오디오 트랙을 포함하는 임의의 파일을 지칭한다. 본 개시물에 따르면, 소프트웨어, 펌웨어 및 하드웨어를 이용한 MIDI 파일의 효율적인 프로세싱에 대한 기술이 설명된다. 특히, 범용 프로세서에서 동작하는 소프트웨어, DSP (digital signal processor) 와 관련된 펌웨어, 및 MIDI 파일 프로세싱용으로 특정적으로 설계된 전용 하드웨어 사이에 MIDI 파일 처리와 관련된 다양한 태스크들이 구현된다. 이와 다르게, DSP 와 전용 하드웨어의 상이한 2 개의 스레드들 사이에는 MIDI 파일 프로세싱과 관련된 태스크들이 다뤄질 수도 있다.
설명된 기술은 MIDI 파일의 처리시에 개선된 효율성을 위해 파이프라이닝될 수 있다. 범용 프로세서는 제 1 프레임 (프레임 N) 에 대한 MIDI 파일을 서비스할 수도 있다. 제 1 프레임 (프레임 N) 이 DSP 에 의해 서비스될 때, 제 2 프레임 (프레임 N+1) 은 범용 프로세서에 의해 동시에 서비스될 수 있다. 제 1 프레임 (프레임 N) 이 하드웨어에 의해 서비스될 때, 제 2 프레임 (프레임 N+1) 은 DSP 에 의해 동시에 서비스될 수 있고 제 3 프레임 (프레임 N+2) 은 범용 프로세서에 의해 서비스된다. 또한, DSP 와 전용 하드웨어의 2 개의 상이한 스레드들 사이에 MIDI 파일 프로세싱과 관련된 태스크들이 구현되는 경우에, 유사한 파이프라이닝이 이용될 수도 있다.
어느 경우에서나, MIDI 파일 프로세싱은 동시에 프로세싱될 수 있는 파이프라인 단계들로 분할되는데, 이는, 효율성을 개선하고, 주어진 단계들에 필요한 컴퓨터 리소스들 (예를 들어, DSP 와 관련된 리소스들) 을 가능한 한 감소시킨다. 각각의 프레임들은 범용 프로세서에서 DSP 로, 그후, 하드웨어로, 또는 제 1 DSP 스레드에서 제 2 DSP 스레드로, 그후 하드웨어로, 다양한 파이프라인 단계들을 통과한다. 오디오 사운드가 유저에게 출력되기 전에 임의의 포스트-프로세싱이 수행될 수 있도록, 하드웨어에 의해 생성된 오디오 샘플들은, 예를 들어, 인터럽트-구동 기술을 통해 DSP 로 다시 디스패치될 수도 있다.
일 양태에서, 본 개시물은, 제 1 프로세스를 이용하여 MIDI 파일을 파싱하고 MIDI 파일과 관련된 MIDI 이벤트들을 스케줄링하는 단계, 제 2 프로세스를 이용하여 MIDI 이벤트들을 프로세싱하여 MIDI 합성 파라미터들을 생성하는 단계, 및 MIDI 합성 파라미터들에 기초하여 하드웨어 유닛을 이용하여 오디오 샘플들을 생성하는 단계를 포함하는 방법을 제공한다.
다른 양태에서, 본 개시물은, MIDI 파일을 파싱하고 MIDI 파일과 관련된 MIDI 이벤트들을 스케줄링하는 소프트웨어를 실행하는 프로세서, MIDI 이벤트를 프로세싱하여 MIDI 합성 파라미터들을 생성하는 DSP, 및 MIDI 합성 파라미터들에 기초하여 오디오 샘플들을 생성하는 하드웨어 유닛을 포함하는 디바이스를 제공한다.
다른 양태에서, 본 개시물은, MIDI 파일을 파싱하고 그 MIDI 파일에 관련된 MIDI 이벤트들을 스케줄링하는 소프트웨어 수단, MIDI 이벤트들을 프로세싱하여 MIDI 합성 파라미터들을 생성하는 펌웨어 수단, 및 MIDI 합성 파라미터들에 기초하여 오디오 샘플들을 생성하는 하드웨어 수단을 포함하는 디바이스를 제공한다.
다른 양태에서, 본 개시물은, MIDI 파일을 파싱하고 MIDI 파일과 관련된 MIDI 이벤트들을 스케줄링하는 제 1 스레드 (first thread), 및 MIDI 이벤트들을 프로세싱하여 MIDI 합성 파라미터들을 생성하는 제 2 스레드를 포함하는 멀티-스레드 DSP, 및 MIDI 합성 파라미터들에 기초하여 오디오 샘플들을 생성하는 하드웨어 유닛을 포함하는 디바이스를 제공한다.
다른 양태에서, 본 개시물은, 하나 이상의 프로세서에 의한 실행시에, 하나 이상의 프로세서가 제 1 프로세스를 이용하여 MIDI 파일을 파싱하고 MIDI 파일과 관련된 MIDI 이벤트들을 스케줄링하고, 제 2 프로세스를 이용하여 MIDI 이벤트를 프로세싱하여 MIDI 합성 파라미터들을 생성하고, 그리고, MIDI 합성 파라미터들에 기초하여 하드웨어 유닛을 이용하여 오디오 샘플을 생성하는 명령들을 포함하는 컴 퓨터-판독가능 매체를 제공한다.
다른 양태에서, 본 개시물은, 제 1 프로세스를 이용하여 MIDI 파일을 파싱하고 MIDI 파일과 관련된 MIDI 이벤트들을 스케줄링하고, 제 2 프로세스를 이용하여 MIDI 이벤트들을 프로세싱하여 MIDI 합성 파라미터들을 생성하며, MIDI 합성 파라미터들에 기초하여 하드웨어 유닛을 이용하여 오디오 샘플들을 생성하도록 구성된 회로를 제공한다.
본 개시물의 하나 이상의 양태의 세부사항이 이하의 첨부된 도면 및 상세한 설명에 설명된다. 다른 특징, 목적, 및 이점이 상세한 설명 및 도면, 그리고 청구범위로부터 명백할 것이다.
도면의 간단한 설명
도 1 은 본 개시물의 기술을 구현할 수도 있는 예시적인 오디오 디바이스를 도시하는 블록도이다.
도 2 는 MIDI 파일의 효율적인 프로세싱을 위해 파이프라이닝될 수 있는, 제 1 프로세서 (또는 제 1 스레드), 제 2 프로세서 (또는 제 2 스레드) 및 MIDI 하드웨어를 도시하는 블록도이다.
도 3 은 MIDI 하드웨어의 일 예시의 더욱 상세한 블록도이다.
도 4 는 본 개시물의 교시에 부합하는 예시적인 기술을 설명하는 흐름도이다.
상세한 설명
본 개시물은 MIDI (musical instrument digital interface) 포맷에 부합하는 오디오 파일을 프로세싱하기 위한 기술을 설명한다. 본 명세서에 이용된 바와 같이, 용어 MIDI 파일은 MIDI 포맷에 부합하는 적어도 하나의 트랙을 포함하는 임의의 파일을 지칭한다. MIDI 트랙을 포함할 수도 있는 다양한 파일 포맷의 예시의 몇몇을 나열한다면 CMX, SMAF, XMF, SP-MIDI 를 포함한다. CMX 는 Qualcomm Inc. 에서 개발한 Compact Media Extensions 를 의미한다. SMAF 는 Yamaha Corp. 에서 개발한 Synthetic Music Mobile Application Format 을 의미한다. XMF 는 eXtensible Music Format 을 의미하고, SP-MIDI 는 Scalable Polyphony MIDI 를 의미한다.
이하 더욱 상세하게 후술된 바와 같이, 본 개시물은, 범용 프로세서에서 동작하는 소프트웨어, 디지털 신호 프로세서 (DSP) 와 관련된 펌웨어, 그리고 MIDI 파일 프로세싱용으로 특별히 설계된 전용 하드웨어 사이에서 MIDI 파일 프로세싱과 관련된 다양한 태스크들이 구현된 기술을 제공한다. 설명된 기술은 MIDI 파일의 프로세싱에서의 개선된 효율성을 위해 파이프라이닝될 수 있다.
범용 프로세서는 MIDI 파일을 파싱하고 MIDI 파일과 관련된 MIDI 이벤트들을 스케줄링하는 소프트웨어를 실행할 수도 있다. 그후, 스케줄링된 이벤트들은, MIDI 파일의 타이밍 파라미터에 의해 특정되는 바와 같은 동기화 방식으로 DSP 에 의해 서비스될 수 있다. 범용 프로세서는 타임-동기화 방식으로 MIDI 이벤트들을 DSP 에 디스패치 (dispatch) 하고, DSP 는 MIDI 합성 파라미터들을 생성하기 위해 타임-동기화 스케줄에 따라서 MIDI 이벤트들을 프로세싱한다. 다음으로, DSP 는 하드웨어에서 MIDI 합성 파라미터들의 프로세싱을 스케줄링하고, 하드웨어 유닛은 MIDI 합성 파라미터들에 기초하여 오디오 샘플들을 생성할 수 있다.
범용 프로세서는 제 1 프레임 (프레임 N) 에 대한 MIDI 파일을 서비스할 수도 있고, 제 1 프레임 (프레임 N) 이 DSP 에 의해 서비스될 때, 제 2 프레임 (프레임 N+1) 이 범용 프로세서에 의해 동시에 서비스될 수 있다. 또한, 제 1 프레임 (프레임 N) 이 하드웨어에 의해 서비스될 때, 제 2 프레임 (프레임 N+1) 이 DSP 에 의해 동시에 서비스되면서, 제 3 프레임 (프레임 N+2) 이 범용 프로세서에 의해 서비스된다. 이 방식으로, MIDI 파일 프로세싱은 동시에 프로세싱될 수 있는 파이프라인 단계들로 분리되고, 이는, 효율성을 개선시키고, 주어진 단계들에 필요한 컴퓨터 리소스들 (예를 들어, DSP 와 관련된 리소스들) 을 가능한 한 감소시킬 수 있다. 각각의 프레임은 다양한 파이프라인 단계들을 범용 프로세서에서 DSP 로 그후 하드웨어로 통과시킨다. 몇몇 경우, 임의의 포스트-프로세싱이 수행될 수도 있도록, 하드웨어에 의해 발생된 오디오 샘플들이, 예를 들어, 인터럽트-구동된 기술을 통해서 DSP 로 다시 전달될 수도 있다. 다음으로, 오디오 샘플들이 아날로그 신호로 변환될 수도 있는데, 이 아날로그 신호는 스피커를 구동하고 오디오 사운드를 유저에게 출력하도록 이용될 수 있다.
이와 다르게, MIDI 파일 프로세싱과 관련된 태스크들이 DSP 와 전용 하드웨어의 2 개의 상이한 스레드들 사이에 구현될 수 있다. 즉, (여기 설명된 것과 같은) 범용 프로세서와 관련된 태스크들이 멀티-스레드 DSP 의 제 1 스레드에 의해 대안적으로 실행될 수 있다. 이 경우, DSP 의 제 1 스레드는 스케줄링을 실행하고, DSP 의 제 2 스레드는 MIDI 합성 파라미터를 생성하며, 하드웨어 유닛은 MIDI 합성 파라미터에 기초하여 오디오 샘플들을 생성한다. 이 대안적인 예시는 또한 스케줄링에 대해 범용 프로세서를 사용하는 예시와 유사한 방식으로 파이프라이닝될 수도 있다.
도 1 은 예시적인 오디오 디바이스 (4) 를 도시하는 블록도이다. 오디오 디바이스 (4) 는 MIDI 파일 (예를 들어, 적어도 하나의 MIDI 트랙을 포함하는 파일) 을 프로세싱할 수 있는 임의의 디바이스를 포함할 수도 있다. 오디오 디바이스 (4) 의 예시는 무선 전화기, 네트워크 텔레폰, 디지털 뮤직 플레이어, 뮤직 신시사이저, 무선 이동 디바이스, 직접 양방향 통신 디바이스 (종종 워키-토키로 지칭됨), 퍼스널 컴퓨터, 데스크탑 또는 랩탑 컴퓨터, 워크스테이션, 위성 라디오 디바이스, 인터콤 디바이스, 라디오 브로드캐스팅 디바이스, 휴대용 게이밍 디바이스, 디바이스에 장착된 회로 보드, 키오스크 디바이스, 비디오 게임 콘솔, 아동용 다양한 컴퓨터화된 장난감, 자동차, 선박 또는 항공기에 사용된 온-보드 컴퓨터와 같은 무선 통신 디바이스, 또는 광범위한 다양한 다른 디바이스를 포함한다.
본 개시물의 양태들을 설명하기 위해 도 1 에 도시된 다양한 컴포넌트들이 제공된다. 그러나, 다른 컴포넌트들이 존재할 수도 있고, 도시된 컴포넌트들 중 몇몇은 일부 구현에는 포함되지 않을 수도 있다. 예를 들어, 오디오 디바이스 (4) 가 무선 전화기인 경우, 오디오 파일의 무선 통신을 용이하게 하기 위해 안테나, 송신기, 수신기 및 모뎀 (변조기-복조기) 이 포함될 수도 있다.
도 1 의 예시에 설명된 바와 같이, 오디오 디바이스 (4) 는 MIDI 파일을 저장하기 위해 오디오 저장 유닛 (6) 을 포함한다. 또한, MIDI 파일은 일반적으 로 MIDI 포맷으로 코딩된 적어도 하나의 트랙을 포함하는 임의의 오디오 파일을 지칭한다. 오디오 저장 유닛 (6) 은 임의의 휘발성 또는 불휘발성 메모리 또는 저장매체를 포함한다. 본 발명의 목적을 위해, 오디오 저장 유닛 (6) 은 MIDI 파일을 프로세서 (8) 로 포워딩하는 저장 유닛으로서 관찰될 수 있고, 또는 프로세서 (8) 는 파일을 프로세싱하기 위해 오디오 저장 유닛 (6) 으로부터 MIDI 파일을 회수한다. 물론, 오디오 저장 유닛 (6) 은 디지털 뮤직 플레이어와 관련된 저장 유닛 또는 다른 디바이스로부터의 정보 전송과 관련된 임시 저장 유닛일 수 있다. 오디오 저장 유닛 (6) 은 데이터 버스 또는 다른 연결을 통해서 프로세서 (8) 에 커플링된 별개의 휘발성 메모리 칩 또는 불휘발성 저장 디바이스일 수도 있다. 메모리 또는 저장 디바이스 제어기 (미도시) 가 포함되어 오디오 저장 유닛 (6) 으로부터의 정보의 전송을 용이하게 할 수도 있다.
본 개시물에 따르면, 디바이스 (4) 는 소프트웨어, 하드웨어 및 펌웨어 사이에서 MIDI 프로세싱 태스크들을 분리하는 아키텍쳐를 구현한다. 특히, 디바이스 (4) 는 프로세서 (8), DSP (12) 및 MIDI 하드웨어 유닛 (14) 을 포함한다. 각각의 이러한 컴포넌트들은 예를 들어, 직접적으로 또는 버스를 통해서 메모리 유닛 (10) 에 커플링될 수도 있다. 프로세서 (8) 는 MIDI 파일을 파싱하고 MIDI 파일과 관련된 MIDI 이벤트들을 스케줄링하는 소프트웨어를 실행하는 범용 프로세서를 포함할 수도 있다. 스케줄링된 이벤트들은 타임-동기화 방식으로 DSP (12) 에 디스패치될 수 있고, 이에 따라, MIDI 파일의 타이밍 파라미터에 의해 특정되는 동기화 방식으로 DSP (12) 에 의해 서비스될 수 있다. DSP (12) 는 MIDI 합성 파라미터들을 생성하기 위해 범용 프로세서 (8) 에 의해 생성된 타임-동기화된 스케줄에 따라서 MIDI 이벤트들을 프로세싱한다. 또한, DSP (12) 는 MIDI 하드웨어 유닛 (14) 에 의해 MIDI 합성 파라미터들의 후속 프로세싱을 스케줄링할 수도 있다. MIDI 하드웨어 유닛 (14) 은 MIDI 합성 파라미터들에 기초하여 오디오 샘플들을 생성한다.
프로세서 (8) 는 광범위하게 다양한 범용 단일- 또는 다수-칩 마이크로프로세서들 중 임의의 것을 포함할 수도 있다. 프로세서 (8) 는 CISC (Complex instruction Set Computer) 디자인 또는 RISC (Reduced Instruction Set Computer) 디자인을 구현할 수도 있다. 일반적으로, 프로세서 (8) 는 소프트웨어를 실행하는 CPU (central processing unit) 를 포함한다. 이에 대한 예시는, Intel Corporation, Apple Computer, Inc, Sun Microsystems Inc., Advanced Micro Devices (AMD) Inc., 등과 같은 회사들로부터의 16-비트, 32-비트 또는 64-비트 마이크로프로세서들을 포함한다. 다른 예시는, International Business Machines (IBM) Corporation, RedHat Inc. 등과 같은 회사들로부터의 Unix- 또는 Linux-계 마이크로프로세서들을 포함한다. 범용 프로세서는, ARM Inc. 로부터 시판중인 ARM9 을 포함할 수도 있고, DSP 는 Qualcomm Inc. 가 개발한 QDSP4 DSP 를 포함할 수도 있다.
프로세서 (8) 는 제 1 프레임 (프레임 N) 에 대한 MIDI 파일을 서비스할 수도 있고, 제 1 프레임 (프레임 N) 이 DSP (12) 에 의해 서비스된 경우, 제 2 프레임 (프레임 N+1) 이 프로세서 (8) 에 의해 동시에 서비스될 수 있다. 제 1 프 레임 (프레임 N) 이 MIDI 하드웨어 유닛 (14) 에 의해 서비스될 때, 제 2 프레임 (N+1) 이 DSP (12) 에 의해 동시에 서비스되면서, 제 3 프레임 (프레임 N+2) 이 프로세서 (8) 에 의해 서비스된다. 이 방식으로, MIDI 파일 프로세싱은 동시에 프로세싱될 수 있는 파이프라인 단계들로 분리되고, 이는, 효율성을 개선시킬 수 있고, 주어진 단계들에 필요한 컴퓨터 리소스들을 가능한 한 감소시킬 수 있다. DSP (12) 는, 예를 들어, 프로세서 (8) 또는 MIDI 하드웨어 (14) 의 도움없이 완전한 MIDI 알고리즘을 실행하는 종래의 DSP 에 비해 간략화될 수도 있다.
몇몇 경우, MIDI 하드웨어 (14) 에 의해 생성된 오디오 샘플들은, 예를 들어, 인터럽트-구동 기술을 통해서, DSP (12) 로 다시 보내진다. 이 경우, DSP 는 오디오 샘플들에 대한 포스트-프로세싱 기술을 수행할 수도 있다. DAC (16) 는 디지털인 오디오 샘플들을, 구동 회로 (18) 에 의해 사용될 수 있는 아날로그 신호들로 변환하여 오디오 사운드를 유저에게 출력하기 위해 스피커 (19A 및 19B) 를 구동시킨다.
각각의 오디오 프레임에 대해, 프로세서 (8) 는 하나 이상의 MIDI 파일을 판독하고, MIDI 파일들로부터 MIDI 명령을 추출할 수도 있다. 이들 MIDI 명령에 기초하여, 프로세서 (8) 는 DSP (12) 에 의한 프로세싱을 위해 MIDI 이벤트들을 스케줄링하고, 이 스케줄링에 따라서 MIDI 이벤트들을 DSP (12) 로 디스패치한다. 특히, 프로세서 (8) 에 의한 이 스케줄링은, MIDI 파일로 특정된 타이밍 파라미터들에 기초하여 식별될 수 있는, MIDI 이벤트들과 관련된 타이밍의 동기화를 포함한다. MIDI 파일의 MIDI 명령은 특정 MIDI 보이스의 시작 또는 중지를 명령할 수 도 있다. 다른 MIDI 명령은 애프터터치 효과 (aftertouch effect), 브래쓰 제어 효과 (breath control effect), 프로그램 변화, 피치 벤드 효과 (pitch bend effect), 팬 레프트 또는 팬 라이트 (pan left or right) 와 같은 시스템 메세지, 서스테인 페달 효과 (sustain pedal effect), 주요 볼륨 제어 (main volume control), 타이밍 파라미터들과 같은 시스템 메세지, 라이팅 효과 큐 (lighting effect cue) 와 같은 MIDI 제어 메세지, 및/또는 다른 사운드 효과에 관련될 수도 있다. MIDI 이벤트들을 스케줄링한 후, DSP (12) 가 이벤트들을 프로세싱할 수 있도록, 프로세서 (8) 는 이 스케줄링을 메모리 (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) 가 이러한 스케줄링 태스크를 수행할 필요성을 제거함으로써 효율성을 창출한다. 이에 따라, DSP (12) 는, 프로세서 (8) 가 다음 오디오 프레임에 대한 MIDI 이벤트를 스케줄링하는 동안, 제 1 오디오 프레임에 대한 MIDI 이벤트를 서비스할 수 있다. 오디오 프레임은, 몇몇 오디오 샘플들을 포함할 수도 있는, 타임의 블록 (예를 들어, 10 밀리초 (ms) 간격) 을 포함할 수도 있다. 예를 들어, 디지털 출력은 프레임 당 480 샘플들을 결과로 초래하고, 이 출력은 아날로그 오디오 신호로 변환될 수 있다. 많은 음색 또는 사운드가 MIDI 포맷에 따라서 하나의 타임 인스턴스 (one instance of time) 에 포함될 수 있도록, 수많은 이벤트들이 하나의 타임 인스턴스에 대응할 수도 있다. 물론, 임의의 오디오 프레임에 구현된 타임의 양, 뿐만 아니라 프레임당 샘플들의 수는 상이한 구현으로 변경될 수도 있다.
DSP (12) 가 MIDI 합성 파라미터들을 생성하면, MIDI 하드웨어 유닛 (14) 은 MIDI 합성 파라미터들에 기초하여 오디오 샘플들을 생성한다. DSP (12) 는 MIDI 하드웨어 유닛 (14) 에 의해 MIDI 합성 파라미터의 프로세싱을 스케줄링할 수 있다. MIDI 하드웨어 유닛 (14) 에 의해 생성된 오디오 샘플은 펄스-코드 변조 (PCM) 샘플들을 포함할 수도 있는데, 이 샘플들은 규칙적인 간격으로 샘플링된 아날로그 신호의 디지털 표현이다. MIDI 하드웨어 유닛 (14) 에 의한 예시적인 오디오 생성의 추가적인 상세는 도 3 을 참조하여 이하 설명된다.
몇몇 경우에, 오디오 샘플들에 포스트-프로세싱이 수행되어야 할 필요가 있을 수도 있다. 이 경우, MIDI 하드웨어 유닛 (14) 은 인터럽트 커맨드를 DSP (12) 에 전송하여 DSP (12) 가 이러한 포스트-프로세싱을 수행하도록 명령할 수 있 다. 포스트-프로세싱은, 최종적으로 사운드 출력을 강화할 수도 있는, 필터링, 스케일링, 볼륨 조절, 또는 광범위한 다양한 오디오 포스트-프로세싱을 포함할 수도 있다.
포스트-프로세싱에 이어, DSP (12) 는 포스트-프로세싱된 오디오 샘플들을 디지털-아날로그 변환기 (DAC) (16) 에 출력할 수도 있다. DAC (16) 는 디지털 오디오 신호를 아날로그 신호로 변환하고, 이 아날로그 신호를 구동 회로 (18) 에 출력한다. 구동 회로 (18) 는 이 하나 이상의 스피커 (19A 및 19B) 를 구동하도록 그 신호를 증폭시켜 가청음 (audible sound) 을 생성할 수도 있다.
도 2 는, MIDI 파일의 효율적인 프로세싱을 위해 파이프라이닝될 수 있는, 제 1 프로세서 (또는 제 1 스레드) (8B), 제 2 프로세서 (또는 제 2 스레드) (12B) 및 MIDI 하드웨어 유닛 (14B) 을 도시하는 블록도이다. 프로세서 (또는 스레드) (8B 및 12B) 및 MIDI 하드웨어 유닛 (14B) 은 도 1 의 프로세서 (8), DSP (12) 및 유닛 (14) 에 대응할 수도 있다. 이와 다르게, 엘리먼트 (8B 및 12B) 는 멀티-스레드 DSP 에서 실행된 2 개의 상이한 프로세싱 스레드 (상이한 프로세스) 에 대응할 수도 있다. 이 경우, DSP 의 제 1 스레드는 스케줄링을 실행하고, DSP 의 제 2 스레드는 합성 파라미터들을 생성하고, 하드웨어 유닛은 합성 파라미터들에 기초한 오디오 샘플을 생성한다. 또한, 다른 예시들이 스케줄링을 위해 범용 프로세서를 이용하는 예시와 유사한 방식으로 파이프라이닝될 수도 있다.
도 2 에 도시된 바와 같이, 제 1 프로세서 (또는 제 1 스레드) (8B) 는 파일 파서 모듈 (22) 및 이벤트 스케줄러 모듈 (24) 을 실행한다. 파일 파서 모듈 (22) 은 MIDI 파일을 파싱하여 MIDI 파일에서 스케줄링이 필요한 MIDI 이벤트들을 식별한다. 즉, 파일 파서는 MIDI 파일을 검사하여 스케줄링이 필요한 MIDI 이벤트들을 나타내는 타이밍 파라미터들을 식별한다. 그후, 이벤트 스케줄러 모듈 (24) 은 제 2 프로세서 (또는 제 2 스레드) (12B) 에 의한 서비스를 위해 이벤트들을 스케줄링한다. 이벤트 스케줄러 모듈 (24) 에 의해 정의된 바와 같이, 제 1 프로세서 (또는 제 1 스레드) (8B) 는 스케줄링된 MIDI 이벤트들을 타임-동기화 방식으로 제 2 프로세서 (또는 제 2 스레드) (12B) 에 디스패치한다.
제 2 프로세서 (또는 제 2 스레드) (12B) 는 MIDI 합성 모듈 (25), 하드웨어 제어 모듈 (26) 및 포스트-프로세싱 모듈 (28) 을 포함한다. MIDI 합성 모듈 (25) 은, 제 2 프로세서 (또는 제 2 스레드) (12B) 가 MIDI 이벤트들에 기초하여 합성 파라미터들을 생성하게 하는 실행가능 명령을 포함한다. 그러나, 제 1 프로세서 (또는 제 1 스레드) (8B) 는 MIDI 이벤트를 스케줄링하고, 이 스케줄링 태스크는 제 2 프로세서 (또는 제 2 스레드) (12B) 에 의한 합성 파라미터 생성의 속도를 늦추지 않는다.
하드웨어 제어 모듈 (26) 은 MIDI 하드웨어 유닛 (14) 의 동작을 제어하기 위한 제 2 프로세서 (또는 제 2 스레드) (12B) 에 의해 실행된 소프트웨어 제어이다. 하드웨어 제어 모듈 (26) 은 MIDI 하드웨어 유닛 (14) 에 커맨드를 이슈하고, MIDI 하드웨어 유닛 (14) 에 의한 합성 파라미터들의 서비스를 스케줄링할 수도 있다. 포스트-프로세싱 모듈 (28) 은, MIDI 하드웨어 유닛 (14B) 에 의해 생성된 오디오 샘플들에 대해 임의의 포스트-프로세싱을 수행하기 위해 제 2 프로 세서 (또는 제 2 스레드) (12B) 에 의해 실행된 소프트웨어 모듈이다.
제 2 프로세서 (또는 제 2 스레드) (12B) 가 합성 파라미터들을 생성하면, MIDI 하드웨어 유닛 (14B) 은 이들 합성 파라미터들을 이용하여 오디오 샘플들을 생성하고, 이 오디오 샘플들은 포스트-프로세싱된 후 이용되어 스피커를 구동할 수 있다. 특정 MIDI 하드웨어 유닛 (14C) 의 일 구현의 더욱 상세한 설명은 도 3 을 참조하여 이하 설명된다. 그러나, 다른 MIDI 하드웨어 구현도 본 개시물의 교시와 일치하도록 정의될 수 있다. 예를 들어, 도 3 에 도시된 MIDI 하드웨어 유닛 (14C) 이 보이스 합성으로의 파장 테이블-계 접근 방식을 이용한다고 할지라도, 주파수 변조 합성 접근법을 포함하는 다른 접근법이 이용될 수 있다.
중요하게, 도 2 에 도시된 컴포넌트들, 즉, 제 1 프로세서 (또는 제 1 스레드) (8B), 제 2 프로세서 (또는 제 2 스레드) (12B) 및 MIDI 하드웨어 유닛 (14B) 은 파이프라인 방식으로 작용한다. 구체적으로, 제 1 프레임 (예를 들어, 프레임 N) 이 하드웨어 유닛 (14B) 에 의해 서비스되는 중일 때, 제 2 프레임 (예를 들어, 프레임 N+1) 은 제 2 프로세서 (또는 제 2 스레드) (12B) 에 의해 서비스되고, 제 3 프레임 (예를 들어, 프레임 N+2) 이 제 1 프로세서 (또는 제 1 스레드) (8B) 에 의해 서비스되도록, 오디오 프레임은 이 프로세싱 파이프라인을 따라서 통과한다. 3-스테이지 구현에서, 범용 프로세서, DSP 및 MIDI 하드웨어 유닛 (또는, 이와 다르게, 제 1 DSP 스레드, 제 2 DSP 스레드, 및 MIDI 하드웨어 유닛) 을 이용하는 MIDI 파일의 이러한 파이프라인 프로세싱은 MIDI 파일을 포함하는 오디오 프레임의 프로세싱에 효율성을 제공할 수 있다.
도 3 은, 오디오 디바이스 (4) 의 오디오 하드웨어 유닛 (14) 에 대응할 수도 있는, 예시적인 MIDI 하드웨어 유닛 (14C) 을 도시하는 블록도이다. 도 3 에 나타낸 구현은 단순히 예시적이고, 다른 하드웨어 구현 또한 본 개시물의 교시와 일치하도록 정의될 수 있다. 도 3 의 예시에 도시된 바와 같이, MIDI 하드웨어 유닛 (14C) 은 데이터를 전송 및 수신하기 위해 버스 인터페이스 (30) 를 포함한다. 예를 들어, 버스 인터페이스 (30) 는 AMBA 고성능 버스 (AHB; AMBA High-performance Bus) 마스터 인터페이스, AHB 슬레이브 인터페이스, 및 메모리 버스 인터페이스를 포함할 수도 있다. AMBA 는 진보된 마이크로프로세서 버스 아키텍쳐 (advanced microprocessor bus architecture) 를 의미한다. 이와 다르게, 버스 인터페이스 (30) 는 AXI 버스 인터페이스, 또는 다른 유형의 버스 인터페이스를 포함할 수도 있다. AXI 는 진보된 확장가능한 인터페이스 (advanced extensible interface) 를 의미한다.
또한, MIDI 인터페이스 유닛 (14C) 은 조정 모듈 (32; coordination module) 을 포함할 수도 있다. 조정 모듈 (32) 은 MIDI 하드웨어 유닛 (14C) 내의 데이터 흐름을 조정한다. MIDI 하드웨어 유닛 (14C) 은 DSP (12) (도 1) 로부터 명령을 수신하여 오디오 샘플들을 합성하기 시작하며, 조정 모듈 (32) 은 메모리 (10) 로부터의 오디오 프레임에 대해 (DSP (12) (도 1) 에 의해 생성된) 합성 파라미터들을 판독한다. 이들 합성 파라미터들은 오디오 프레임을 복원하기 위해 이용될 수 있다. MIDI 포맷에 대해, 합성 파라미터들은 주어진 프레임 내의 하나 이상의 MIDI 보이스의 다양한 음향 특성 (sonic characteristic) 을 설명한다. 예를 들어, 일 세트의 MIDI 합성 파라미터들은 하나 이상의 보이스에 영향을 줄 수 있는, 공진 (resonance), 반향음 (reverberation), 볼륨 (volume), 및/또는 다른 특성을 구체화할 수도 있다.
조정 모듈 (32) 의 방향으로, 메모리 (10) (도 1) 로부터 각각의 프로세싱 엘리먼트 (34A 또는 34N) 와 관련된 보이스 파라미터 세트 (VPS) RAM 유닛 (46A 또는 46N) 으로 합성 파라미터들이 로딩될 수도 있다. DSP (12) (도 1) 의 방향으로, 메모리 (10) 로부터 각각의 프로세싱 엘리먼트 (34A 또는 34N) 과 관련된 프로그램 RAM 유닛 (44A 또는 44N) 으로 프로그램 명령이 로딩된다.
프로그램 RAM 유닛 (44A 또는 44N) 으로 로딩된 명령은 관련 프로세싱 엘리먼트 (34A 또는 34N) 에 VPS RAM 유닛 (46A 또는 46N) 의 합성 파라미터의 리스트에 표시된 보이스들 중 하나를 합성하도록 명령한다. 여기서, 임의의 수의 프로세싱 엘리먼트들 (34A 내지 34N) (집합적으로, "프로세싱 엘리먼트 (34)") 이 있을 수도 있고, 이들 각각은 수학적인 연산을 수행할 수 있는 하나 이상의 ALU 뿐만 아니라 데이터를 판독 및 기록하기 위한 하나 이상의 유닛을 포함할 수도 있다. 간략함을 위해 2 개의 프로세싱 엘리먼트 (34A 및 34N) 만이 도시되었지만, 그 이상의 프로세싱 엘리먼트들이 MIDI 하드웨어 유닛 (14C) 에 포함될 수도 있다. 프로세싱 엘리먼트 (34) 는 서로 병렬로 보이스들을 합성할 수도 있다. 특히, 복수의 상이한 프로세싱 엘리먼트 (34) 는 상이한 합성 파라미터들을 프로세싱하기 위해 병렬로 동작한다. 이 방식으로, MIDI 하드웨어 유닛 (14C) 내의 복수의 프로세싱 엘리먼트들 (34) 이 오디오 샘플들의 생성을 가속화할 수 있고 가능하면 개선할 수 있다.
조정 모듈 (32) 이 프로세싱 엘리먼트들 (34) 중 하나의 프로세싱 엘리먼트에 보이스를 합성하라고 명령하는 경우, 각각의 프로세싱 엘리먼트는 합성 파라미터와 관련된 하나 이상의 명령을 실행할 수도 있다. 또한, 이러한 명령은 프로그램 RAM 유닛 (44A 또는 44N) 으로 로딩될 수도 있다. 프로그램 RAM 유닛 (44A 또는 44N) 으로 로딩된 명령은 프로세싱 엘리먼트들 (34) 의 각각의 엘리먼트들이 보이스 합성을 수행하게 한다. 예를 들어, 프로세싱 엘리먼트들 (34) 은 합성 파라미터에서 특정된 파형에 대한 파형 페치 유닛 (WFU; waveform fetch unit) (36) 에 요청을 전송한다. 각각의 프로세싱 엘리먼트 (34) 는 WFU (36) 를 사용할 수도 있다. 중재 방안 (arbitration scheme) 이 이용되어, 2 개 이상의 프로세싱 엘리먼트들 (34) 이 동시에 WFU (36) 의 사용을 요청하는 경우의 임의의 충돌을 해결할 수도 있다.
프로세싱 엘리먼트들 (34) 중 하나의 프로세싱 엘리먼트로부터의 요청에 응답하여, WFU (36) 는 하나 이상의 파형 샘플을 요청하는 프로세싱 엘리먼트에 반환한다. 그러나, 파장이 샘플 내에서, 예를 들어, 파장의 일 주기까지 만큼 위상-시프팅될 수 있기 때문에, WFU (36) 는 보간 (interpolation) 을 이용하여 위상 시프팅에 대해 보상하기 위해 2 개의 샘플을 반환할 수도 있다. 또한, 스테레오 신호는 2 개의 스테레오 채널에 대한 2 개의 분리된 파장들을 포함할 수도 있기 때문에, WFU (36) 은 상이한 채널에 대한 별개의 샘플들을 반환, 예를 들어, 스테레오 출력을 위한 4 개의 별개의 샘플들까지 초래할 수도 있다.
WFU (36) 가 프로세싱 엘리먼트들 (34) 중 하나의 프로세싱 엘리먼트에 오디오 샘플을 반환한 후, 각각의 프로세싱 엘리먼트는 합성 파라미터에 기초한 추가적인 프로그램 명령을 실행할 수도 있다. 특히, 명령은 프로세싱 엘리먼트들 (34) 중 하나의 프로세싱 엘리먼트가 MIDI 하드웨어 유닛 (14C) 의 저주파수 오실레이터 (LFO) (38) 로부터 비대칭 삼각파 (asymmetric triangular wave) 를 요청하도록 야기한다. LFO (38) 에 의해 반환된 삼각파와 WFU (36) 에 의해 반환된 파형을 승산함으로써, 각각의 프로세싱 엘리먼트는 파형의 다양한 음향 특성을 조작하여 원하는 오디오 효과를 달성할 수도 있다. 예를 들어, 파형과 삼각파를 승산하는 것은 원하는 음악 악기에 더욱 가깝게 사운드를 내는 파형을 결과로 도출할 수도 있다.
합성 파라미터에 기초하여 실행된 다른 명령은 프로세싱 엘리먼트들 (34) 중 각각의 프로세싱 엘리먼트들로 하여금 정해진 횟수로 파형을 루프 (loop) 하고, 그 파형의 진폭을 조절하고, 반향음을 추가하고, 진동 효과를 추가하고, 또는 다른 효과를 유발하게 유도할 수도 있다. 이 방식에서, 프로세싱 엘리먼트들 (34) 은 하나의 MIDI 프레임이 끝까지 지속되는 보이스에 대한 파형을 계산할 수 있다. 결국, 각각의 프로세싱 엘리먼트가 종료 명령 (exit instruction) 에 직면할 수도 있다. 프로세싱 엘리먼트들 (34) 중 하나의 프로세싱 엘리먼트가 종료 명령에 직면할 때, 그 프로세싱 엘리먼트는 보이스 합성의 결말 (end) 을 조정 모듈 (32) 에 시그널링한다. 그후, 합산 버퍼 (40; summer buffer) 가 그 계산된 보이스 파형을 저장하게 하는 다른 저장 명령의 방향에서, 계산된 보이스 파형이 합 산 버퍼 (40) 에 제공될 수 있다. 프로그램 명령의 실행 도중에 다른 저장 명령의 방향으로 합산 버퍼 (40) 에 계산된 보이스 파형이 제공될 수 있다. 이는, 합산 버퍼 (40) 가 그 계산된 보이스 파형을 저장하게 한다.
합산 버퍼 (40) 가 프로세싱 엘리먼트들 (34) 중 하나의 프로세싱 엘리먼트로부터 계산된 파형을 수신할 때, 합산 버퍼 (40) 는 그 계산된 파형을 MIDI 프레임에 대한 전체 파형과 관련된 적당한 타임 인스턴스에 추가한다. 이에 따라, 합산 버퍼 (40) 는 복수의 프로세싱 엘리먼트 (34) 의 출력들을 결합한다. 예를 들어, 합산 버퍼 (40) 는 평면파 (flat wave) (즉, 모든 디지털 샘플들이 0 인 파장) 를 초기에 저장할 수도 있다. 합산 버퍼 (40) 가 프로세싱 엘리먼트들 (34) 중 하나의 프로세싱 엘리먼트로부터 계산된 파형과 같은 오디오 정보를 수신할 때, 합산 버퍼 (40) 는 계산된 파형의 각각의 디지털 샘플을 합산 버퍼 (40) 에 저장된 파형의 각각의 샘플들에 가산할 수 있다. 이 방식으로, 합산 버퍼 (40) 는 전체 오디오 프레임에 대한 파형의 전반적인 디지털 표현을 누산하고 저장한다.
합산 버퍼 (40) 는 프로세싱 엘리먼트들 (34) 의 서로 상이한 프로세싱 엘리먼트들로부터 상이한 오디오 정보를 본질적으로 합산한다. 상이한 오디오 정보는 상이한 생성 보이스에 관련된 상이한 타임 인스턴스들을 나타낸다. 이러한 방식으로, 합산 버퍼 (40) 는 주어진 오디오 프레임 내에 전반적인 오디오 컴필레이션 (audio compilation) 을 나타내는 오디오 샘플들을 생성한다.
프로세싱 엘리먼트 (34) 는 서로 병렬로, 또한 개별적으로 동작할 수도 있다. 즉, 첫 번째 합성 파라미터에 대해 생성된 오디오 정보가 합산 버퍼 (40) 에 가산되면, 각각의 프로세싱 엘리먼트 (34) 는 합성 파라미터들을 프로세싱한 후, 다음의 합성 파라미터로 진행할 수도 있다. 따라서, 각각의 프로세싱 엘리먼트 (34) 는 다른 프로세싱 엘리먼트들 (34) 의 독립적인 하나의 합성 파라미터에 대한 그 프로세싱 태스크를 수행하고, 그 합성 파라미터에 대한 프로세싱이 완료될 때, 각각의 프로세싱 엘리먼트는 다른 합성 파라미터의 후속 프로세싱을 위해 즉시 이용가능하게 된다.
결국, 조정 모듈 (32) 은, 프로세싱 엘리먼트 (34) 가 현재의 오디오 프레임에 대해 요구되는 모든 보이스들을 합성하는 것을 완성하고 이 보이스들을 합산 버퍼 (40) 에 제공하였는지의 여부를 판별할 수도 있다. 이때, 합산 버퍼 (40) 는 현재의 오디오 프레임에 대한 완성된 파형을 나타내는 디지털 샘플들을 포함한다. 조정 모듈 (32) 이 판단을 내리면, 조정 모듈 (32) 은 인터럽트를 DSP (12) (도 1) 로 전송한다. 인터럽트에 대한 응답으로, DSP (12) 는 합산 버퍼 (40) 의 콘텐츠를 수신하기 위해 직접 메모리 교환 (DME) 을 통해서 합산 버퍼 (40) (미도시) 내의 제어 유닛으로 요청을 전송할 수도 있다. 이와 다르게, DSP (12) 는 사전-프로그래밍되어 DME 를 수행할 수도 있다. 그후, DSP (12) 는, 아날로그 도메인으로의 변환을 위해 DAC (16) 에 디지털 오디오 샘플을 제공하기 전에, 디지털 오디오 샘플에 대해 임의의 포스트 프로세싱을 수행할 수도 있다. 본 개시물에 따르면, 프레임 N+2 에 관련하여 MIDI 하드웨어 유닛 (14C) 에 의해 수행되는 프로세싱은 프레임 N+1 에 대해 DSP (12) (도 1) 에 의한 합성 파라미터 발생, 및 프레임 N 에 대해 프로세서 (8) (도 1) 에 의한 스케줄링 동작들과 동 시에 발생한다.
캐시 메모리 (48), WFU/LFO 메모리 (39) 및 링크된 리스트 메모리 (42) 가 도 3 에 나타나 있다. 캐시 메모리 (48) 는 WFU (36) 에 의해 이용되어 빠르고 효율적인 방식으로 기본 파형들을 페칭할 수도 있다. WFU/LFO 메모리 (39) 는 보이스 파라미터 세트의 보이스 파라미터들을 저장하기 위해 조정 모듈 (32) 에 의해 이용될 수도 있다. 이러한 방식으로, WFU/LFO 메모리 (39) 가 파형 페치 유닛 (36) 및 LFO (38) 의 동작에 전용된 메모리들로서 관찰될 수 있다. 링크된 리스트 메모리 (42) 는 DSP (12) 에 의해 생성된 보이스 표시기의 리스트를 저장하는데 이용된 메모리를 포함할 수도 있다. 보이스 표시기는 메모리 (10) 내에 저장된 하나 이상의 합성 파라미터에 대한 포인터들을 포함할 수도 있다. 리스트의 각각의 보이스 표시기는 각각의 MIDI 보이스에 대한 보이스 파라미터 세트를 저장하는 메모리 위치를 특정할 수도 있다. 도 3 에 도시된 다양한 메모리 및 메모리들의 배치는 단순히 예시적이다. 본 발명에 설명된 기술은 다양한 다른 메모리 배열들로 구현될 수 있다.
본 개시물에 따르면, 복수의 프로세싱 엘리먼트 (34) 가 메모리 (10) (도 1) 에 저장된 상이한 합성 파라미터에 관련하여 동시에 동작한다고 가정한다면, 임의의 수의 프로세싱 엘리먼트 (34) 가 MIDI 하드웨어 유닛 (14C) 내에 포함될 수도 있다. 예를 들어, 제 1 오디오 프로세싱 엘리먼트 (34A) 는 제 1 오디오 정보를 생성하기 위해 제 1 오디오 합성 파라미터를 프로세싱하고, 다른 오디오 프로세싱 엘리먼트 (34N) 는 제 2 오디오 정보를 생성하기 위해 제 2 오디오 합성 파라미 터를 프로세싱한다. 다음으로, 합성 버퍼 (40) 는 하나 이상의 오디오 샘플들의 생성시에 제 1 및 제 2 오디오 정보를 결합시킬 수 있다. 유사하게, 제 3 오디오 프로세싱 엘리먼트 (미도시) 및 제 4 프로세싱 엘리먼트 (미도시) 는, 제 3 및 제 4 오디오 정보를 생성하기 위해 제 3 및 제 4 합성 파라미터들 (오디오 샘플의 생성시에 합산 버퍼 (40) 에 누산될 수 있음) 을 프로세싱할 수도 있다.
프로세싱 엘리먼트 (34) 는 오디오 프레임에 대한 모든 합성 파라미터들을 프로세싱할 수도 있다. 각각의 개별적인 합성 파라미터를 프로세싱한 후, 각각 하나의 프로세싱 엘리먼트 (34) 는 합산 버퍼 (40) 내에 누산을 위해 프로세싱된 오디오 정보를 가산하고, 그후, 다음 합성 파라미터로 진행한다. 이 방식으로, 프로세싱 엘리먼트 (34) 는 오디오 프레임의 하나 이상의 오디오 파일들에 대해 생성된 모든 합성 파라미터들을 프로세싱하도록 집합적으로 작동한다. 다음으로, 오디오 프레임이 프로세싱되고 합산 버퍼 내의 샘플들이 포스트-프로세싱을 위해 DSP (12) 로 전송된 후, 프로세싱 엘리먼트 (34) 는 다음 오디오 프레임의 오디오 파일에 대한 합성 파라미터들을 프로세싱하는 것을 시작할 수 있다.
다시, 제 1 오디오 프로세싱 엘리먼트 (34A) 는 제 1 오디오 정보를 생성하기 위해 제 1 오디오 합성 파라미터를 프로세싱하고, 제 2 오디오 프로세싱 엘리먼트 (34N) 는 제 2 오디오 정보를 생성하기 위해 제 2 오디오 합성 파라미터를 프로세싱한다. 이때, 제 1 프로세싱 엘리먼트 (34A) 는 제 3 오디오 정보를 생성하기 위해 제 3 오디오 합성 파라미터를 프로세싱하고, 제 2 오디오 프로세싱 엘리먼트 (34N) 는 제 4 오디오 정보를 생성하기 위해 제 4 오디오 합성 파라미터를 프로 세싱할 수도 있다. 합산 버퍼 (40) 는 하나 이상의 오디오 샘플들의 생성시에 제 1, 제 2, 제 3 및 제 4 오디오 정보를 결합할 수 있다.
도 4 는 본 개시물의 교시와 일치하는 예시적인 기술을 도시하는 흐름도이다. 도 4 는 도 1 의 디바이스 (4) 를 참조하여 설명되지만, 다른 디바이스들이 도 4 의 기술을 구현할 수 있다. 이와 다르게, 도 4 에 라벨링된 스테이지 1 및 스테이지 2 는 다중-스레디드 DSP 의 2 개의 상이한 스레드들에 의해 실행될 수 있다.
도 4 에 도시된 바와 같이, 제 1 오디오 프레임 N 을 통해 시작하여 (51), 프로세서 (8) 상에서 실행하는 소프트웨어는 MIDI 파일을 파싱하고 (52), MIDI 이벤트를 스케줄링한다 (53). 스케줄링된 이벤트들은 스케줄과 함께 저장되고 또한 스케줄링에 따라서 DSP (12) 로 디스패치될 수도 있다. 임의의 경우, DSP (12) 는 합성 파라미터를 생성하기 위해 프레임 N 에 대한 MIDI 이벤트들을 프로세싱한다 (56).
이때, DSP (12) 가 프레임 N 에 대한 MIDI 이벤트를 프로세싱하는 (56) 동안, 오디오 시퀀스에 더 많은 프레임들이 있다면 (54 의 "예" 가지), 프로세서 (8) 에서 실행하는 소프트웨어는 다음 프레임, 즉, 프레임 N+1 을 서비스하는 것을 시작한다 (55). 따라서, DSP (12) 는 프레임 N 에 대해 MIDI 이벤트를 프로세싱하는 (56) 동안, 프로세서 (8) 에서 실행하는 소프트웨어가 프레임 N+1 에 대한 MIDI 파일을 파싱하고 (52), 프레임 N+1 에 대한 MIDI 이벤트들을 스케줄링한다 (53). 즉, 스테이지 1 및 스테이지 2 는 프레임 N 과 프레임 N+1 에 대해 동시 에 수행된다.
다음으로, MIDI 하드웨어 유닛 (14) 은 프레임 N 에 대해 오디오 샘플들을 생성한다 (57). 이때, DSP 는 프레임 N+1 에 대해 MIDI 이벤트를 프로세싱하고, 프로세서 (8) 에서 프로세싱하는 소프트웨어는 프레임 N+2 에 대한 MIDI 파일을 파싱하고 (52), 프레임 N+2 에 대한 MIDI 이벤트들을 스케줄링한다 (53). 즉, 스테이지 1, 스테이지 2 및 스테이지 3 은 프레임 N, 프레임 N+1 및 프레임 N+2 에 대해 동시에 수행된다. 이러한 단계적 접근은 각각의 후속 오디오 프레임에 대해 연속적이어서, 오디오 프레임들이 파이프라인 방식으로 스테이지 1, 스테이지 2 및 스테이지 3 을 통과하게 한다. 프레임 N+1 이 하드웨어 유닛 (14) 에 의해 서비스될 때, 프레임 N+2 은 DSP (12) 에 의해 서비스되고, 프레임 N+3 은 범용 프로세서 (8) 에 의해 서비스된다. 프레임 N+2 가 하드웨어 유닛 (14) 에 의해 서비스될 때, 프레임 N+3 은 DSP (12) 에 의해 서비스되고, 프레임 N+4 는 범용 프로세서 (8) 에 의해 서비스된다.
임의의 주어진 프레임에 대한 오디오 샘플들이 생성되면 (57), 포스트-프로세싱이 그 프레임에 대해 수행될 수도 있다 (58). DSP (12) 는 하드웨어 유닛 (14) 으로부터의 인터럽트 커맨드에 대응하는 임의의 포스트-프로세싱을 실행할 수도 있다. 이 방식으로, DSP (12) 는, 생성된 오디오 프레임에서 수행될 필요가 있는 MIDI 이벤트들의 프로세싱뿐만 아니라 임의의 포스트-프로세싱을 핸들링한다.
임의의 프레임에 대한 포스트-프로세싱에 후속하여, DAC (16) 는 그 프레임에 대한 오디오 샘플을 아날로그 오디오 신호로 변환하고 (59), 이 오디오 신호는 구동 회로 (18) 로 제공될 수 있다. 구동 회로 (18) 는 그 아날로그 오디오 신호를 이용하여 스피커들 (19A 및 19B) 이 사운드를 출력하게 하는 구동 신호를 생성하게 한다 (60).
다양한 예들이 설명되어 있다. 본 명세서에 설명된 기술들의 하나 이상의 양태들은 하드웨어, 소프트웨어, 펌웨어, 또는 그 조합으로 구현될 수도 있다. 모듈 또는 컴포넌트들로서 설명된 임의의 특징들이, 집적된 로직 디바이스에 함께 구현되거나 또는 이산적이지만 상호 운용가능한 로직 디바이스들로서 분리되어 구현될 수도 있다. 소프트웨어에서 구현될 경우, 본 기술의 하나 이상의 양태들이 실행시에, 전술한 하나 이상의 방법들을 수행하는 명령을 포함하는 컴퓨터-판독가능 매체에 의해 적어도 일부 실현될 수도 있다. 컴퓨터-판독가능 데이터 저장 매체는 패키징 재료들을 포함할 수도 있는 컴퓨터 프로그램 제품의 부품을 형성할 수도 있다. 컴퓨터-판독가능 매체는 동기식 동적 랜덤 액세스 메모리 (SDRAM) 과 같은 RAM, ROM, 불휘발성 랜덤 액세스 메모리 (NVRAM), EEPROM, FLASH 메모리, 자기 또는 광학적 데이터 저장 매체 등을 포함할 수도 있다. 추가적으로, 또는 대안적으로, 이 기술들은 명령 또는 데이터 구조의 형태로 코드를 전송하고 또는 통신하고 컴퓨터에 의해 액세스, 판독 및/또는 실행될 수 있는 컴퓨터-판독가능 통신 매체에 의해 적어도 부분적으로 실현될 수도 있다.
명령은, 하나 이상의 프로세서 (하나 이상의 디지털 신호 프로세서 (DSP)), 범용 마이크로프로세서, 주문형 집적 회로 (ASIC), 필드 프로그래머블 게이트 어레이 (FPGA), 또는 다른 동일한 집적 또는 이산 로직 회로에 의해 실행될 수도 있다. 따라서, 본 발명에 이용되는 용어 "프로세서" 는 본 발명에 설명된 기술의 구현을 위해 적절한 임의의 다른 구조 또는 전술한 구조 중 임의의 구조를 지칭할 수도 있다. 또한, 몇몇 양태에서, 본 발명에 설명된 기능성은 본 개시물의 기술을 수행하도록 채택되고 구성된 전용 소프트웨어 모듈 또는 하드웨어 모듈 내에 제공될 수도 있다.
하드웨어에서 구현될 경우, 본 개시물의 하나 이상의 양태는 본 발명에 설명된 하나 이상의 기술들을 수행하도록 채택 또는 구성된 회로 (예를 들어, 집적 회로), 칩세트, ASIC, FPGA, 로직 또는 이들의 다양한 조합으로 설명된다. 회로는, 본 발명에 설명된 바와 같이, 집적 회로 또는 칩세트에서 프로세서 및 하나 이상의 하드웨어 유닛 모두를 포함한다.
또한, 당업자는, 회로가 전술한 몇몇 기능들 또는 모든 기능들을 구현할 수도 있다는 것을 인식해야만 한다. 모든 기능들을 구현하는 하나의 회로가 있을 수도 있고, 그 기능들을 구현하는 회로의 다수의 섹션들이 있을 수도 있다. 현재의 모바일 플랫폼 기술을 통해서, 집적 회로는 적어도 하나의 DSP, 및 적어도 하나의 ARM (Advanced Reduced Instruction Set Computer (RISC) Machine) 프로세서를 포함하여 DSP 또는 DSP 들을 제어하고 및/또는 이들과 통신할 수도 있다. 또한, 회로는 몇몇 섹션들로 설계되거나 또는 구현될 수도 있고, 일부의 경우에는, 본 개시물에 설명된 상이한 기능들을 수행하기 위해 섹션들이 재-사용될 수도 있다.
다양한 양태 및 예시들이 설명되어 있다. 그러나, 이하의 청구범위의 범 위로부터 벗어나지 않는 한 본 개시물의 구조 또는 기술들에 대해 변형이 이루어질 수 있다. 예를 들어, 다른 유형의 디바이스들도 또한 본 명세서에 설명된 MIDI 프로세싱 기술을 구현할 수 있다. 또한, 도 3 에 도시된 예시적인 하드웨어 유닛 (14C) 은 보이스 합성에 웨이브-테이블 기반의 접근방식을 이용하지만, 주파수 변조 합성 접근방식을 포함하는 다른 접근방식들이 이용될 수 있다. 이러한 실시형태 및 다른 실시형태들이 이하의 청구범위의 범위 내에 있다.

Claims (48)

  1. 제 1 프로세스를 이용하여 MIDI (musical instrument digital interface) 파일들을 파싱 (parse) 하고 상기 MIDI 파일들과 관련된 MIDI 이벤트들을 스케줄링하는 단계;
    제 2 프로세스를 이용하여 상기 MIDI 이벤트들을 프로세싱하여 MIDI 합성 파라미터들을 생성하는 단계; 및
    상기 MIDI 합성 파라미터들에 기초하여 하드웨어 유닛을 이용하여 오디오 샘플들을 생성하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 제 1 프로세스는 프로세서에 의해 실행되고,
    상기 제 2 프로세스는 디지털 신호 프로세서 (DSP) 에 의해 실행되는, 방법.
  3. 제 1 항에 있어서,
    상기 제 1 프로세스는 디지털 신호 프로세서 (DSP) 의 제 1 스레드에 의해 실행되고,
    상기 제 2 프로세서는 상기 DSP 의 제 2 스레드에 의해 실행되는, 방법.
  4. 제 1 항에 있어서,
    상기 방법은 파이프라인 방식 (pipelined manner) 으로 수행되는, 방법.
  5. 제 4 항에 있어서,
    동시에,
    상기 제 1 프로세스는 N+2 번째 프레임에 대한 MIDI 파일들을 파싱하고 MIDI 이벤트들을 스케줄링하고;
    상기 제 2 프로세스는 N+1 번째 프레임에 대한 MIDI 합성 파라미터들을 생성하고;
    상기 하드웨어 유닛은 N 번째 프레임에 대한 오디오 샘플들을 생성하는, 방법.
  6. 제 1 항에 있어서,
    상기 오디오 샘플들은 PCM (pulse coded modulation) 샘플들을 포함하는, 방법.
  7. 제 1 항에 있어서,
    상기 오디오 샘플들은 디지털 샘플들을 포함하고,
    상기 방법은:
    상기 오디오 샘플들을 아날로그 출력으로 변환하는 단계; 및
    상기 아날로그 출력을 유저에게 출력하는 단계를 더 포함하는, 방법.
  8. 제 1 항에 있어서,
    상기 MIDI 파일들은 MIDI 포맷에 부합하는 적어도 하나의 트랙을 포함하는 파일들을 포함하는, 방법.
  9. 제 1 항에 있어서,
    상기 MIDI 이벤트들을 스케줄링하는 단계는, 상기 MIDI 파일들에 특정된 타이밍 파라미터들에 기초하여 상기 MIDI 이벤트들의 타이밍을 동기화하는 단계를 포함하는, 방법.
  10. 제 1 항에 있어서,
    상기 제 1 프로세스는 상기 MIDI 이벤트들을 타임-동기화 방식 (time-synchronized manner) 으로 상기 제 2 프로세스로 디스패치 (dispatch) 하는, 방법.
  11. 제 1 항에 있어서,
    상기 제 2 프로세스는 상기 하드웨어 유닛에 의해 상기 MIDI 합성 파라미터들의 프로세싱을 스케줄링하는, 방법.
  12. 제 1 항에 있어서,
    상기 오디오 샘플들을 포스트-프로세싱하는 단계를 더 포함하는, 방법.
  13. 제 12 항에 있어서,
    상기 하드웨어 유닛은 상기 포스트-프로세싱을 개시하기 위해 인터럽트들을 이슈 (issue) 하는, 방법.
  14. 제 1 항에 있어서,
    상기 하드웨어 유닛은 상이한 합성 파라미터들을 프로세싱하기 위해 동시에 동작하는 복수의 프로세싱 엘리먼트들을 포함하는, 방법.
  15. 제 14 항에 있어서,
    상기 하드웨어 유닛은 상기 복수의 프로세싱 엘리먼트들의 출력을 조합하는 합산 버퍼 (summing buffer) 를 더 포함하는, 방법.
  16. MIDI (musical instrument digital interface) 파일들을 파싱 (parse) 하고 상기 MIDI 파일들과 관련된 MIDI 이벤트들을 스케줄링하기 위한 소프트웨어를 실행하는 프로세서;
    상기 MIDI 이벤트들을 프로세싱하고 MIDI 합성 파라미터들을 생성하는 디지털 신호 프로세서 (DSP); 및
    상기 MIDI 합성 파라미터들에 기초하여 오디오 샘플들을 생성하는 하드웨어 유닛을 포함하는, 디바이스.
  17. 제 16 항에 있어서,
    상기 프로세서, 상기 DSP 및 상기 하드웨어 유닛은 파이프라인 방식으로 동작하는, 디바이스.
  18. 제 17 항에 있어서,
    동시에,
    상기 프로세서는 N+2 번째 프레임에 대한 MIDI 파일들을 파싱하고 MIDI 이벤트들을 스케줄링하며;
    상기 DSP 는 N+1 번째 프레임에 대한 MIDI 합성 파라미터들을 생성하고;
    상기 하드웨어 유닛은 N 번째 프레임에 대한 오디오 샘플들을 생성하는, 디바이스.
  19. 제 16 항에 있어서,
    상기 오디오 샘플들은 PCM (pulse coded modulation) 샘플들을 포함하는, 디바이스.
  20. 제 16 항에 있어서,
    상기 오디오 샘플들은 디지털 오디오 샘플들을 포함하고,
    상기 디바이스는:
    상기 오디오 샘플들을 아날로그 출력으로 변환하는 디지털-아날로그 변환기;
    상기 아날로그 출력을 증폭시키는 구동 회로; 및
    상기 증폭된 아날로그 출력을 유저에게 출력하는 하나 이상의 스피커를 더 포함하는, 디바이스.
  21. 제 16 항에 있어서,
    상기 MIDI 파일들은 MIDI 포맷에 부합하는 적어도 하나의 트랙을 포함하는 파일들을 포함하는, 디바이스.
  22. 제 16 항에 있어서,
    상기 프로세서는 상기 소프트웨어를 실행하여 상기 MIDI 파일들에 특정된 타이밍 파라미터들에 기초하여 상기 MIDI 이벤트들의 타이밍을 동기화하는, 디바이스.
  23. 제 16 항에 있어서,
    상기 프로세서는 타임-동기화 방식으로 상기 DSP 에 상기 MIDI 이벤트들을 디스패치하는, 디바이스.
  24. 제 16 항에 있어서,
    상기 DSP 는 상기 하드웨어 유닛에 의해 상기 MIDI 합성 파라미터들의 프로세싱을 스케줄링하는, 디바이스.
  25. 제 16 항에 있어서,
    상기 DSP 는 상기 오디오 샘플들을 포스트-프로세싱하는, 디바이스.
  26. 제 25 항에 있어서,
    상기 하드웨어 유닛은 상기 포스트-프로세싱을 개시하기 위해 상기 DSP 에 인터럽트들을 이슈하는, 디바이스.
  27. 제 16 항에 있어서,
    상기 하드웨어 유닛은 상이한 합성 파라미터들을 프로세싱하기 위해 동시에 동작하는 복수의 프로세싱 엘리먼트들을 포함하는, 디바이스.
  28. 제 27 항에 있어서,
    상기 하드웨어 유닛은 상기 복수의 프로세싱 엘리먼트들의 출력을 조합하는 합산 버퍼를 더 포함하는, 디바이스.
  29. MIDI (musical instrument digital interface) 파일들을 파싱 (parse) 하고 상기 MIDI 파일들과 관련된 MIDI 이벤트들을 스케줄링하는 소프트웨어 수단;
    상기 MIDI 이벤트들을 프로세싱하여 MIDI 합성 파라미터들을 생성하는 펌웨어 수단; 및
    상기 MIDI 합성 파라미터들에 기초하여 오디오 샘플들을 생성하는 하드웨어 수단을 포함하는, 디바이스.
  30. 제 29 항에 있어서,
    상기 소프트웨어 수단, 상기 펌웨어 수단 및 상기 하드웨어 수단은 파이프라인 방식으로 동작하는, 디바이스.
  31. 제 30 항에 있어서,
    동시에,
    상기 소프트웨어 수단은 N+2 번째 프레임에 대한 MIDI 파일들을 파싱하고 MIDI 이벤트들을 스케줄링하며;
    상기 펌웨어 수단은 N+1 번째 프레임에 대한 MIDI 합성 파라미터들을 생성하고;
    상기 하드웨어 수단은 N 번째 프레임에 대한 오디오 샘플들을 생성하는, 디바이스.
  32. 제 29 항에 있어서,
    상기 오디오 샘플들은 PCM (pulse coded modulation) 샘플들을 포함하는, 디 바이스.
  33. 제 29 항에 있어서,
    상기 오디오 샘플들은 디지털 오디오 샘플들을 포함하고,
    상기 디바이스는:
    상기 오디오 샘플들을 아날로그 출력으로 변환하는 수단; 및
    상기 아날로그 출력을 유저에게 출력하는 수단을 더 포함하는, 디바이스.
  34. 제 29 항에 있어서,
    상기 MIDI 파일들은 MIDI 포맷에 부합하는 적어도 하나의 트랙을 포함하는 파일들을 포함하는, 디바이스.
  35. 제 29 항에 있어서,
    상기 소프트웨어 수단은 상기 MIDI 파일들에 특정된 타이밍 파라미터들에 기초하여 상기 MIDI 이벤트들의 타이밍을 동기화하는, 디바이스.
  36. 제 29 항에 있어서,
    상기 소프트웨어 수단은 타임-동기화 방식으로 상기 펌웨어 수단에 상기 MIDI 이벤트들을 디스패치하는, 디바이스.
  37. 제 29 항에 있어서,
    상기 펌웨어 수단은 상기 하드웨어 수단에 의해 상기 MIDI 합성 파라미터들의 프로세싱을 스케줄링하는, 디바이스.
  38. 제 29 항에 있어서,
    상기 펌웨어 수단은 상기 DSP 를 이용하여 상기 오디오 샘플들을 포스트-프로세싱하는, 디바이스.
  39. 제 38 항에 있어서,
    상기 하드웨어 수단은 상기 포스트-프로세싱을 개시하기 위해 상기 펌웨어 수단에 인터럽트들을 이슈하는, 디바이스.
  40. 제 29 항에 있어서,
    상기 하드웨어 수단은 상이한 합성 파라미터들을 프로세싱하기 위해 동시에 동작하는 복수의 프로세싱 엘리먼트들을 포함하는, 디바이스.
  41. 제 40 항에 있어서,
    상기 하드웨어 수단은 상기 복수의 프로세싱 엘리먼트들의 출력을 조합하기 위한 합산 버퍼를 더 포함하는, 디바이스.
  42. MIDI (musical instrument digital interface) 파일들을 파싱 (parse) 하고 상기 MIDI 파일들과 관련된 MIDI 이벤트들을 스케줄링하는 제 1 스레드, 및 상기 MIDI 이벤트들을 프로세싱하고 MIDI 합성 파라미터들을 생성하는 제 2 스레드를 포함하는 멀티-스레드 디지털 신호 프로세서 (multi-threaded digital signal processor); 및
    상기 MIDI 합성 파라미터들에 기초하여 오디오 샘플들을 생성하는 하드웨어 유닛을 포함하는, 디바이스.
  43. 제 42 항에 있어서,
    상기 제 1 스레드, 상기 제 2 스레드, 및 상기 하드웨어 유닛은 파이프라인 방식으로 동작하는, 디바이스.
  44. 제 43 항에 있어서,
    동시에,
    상기 제 1 스레드는 N+2 번째 프레임에 대한 MIDI 파일들을 파싱하고 MIDI 이벤트들을 스케줄링하고;
    상기 제 2 스레드는 N+1 번째 프레임에 대한 MIDI 합성 파라미터들을 생성하고;
    상기 하드웨어 유닛은 N 번째 프레임에 대한 오디오 샘플들을 생성하는, 디바이스.
  45. 하나 이상의 프로세서에 의한 실행시에, 상기 하나 이상의 프로세서로 하여금,
    제 1 프로세스를 이용하여 MIDI (musical instrument digital interface) 파일들을 파싱하고 상기 MIDI 파일들과 관련된 MIDI 이벤트들을 스케줄링하고;
    제 2 프로세스를 이용하여 상기 MIDI 이벤트들을 프로세싱하여 MIDI 합성 파라미터들을 생성하고; 그리고
    상기 MIDI 합성 파라미터들에 기초하여 하드웨어 유닛을 이용하여 오디오 샘플들을 생성하게 하는
    명령들을 포함하는, 컴퓨터-판독가능 매체.
  46. 제 45 항에 있어서,
    동시에,
    상기 제 1 프로세스는 N+2 번째 프레임에 대한 MIDI 파일들을 파싱하고 MIDI 이벤트들을 스케줄링하고;
    상기 제 2 프로세스는 N+1 번째 프레임에 대한 MIDI 합성 파라미터들을 생성하고;
    상기 하드웨어 유닛은 N 번째 프레임에 대한 오디오 샘플들을 생성하는, 컴퓨터-판독가능 매체.
  47. 제 1 프로세스를 이용하여 MIDI (musical instrument digital interface) 파일들을 파싱하고 상기 MIDI 파일들과 관련된 MIDI 이벤트들을 스케줄링하고;
    제 2 프로세스를 이용하여 상기 MIDI 이벤트들을 프로세싱하여 MIDI 합성 파라미터들을 생성하고;
    상기 MIDI 합성 파라미터들에 기초하여 하드웨어 유닛을 이용하여 오디오 샘플들을 생성하도록 구성된, 회로.
  48. 제 47 항에 있어서,
    동시에,
    상기 제 1 프로세스는 N+2 번째 프레임에 대한 MIDI 파일들을 파싱하고 MIDI 이벤트들을 스케줄링하고;
    상기 제 2 프로세스는 N+1 번째 프레임에 대한 MIDI 합성 파라미터들을 생성하고;
    상기 하드웨어 유닛은 N 번째 프레임에 대한 오디오 샘플들을 생성하는, 회로.
KR1020097022030A 2007-03-22 2008-03-17 Midi 파일을 프로세싱하기 위한 파이프라인 기술 KR20090130863A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US89645507P 2007-03-22 2007-03-22
US60/896,455 2007-03-22
US12/042,170 2008-03-04
US12/042,170 US7663046B2 (en) 2007-03-22 2008-03-04 Pipeline techniques for processing musical instrument digital interface (MIDI) files

Publications (1)

Publication Number Publication Date
KR20090130863A true KR20090130863A (ko) 2009-12-24

Family

ID=39773424

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097022030A KR20090130863A (ko) 2007-03-22 2008-03-17 Midi 파일을 프로세싱하기 위한 파이프라인 기술

Country Status (7)

Country Link
US (1) US7663046B2 (ko)
EP (1) EP2126893A1 (ko)
JP (1) JP2010522364A (ko)
KR (1) KR20090130863A (ko)
CN (1) CN101636780A (ko)
TW (1) TW200847129A (ko)
WO (1) WO2008118675A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7663046B2 (en) * 2007-03-22 2010-02-16 Qualcomm Incorporated Pipeline techniques for processing musical instrument digital interface (MIDI) files
US9348775B2 (en) 2012-03-16 2016-05-24 Analog Devices, Inc. Out-of-order execution of bus transactions
US10983842B2 (en) * 2019-07-08 2021-04-20 Microsoft Technology Licensing, Llc Digital signal processing plug-in implementation

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5865492A (ja) * 1981-10-15 1983-04-19 ヤマハ株式会社 電子楽器
US4611522A (en) * 1984-04-10 1986-09-16 Nippon Gakki Seizo Kabushiki Kaisha Tone wave synthesizing apparatus
US4966053A (en) * 1987-06-26 1990-10-30 John Dornes Music synthesizer with multiple movable bars
JPH02208697A (ja) * 1989-02-08 1990-08-20 Victor Co Of Japan Ltd Midi信号誤動作防止方式及びmidi信号記録再生装置
JP2538668Y2 (ja) * 1990-03-02 1997-06-18 ブラザー工業株式会社 メッセージ機能付き音楽再生装置
US5117726A (en) * 1990-11-01 1992-06-02 International Business Machines Corporation Method and apparatus for dynamic midi synthesizer filter control
JP3246312B2 (ja) * 1995-09-20 2002-01-15 ヤマハ株式会社 楽音発生方法および装置
TW314614B (ko) * 1995-10-23 1997-09-01 Yamaha Corp
US5747714A (en) * 1995-11-16 1998-05-05 James N. Kniest Digital tone synthesis modeling for complex instruments
US5917917A (en) * 1996-09-13 1999-06-29 Crystal Semiconductor Corporation Reduced-memory reverberation simulator in a sound synthesizer
US6105119A (en) * 1997-04-04 2000-08-15 Texas Instruments Incorporated Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems
US5811706A (en) * 1997-05-27 1998-09-22 Rockwell Semiconductor Systems, Inc. Synthesizer system utilizing mass storage devices for real time, low latency access of musical instrument digital samples
JP3637578B2 (ja) * 1997-10-21 2005-04-13 ヤマハ株式会社 楽音生成方法
JPH11133968A (ja) * 1997-10-31 1999-05-21 Yamaha Corp 波形サンプリング装置
US6093880A (en) * 1998-05-26 2000-07-25 Oz Interactive, Inc. System for prioritizing audio for a virtual environment
US6150599A (en) * 1999-02-02 2000-11-21 Microsoft Corporation Dynamically halting music event streams and flushing associated command queues
US6787689B1 (en) * 1999-04-01 2004-09-07 Industrial Technology Research Institute Computer & Communication Research Laboratories Fast beat counter with stability enhancement
US6665409B1 (en) * 1999-04-12 2003-12-16 Cirrus Logic, Inc. Methods for surround sound simulation and circuits and systems using the same
JP3674407B2 (ja) * 1999-09-21 2005-07-20 ヤマハ株式会社 演奏データ編集装置、方法及び記録媒体
JP3829549B2 (ja) * 1999-09-27 2006-10-04 ヤマハ株式会社 楽音生成装置及びテンプレート編集装置
JP4306944B2 (ja) * 2000-10-18 2009-08-05 株式会社コルグ 楽音再生装置
US20020103552A1 (en) * 2000-12-04 2002-08-01 Mike Boucher Method and apparatus to reduce processing requirements for the playback of complex audio sequences
JP3687090B2 (ja) * 2000-12-19 2005-08-24 ヤマハ株式会社 音源付き記憶装置
US7107110B2 (en) * 2001-03-05 2006-09-12 Microsoft Corporation Audio buffers with audio effects
US6806412B2 (en) * 2001-03-07 2004-10-19 Microsoft Corporation Dynamic channel allocation in a synthesizer component
US6970822B2 (en) * 2001-03-07 2005-11-29 Microsoft Corporation Accessing audio processing components in an audio generation system
WO2002077585A1 (en) * 2001-03-26 2002-10-03 Sonic Network, Inc. System and method for music creation and rearrangement
US7065380B2 (en) * 2001-07-19 2006-06-20 Texas Instruments Incorporated Software partition of MIDI synthesizer for HOST/DSP (OMAP) architecture
JP2003044052A (ja) * 2001-07-26 2003-02-14 Kawai Musical Instr Mfg Co Ltd 電子楽器の音量制御装置
US6683241B2 (en) * 2001-11-06 2004-01-27 James W. Wieder Pseudo-live music audio and sound
JP3991724B2 (ja) * 2002-03-12 2007-10-17 ヤマハ株式会社 データ処理装置およびコンピュータプログラム
US7363095B2 (en) * 2003-10-08 2008-04-22 Nokia Corporation Audio processing system
US20050185541A1 (en) * 2004-02-23 2005-08-25 Darren Neuman Method and system for memory usage in real-time audio systems
KR20050087368A (ko) * 2004-02-26 2005-08-31 엘지전자 주식회사 무선 단말기의 벨소리 처리 장치
KR100694395B1 (ko) * 2004-03-02 2007-03-12 엘지전자 주식회사 웨이브 테이블 기반의 미디 합성 방법
KR100636906B1 (ko) * 2004-03-22 2006-10-19 엘지전자 주식회사 미디 재생 장치 그 방법
WO2006043790A1 (en) * 2004-10-22 2006-04-27 Lg Electronics, Inc. Apparatus and method for reproducing midi file
KR100598209B1 (ko) * 2004-10-27 2006-07-07 엘지전자 주식회사 Midi 재생 장치 및 방법
KR100689495B1 (ko) * 2004-12-14 2007-03-02 엘지전자 주식회사 Midi 재생 장치 및 방법
KR100655548B1 (ko) * 2004-12-15 2006-12-08 엘지전자 주식회사 미디 합성 방법
US7663046B2 (en) * 2007-03-22 2010-02-16 Qualcomm Incorporated Pipeline techniques for processing musical instrument digital interface (MIDI) files

Also Published As

Publication number Publication date
US7663046B2 (en) 2010-02-16
WO2008118675A1 (en) 2008-10-02
TW200847129A (en) 2008-12-01
JP2010522364A (ja) 2010-07-01
CN101636780A (zh) 2010-01-27
EP2126893A1 (en) 2009-12-02
US20080229918A1 (en) 2008-09-25

Similar Documents

Publication Publication Date Title
JP5134078B2 (ja) 楽器ディジタルインタフェースハードウエア命令
KR101108460B1 (ko) 오디오 파일을 프로세싱하는 파형 페치 유닛
KR101120969B1 (ko) 오디오 장치에서 기준 파형들을 취출하기 위한 대역폭 제어
KR20090130863A (ko) Midi 파일을 프로세싱하기 위한 파이프라인 기술
JP2013152477A (ja) 電子楽器デジタルインターフェースハードウェア命令セット
US7718882B2 (en) Efficient identification of sets of audio parameters
JP2010522362A5 (ko)
US7663051B2 (en) Audio processing hardware elements
KR20120127747A (ko) 오디오 파일을 처리하기 위해 공유된 버퍼 관리
US7893343B2 (en) Musical instrument digital interface parameter storage
US7687703B2 (en) Method and device for generating triangular waves

Legal Events

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