KR100421589B1 - 악음생성방법및장치 - Google Patents

악음생성방법및장치 Download PDF

Info

Publication number
KR100421589B1
KR100421589B1 KR1019960016767A KR19960016767A KR100421589B1 KR 100421589 B1 KR100421589 B1 KR 100421589B1 KR 1019960016767 A KR1019960016767 A KR 1019960016767A KR 19960016767 A KR19960016767 A KR 19960016767A KR 100421589 B1 KR100421589 B1 KR 100421589B1
Authority
KR
South Korea
Prior art keywords
tone
waveform data
channel
waveform
data
Prior art date
Application number
KR1019960016767A
Other languages
English (en)
Other versions
KR960042327A (ko
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
Priority claimed from JP02332396A external-priority patent/JP3246312B2/ja
Application filed by 야마하 가부시키가이샤 filed Critical 야마하 가부시키가이샤
Publication of KR960042327A publication Critical patent/KR960042327A/ko
Application granted granted Critical
Publication of KR100421589B1 publication Critical patent/KR100421589B1/ko

Links

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
    • G10H1/02Means for controlling the tone frequencies, e.g. attack or decay; Means for producing special musical effects, e.g. vibratos or glissandos
    • G10H1/06Circuits for establishing the harmonic content of tones, or other arrangements for changing the tone colour
    • G10H1/08Circuits for establishing the harmonic content of tones, or other arrangements for changing the tone colour by combining tones
    • 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/18Selecting circuits
    • G10H1/183Channel-assigning means for polyphonic instruments
    • G10H1/187Channel-assigning means for polyphonic instruments using multiplexed channel processors
    • 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
    • G10H1/00Details of electrophonic musical instruments
    • G10H1/18Selecting circuits
    • G10H1/183Channel-assigning means for polyphonic instruments
    • G10H1/185Channel-assigning means for polyphonic instruments associated with key multiplexing
    • G10H1/186Microprocessor-controlled keyboard and assigning means
    • 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
    • G10H2210/00Aspects or methods of musical processing having intrinsic musical character, i.e. involving musical theory or musical parameters or relying on musical knowledge, as applied in electrophonic musical tools or instruments
    • G10H2210/155Musical effects
    • G10H2210/265Acoustic effect simulation, i.e. volume, spatial, resonance or reverberation effects added to a musical sound, usually by appropriate filtering or delays
    • G10H2210/295Spatial effects, musical uses of multiple audio channels, e.g. stereo
    • 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/035Power management, i.e. specific power supply solutions for electrophonic musical instruments, e.g. auto power shut-off, energy saving designs, power conditioning, connector design, avoiding inconvenient wiring

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Electrophonic Musical Instruments (AREA)

Abstract

본 발명은 악음파형샘플의 연산시에 오버헤드를 적게 하여 소프트음원을 범용OS와 병렬적으로 안정하게 동작시킬 수 있는 악음생성방법 및 악음생성장치에 관한 것으로, 본 발명은 각 발음채널의 악음파형샘플을 연산할 때 다수 샘플주기분(예를들면 100샘플분)을 모아서 생성하는 것이다. 또, MIDI시퀀서 등의 어플리케이션 프로그램으로부터 MIDI이벤트 등의 연주정보가 음원MIDI드라이버에 공급되면 음원MIDI드라이버는 입력된 MIDI신호에 따라 신규한 발음을 톤제너레이터 태스크의 발음채널에 할당하고, 상기 할당한 채널에 설정하기 위한 악음제어 파라미터를 준비한다. 톤제너레이터 태스크는 상기 악음제어파라미터에 의해 악음파형데이터를 연산해서 생성하고, A/D변환기인 코데크에 출력한다. 이들 프로그램과 범용OS가 프리앰프티브방식의 멀티태스크관리 프로그램에 의해 스케쥴링되어 실행된다.

Description

악음생성방법 및 장치{TONE GENERATING METHOD AND APPARATUS THEREOF}
본 발명은 연산처리장치를 구비한 범용처리장치에 의해 악음을생성할 수 있도록 한 악음생성방법 및 장치에 관한 것이다.
또한, 본 발명은 CPU나 DSP 등 프로그램 가능한 연산처리장치상에 있어서, 악음생성 프로그램을 실행함으로써 악음파형을 생성하는 악음발생방법에 관한 것이다.
종래의 악음생성장치는 통상 MIDI(Musical Instrument Digital Interface), 건반 혹은 시퀀서 등으로부터의 연주정보를 입력하는 연주입력부, 악음파형을 생성하는 음원부, 입력한 연주정보에 따라 상기 음원부를 제어하는 마이크로프로세서 또는 중앙처리장치(CPU) 등으로 구성되어 있다. CPU는 입력한 연주정보에 따라 채널어사인, 파라미터변환 등의 음원드라이버처리(연주처리)를 실행하고, 음원부의 할당한 채널에 변환된 파라미터와 발음개시지시(노트 온)를 공급한다. 음원부는 LSI(Large Scale Integrated circuit) 등의 전자회로(하드웨어)로 구성되며, 공급된 파라미터에 의거해서 악음파형을 생성한다.
이 때문에, 악음생성장치는 악음을 생성하기 위한 전용기기로 되어 버려서 악음을 생성할 때에는 전용 악음생성장치를 준비할 필요가 있었다.
따라서, 이것을 해결하기 위해 CPU에 의해 어플리케이션 프로그램을 실행하고, 어플리케이션 프로그램에 의거해서 악음을 생성하는 악음생성장치가 제안되어 있다. 이 악음생성장치는 악음을 생성하는 어플리케이션 프로그램외에 다른 어플리케이션 프로그램을 실행할 수 있으며, 그밖의 기능도 실행시킬 수 있는 범용 연산처리장치에 의해 실현할 수 있는 것이다. 이런 종류의 악음생성장치의 하드웨어로서 퍼스널컴퓨터 등의 범용 컴퓨터를 사용할 수 있으며, 음원프로그램의 실행에 의해 악음생성처리를 한다. 그래서, 이것을 「소프트웨어 음원」이라고도 한다.
그러나, 연산처리장치(CPU)를 구비한 범용장치에 의해 어플리케이션 프로그램을 실행시켜서 악음을 생성할 경우, 종래에는 1샘플링주기(디지털·아날로그변환기의 변환타이밍)마다 각 채널의 악음파형 샘플을 발음채널만큼 연산생성하도록 하고 있다. 따라서, CPU는 각 발음채널을 처리할 경우, 먼저 전회의 당해 발음채널의 연산에 이용한 각종 레지스터치를 메모리로부터 CPU의 레지스터에 판독하는 등의 준비처리가 행해진다. 또한, 당해 발음채널의 악음생성처리후에는 다음회의 처리를 위해 상기 레지스터치를 메모리에 기록할 필요가 있다.
즉, 종래의 소프트웨어음원에서는 각 발음채널의 악음파형샘플의 연산처리를 1샘플씩 생성하도록 했기 때문에 악음을 생성하는 악음생성처리 이외의 준비처리에 CPU 연산시간이 많이 소요되므로(오버헤드가 커진다), 연산효율이 나빠져서 응답이나 악음생성처리가 늦어진다는 문제점이 있었다.
즉, CPU는 각 샘플링주기에 있어서 각 발음채널의 연산처리를 할 때, 먼저 전회의 당해 발음채널의 연산에 이용한 각종 데이터를 메모리로부터 레지스터에 리턴시키는 것 및 당해 파형생성연산종료후에 다음회의 처리를 위해 상기 레지스터의 내용을 메모리에 퇴피하는 것이 필요하므로, 본래의 파형생성연산 이외의 처리에 많은 처리시간을 필요로 하였다.
또한, 상기한 CPU에 의해 음원처리와 연산처리를 실행하는 악음발생방법에 있어서, 연주처리란 입력한 연주정보에 의거해서 생성된 악음을 제어하기 위한 제어정보를 작성하는 처리이고, 한편 음원처리란 상기 연주처리에 의해 작성된 제어정보에 의거해서 악음의 파형데이터를 생성하는 처리이다. 그래서, 예를들면 통상은 압건검출 등의 연주처리를 실행하여 상기 연주처리에 대해 각 샘플링주기에서음원처리를 인터럽트 실행하고, 1샘플분의 파형데이터를 생성한 후, 연주처리로 리턴하도록 하고 있다.
연주정보(MIDI 이벤트)는 연주자의 연주조작이나 시퀀서에서의 이벤트의 재생에 의해 발생하며, 상기 연주정보가 발생했을 경우에는 상기 연주처리에 의해 처리된다. 즉, 연주정보가 발생한 시점에서는 CPU는 통상의 음원처리에 더해 연주처리를 실행하지 않으면 안되기 때문에, 비정기적으로 발생하는 연주정보에 의해 연산량이 일시적으로 증가하게 된다. 그러나, 종래의 악음발생방법에 있어서는 이것에 대응하지 않으며, 음원처리는 연주정보의 유무에 상관없이 정기적으로 우선 실행되고, 경우에 따라서는 연주처리가 지연되는 경우가 있었다.
또한, 이와 같은 연주처리의 지연을 방지하기 위해, 역으로 연주처리의 우선도를 높이는 것이 고려되는데, 이렇게 하면 이번에는 일시적으로 발음수가 감소하거나 혹은 악음파형이 도중에 끊어지는 등 음원처리의 동작이 불안정해진다는 문제가 발생하게 된다.
그래서, 본 발명은 소프트웨어 음원시스템에 있어서, CPU의 오버헤드를 적게 할 수 있는 악음생성방법 및 장치를 제공하는 것을 목적으로 하고 있다.
또한, 본 발명은 일시적으로 처리량이 증가하지 않도록 한 악음생성방법을 제공하는 것을 목적으로 한다.
또, 본 발명은 파형생성연산을 안정하게 실행할 수 있으며, 또 파형재생부로부터 파형요구가 있을 때 신속하게 파형데이터를 출력할 수 있고, 또 입력된 파형데이터를 소프트웨어음원의 일련의 처리 도중에 공급하여 음색제어처리를 할 수 있는 악음발생방법을 제공하는 것을 목적으로 한다.
또한, 연주정보가 발생한 시점에서 처리가 증가하더라도 안정된 음원처리를 하는 것을 목적으로 한다.
또, 파형생성을 위한 연산량을 가능한한 적게 하는 것을 목적으로 한다.
제1도는 본 발명의 제1관점에 따른 악음생성장치의 일실시예의 하드웨어구성을 도시한 블록도이다.
제2도는 제1도의 RAM상의 음색데이터영역을 도시한 도면이다.
제3도는 제1도의 RAM상의 입력버퍼영역을 도시한 도면이다.
제4도는 제1도의 RAM상의 채널레지스터영역을 도시한 도면이다.
제5도는 제1도의 RAM상의 출력버퍼영역을 도시한 도면이다.
제6도는 제1도의 CPU에 의해 실행되는 본 발명에 따른 악음생성처리의 메인루틴 플로차트를 도시한 도면이다.
제7도는 본 발명에 따른 악음생성처리에 있어서의 MIDI수신 인터럽트처리의 플로차트를 도시한 도면이다.
제8도는 제6도의 메인루틴에 있어서의 MIDI처리의 플로차트를 도시한 도면이다.
제9도 (A) (B)는 제8도의 MIDI처리에 있어서의 노트 온처리 및 노트 오프처리의 플로차트를 도시한 도면이다.
제10도는 제6도의 메인루틴에 있어서의 음원처리의 플로차트를 도시한 도면이다.
제11도는 제9도(A)(B), 제10도에 있어서의 발음파형 연산처리의 플로차트를 도시한 도면이다.
제12도는 본 발명의 제2실시예를 설명하는 타이밍도를 도시한 도면이다.
제13도는 본 발명의 제2관점에 따른 실시예에 있어서의 소프트웨어 모듈구성을 도시한 도면이다.
제14도는 태스크의 실행상태를 설명하기 위한 도면이다.
제15도는 톤제너레이터 태스크의 기능을 설명하기 위한 도면이다.
제16도는 악음생성에 관한 각 처리의 실행타이밍을 설명하기 위한 도면이다.
제17도는 톤제너레이터 태스크의 플로차트이다.
제18도 (A)(B)는 파형생성연산의 플로차트이다.
제19도는 본 발명의 악음발생방법이 실행되는 처리장치의 하드웨어 구성예를 도시한 블록도이다.
제20도는 파형생성연산의 또 다른 실시형태를 도시한 플로차트이다.
제21도는 파형생성연산의 또 다른 실시형태를 도시한 플로차트이다.
제22도는 엔벨로프파형계산의 플로차트이다.
제23도는 저주파 신호파형계산의 플로차트이다.
제24도는 볼륨 및 팬의 보간연산의 플로차트이다.
제25도 (A)(B)는 엔벨로프파형 및 저주파 신호파형의 예를 도시한 도면이다.
*도면의 주요부분에 대한 부호의 설명*
1:마이크로 프로세서(CPU) 2:프리세트 음색데이터
3:랜덤액세스메모리(RAM) 4:타이머
5:MIDI인터페이스 6:퍼스컴용 키이보드
7:디스플레이 8:하드디스크
9:재생부 10:디지털·아날로그변환기
11:사운드 시스템 14:파형재생 소프트웨어
16:음원MIDI드라이버 17:WAVE입출력 드라이버
18:인터페이스 19:태스크디스퍼쳐
20:톤제너레이터 태스크 21:웨이브 태스크
22:믹서태스크 23:라이브러리
24:코데크 드라이버 26:코데크회로
50:보간연산부 51, 65:데이터변환기
52:,53,54,55:데이터변환부
상기 목적을 해결하기 위해 본 발명의 제1관점에 따른 악음생성방법은 다수의 악음발생을 지시하는 제1스텝과, 지시된 악음을 어느 하나의 채널에 할당하고, 상기 악음의 제어데이터를 할당한 채널 레지스터에 기록하여 기억시키는 제2스텝과, 소정시간 간격마다 연산개시를 지시하는 제3스텝과, 상기 제3스텝에 있어서의 연산개시의 지시에 따라 각 채널의 악음생성연산을 차례로 실행하고, 상기 채널 레지스터에 기억된 다수 채널분의 제어데이터에 의거해서 다수 샘플분의 파형데이터를 생성하는 제4스텝과, 각 샘플마다 생성된 다수 채널분의 파형데이터를 혼합하고, 다수 샘플분의 혼합샘플을 생성하는 제5스텝과, 상기 다수 샘플분의 혼합샘플을 샘플링주기마다 아날로그신호로 변환하는 제6스텝으로 이루어지며, 상기 제4스텝의 악음생성연산에 있어서는 각 발음채널마다 상기 채널 레지스터로부터의 1회의 제어데이터 판독에 의거해서 상기 제어데이터가 판독된 발음채널의 다수 샘플분의 파형데이터 생성과, 상기 채널 레지스터에의 상기 파형데이터생성후의 제어데이터를 기록하도록 한 것이다.
또한, 상기 악음생성방법에 있어서, 상기 다수의 악음내 각 악음발생의 지시에 따라 도중연산개시를 지시하는 제7스텝을 추가로 구비하고, 상기 제4스텝에서상기 도중연산개시의 지시에 따라 생성이 끝난 파형데이터의 말미에서 상기 악음발생 지시시점까지의 구간에 대응하는 다수 샘플의 파형데이터를 생성하도록 한 것이다.
다음에, 본 발명의 제1관점에 따른 또다른 악음생성방법은, 발음지시된 악음을 어느 하나의 채널에 할당하고, 상기 악음의 제어데이터를 할당한 채널 레지스터에 기록하여 기억하는 제1스텝과, 소정시간 간격마다 연산개시를 지시하는 제2스텝과, 상기 제2스텝에 있어서의 연산개시 지시에 따라 상기 채널 레지스터에 기억된 다수 채널분의 제어데이터에 의거해서 다수 샘플분의 파형데이터를 생성하는 제3스텝과, 각 샘플마다 생성된 다수채널분의 파형데이터를 혼합하고, 다수 샘플분의 혼합샘플을 생성하는 제4스텝과, 상기 다수 샘플분의 혼합샘플을 샘플링주기마다 아날로그신호로 변환하는 제5스텝과, 상기 제1스텝 내지 제5스텝 처리의 빈 시간을 이용하여 다수의 악음 발음지시를 포함하는 처리를 하는 제6스텝으로 이루어지며, 상기 제3스텝에서는 악음생성중인 채널의 악음생성연산만을 하도록 한 것이고, 또 상기 또다른 악음생성방법에 있어서, 제한시간을 검출하는 제7스텝과, 상기 제한시간내에 연산해야 할 전체 채널의 연산이 완료되었는지의 여부를 판정하고, 완료되지 않았다고 판정되었을 경우 연산해야 할 채널내의 어느 하나의 채널소음을 지시하는 제8스텝을 추가로 구비하도록 한 것이다.
다음에, 본 발명의 제1관점에 따른 또 다른 악음생성방법은 다수의 악음발생을 지시하는 제1스텝과, 지시된 악음을 어느 하나의 채널에 할당하고, 상기 악음의 제어데이터를 할당한 채널 레지스터에 기록하여 기억시키는 제2스텝과, 상기 각 채널에서 생성하는 악음의 중요도에 따라 다수 채널의 연산순서를 결정하는 제3스텝과, 소정시간 간격마다 연산개시를 지시하는 제4스텝과, 상기 제4스텝에 있어서의 연산개시 지시에 따라 상기 채널 레지스터에 기억된 다수채널분의 제어데이터에 의거해서 다수 샘플분의 파형데이터를 생성하는 제5스텝과, 각 샘플마다 생성된 다수채널분의 파형데이터를 혼합하고, 다수 샘플분의 혼합샘플을 생성하는 제6스텝과, 상기 다수 샘플분의 혼합샘플을 샘플링주기마다 아날로그신호로 변환하는 제7스텝으로 이루어지며, 상기 제5스텝에 있어서 결정된 연산순서에 따라 각 발음채널마다의 악음을 생성함과 동시에, 실행중인 악음생성이 맞지 않아 상기 제7스텝에서 변환된 상기 아날로그신호가 도중에서 끊길 우려가 있을 경우에는 상기 연산순서 도중의 발음채널 시점에서 상기 악음생성연산을 종료함으로써, 상기 아날로그신호가 도중에서 끊기지 않도록 한 것이다.
상기 제1관점에 따른 본 발명에 의하면, 다수의 악음파형샘플 연산에 대해 1회만 각 발음채널의 준비처리를 행하면 되기 때문에, 오버헤드를 적게 할 수 있다. 이 때문에 생성된 악음의 질을 향상시킬 수 있음과 동시에, 동시발음 채널수를 증가시킬 수 있다.
또한, 악음파형샘플의 연산을 MIDI이벤트가 입력될 때마다 행하도록 하면 연산이 분산되게 되어 발음초기처리에 의한 발음수의 감소를 방지할 수 있다.
또, 생성중인 발음채널내 악음의 레벨(AEG파형)이 충분히 감쇠된 채널은 그 시점부터 연산대상으로부터 제외되어 비발음채널이 되도록 하고 있다.
본 발명의 제1관점에 따른 또 다른 악음생성방법은, 연주정보를 공급하는 공급스텝과, 파형데이터를 생성하는 메인스텝과, 상기 공급스텝으로부터 연주정보가 공급되었을 때 상기 메인스텝을 일시적으로 중단하여 공급된 연주정보의 수입처리를 실행하고, 그 완료후에 다시 상기 메인스텝을 중단한 곳에서 스타트시키는 인터럽트스텝과, 생성된 파형데이터에 의거해서 연산생성시점보다 나중의 타이밍에서 대응하는 악음을 발생시키는 악음발생 스텝을 포함하며, 상기 메인스텝은 상기 수입처리된 연주정보에 의거해서 악음제어데이터를 생성하는 연주정보처리스텝과, 상기 악음제어데이터에 의거해서 파형데이터를 연산생성하는 음원처리스텝을 포함하도록 한 연산장치에서 실행된다.
연주정보의 발생시에 연주정보의 수입처리를 행하고, 수입된 연주정보에 의거한 악음제어 혹은 파형생성이 상기 수입처리의 빈 시간에 실행되는 메인스텝에 포함되도록 했으므로, 연주정보가 발생한 시점에서의 처리 증가분을 상기 빈 시간내에 분산시킬 수 있어서 일시적인 처리 증가를 방지할 수 있다.
상기 또 다른 목적을 달성하기 위해 본 발명의 제2관점에 따른 악음발생방법은, 소정의 오퍼레이팅 시스템을 실행하는 시스템스텝과, 상기 소정의 오퍼레이팅 시스템상에서 실행되는 어플리케이션 프로그램으로부터의 지시에 의거해서 소정기간마다 파형데이터를 소정 샘플수씩 연산생성하는 파형생성스텝과, 상기 파형생성스텝에 의해 연산생성된 파형데이터를 샘플링주기마다 1샘플씩 출력하는 출력스텝과, 상기 소정기간내에 상기 출력스텝으로부터의 요구에 따라 상기 시스템스텝과 상기 파형생성스텝 사이에서 태스크절환을 행하는 제어스텝을 포함하는 연산장치에서 실행되는 악음발생방법이다.
또, 본 발명의 제2의 관점에 따른 또 다른 악음발생방법은, 연주정보를 입력하는 입력스텝과, 소정기간내에 입력된 연주정보에 의거해서 상기 소정기간에 대응하는 파형데이터를 연산생성하는 파형생성스텝과, 소정기간분의 파형데이터를 샘플링주기마다 1샘플씩 출력하는 출력스텝과, 상기 파형생성스텝에서 연산생성된 소정기간분의 파형데이터를 상기 출력스텝에 주고받는 수수(受授)스텝과, 상기 출력스텝에 수수된 파형데이터의 출력이 진행하였음을 검출하여 파형데이터의 수수를 요구하는 요구스텝을 포함하고, 상기 요구스텝으로부터의 요구에 따라 상기 수수스텝이 실행되고, 그후에 상기 파형생성스텝이 실행되는 것을 특징으로 하는, 연산장치에서 실행되는 악음발생방법이다.
또한, 본 발명의 제2관점에 따른 또 다른 악음생성방법은, 연주정보를 입력하는 입력스텝과, 소정기간내에 입력된 연주정보에 의거해서 상기 소정기간에 대응하는 파형데이터를 연주생성하는 파형생성스텝과, 소정기간분의 외부파형데이터를 입력하고, 상기 파형생성스텝에 의해 연산생성된 파형데이터와 합성하는 파형합성스텝과, 상기 파형합성스텝에서 합성된 상기 소정기간분의 파형데이터에 대해 신호처리를 가하는 파형처리스텝과, 상기 신호처리스텝에서 신호처리가 가해진 파형데이터를 샘플링주기마다 1샘플씩 출력하는 출력스텝으로 이루어진 연산장치에서 실행되는 악음발생방법이다.
또한, 본 발명의 제2관점에 따른 또 다른 악음발생방법은, 연주정보를 입력하는 입력스텝과, 입력된 연주정보에 의거해서 다수 스테이지에 걸친 생성연산처리를 실행하여 파형데이터를 생성하는 파형생성스텝과, 외부파형데이터를 입력하는스텝 및 입력된 상기 외부파형데이터를 상기 다수 스테이지의 생성연산처리 도중 스테이지에 삽입하는 스텝으로 이루어진 연산장치에서 실행되는 악음발생방법이다.
종래의 소프트웨어음원은 범용OS(Operating System)상에서 동작하는 어플리케이션 프로그램으로 제공되고 있다. 또한, 이 소프트웨어 음원에 대해 MIDI이벤트 등의 연주정보를 공급하는 MIDI시퀀서나 게임소프트웨어 등의 소프트웨어도 같은 범용OS상에서 동작하는 어플리케이션 프로그램이다. 따라서, 비완전 멀티태스크방식(프리엠프티브가 아닌 멀티태스크방식)의 OS제어하에서는 실행중인 태스크가 OS에 제어를 리턴하지 않는 한 다른 태스크는 실행되지 않기 때문에, 당해 소프트웨어 음원이 소정기간마다 실행되지 않는 경우가 있어서 악음파형샘플을 DAC에 1샘플링주기마다 안정하게 출력시킬 수 없는 경우가 있었다. 이에 대해, 본 발명의 상기 제2관점에 따른 소프트웨어음원은 어플리케이션 프로그램이 아니라, 멀티태스크 관리 프로그램의 제어하에서 동작시키고 있다. 이에 따라 소프트웨어음원을 실시간처리에 필요한 시간간격마다 확실하게 실행시킬 수 있으며, 또 상기 소프트웨어음원의 처리가 실행되지 않는 시간에 범용OS가 동작되어 상기 OS상의 어플리케이션 프로그램의 처리를 실행시킬 수 있다.
또, 상기 제1관점와 같이, 파형버퍼상에 다수 샘플분의 파형데이터를 모아서 연산생성하여 연산효율을 향상시키는 방법을 채용한 소프트웨어음원에 있어서는, 파형재생부(DAC)로부터의 파형생성요구가 발생되었을 때, 소정 기간내에 신속하게 파형데이터를 수수할 것이 요구되지만, 그 때 다수의 이벤트가 발생하거나 하면 신속하게 파형데이터의 수수를 할 수 없게 되므로, 역시 안정된 악음 발생이 곤란해진다. 이에 대해, 제2관점과 같이 개선책을 채용하면 그와같은 문제는 해결된다.
또한, 퍼스널컴퓨터 등의 범용 컴퓨터에 있어서는 음성입력용 ADC(Analog Digital Converter)나 디지털파형 입력보트 등이 구비되어 있는 경우가 많은데, 이들로부터의 파형데이터입력에 대해 종래에는 소프트웨어 음원이 구비하고 있는 음색제어처리기능을 가할 수 없었다.
본 발명의 제2관점에 따른 또다른 악음발생방법은, (1)연주정보를 공급하는 공급스텝, (2)제어정보에 의거해서 파형데이터를 연산생성하는 생성스텝, (3)상기 공급스텝에 의해 연주정보가 공급되었을 때, 상기 생성스텝을 일시적으로 중단하고, 상기 공급된 연주정보에 의거해서 상기 제어정보를 생성하고, 그후에 다시 상기 생성스텝을 중단한 곳에서 스타트시키는 인터럽트스텝 및, (4)생성된 파형데이터에 의거해서 연산생성시점보다 나중의 타이밍에 대응하는 악음을 발생시키는 악음발생스텝으로 이루어진 연산장치에서 실행되는 악음발생방법이다.
또한, 본 발명의 제2관점에 따른 악음발생장치는 음원처리 프로그램과 연주처리 프로그램을 기억한 메모리와, 연주정보를 공급하는 공급수단과, 제어정보를 기억하는 레지스터와, 상기 음원처리 프로그램과 상기 연주처리 프로그램을 실행하는 연산수단이며, 통상은 상기 음원처리 프로그램을 실행함으로써 상기 제어프로그램에 의거해서 파형데이터를 생성하고, 상기 공급수단으로부터 연주정보가 공급되었을 때 일시적으로 상기 음원처리 프로그램을 중단하고 상기 연주처리 프로그램을 실행함으로써, 상기 공급된 연주정보에 대응하는 제어정보를 생성하여 상기 레지스터에 기억시키고, 상기 연주처리 프로그램의 완료에 따라 상기 음원처리 프로그램을 중단한 곳에서 스타트시키는 연산수단과, 음원처리 프로그램에 의해 생성된 파형데이터에 의거해서 파형데이터의 생성보다 지연된 타이밍에서 악음을 출력하는 악음출력수단을 가진 악음발생장치이다.
또한, 본 발명의 제2관점에 따른 또 다른 악음발생방법은 연주정보를 공급하는 공급스텝과, 파형데이터를 생성하는 생성스텝과, 상기 공급스텝으로부터 연주정보가 공급되었을 때 상기 생성스텝을 일시적으로 중단하고, 상기 공급된 연주정보의 처리를 실행하고, 그 후에 다시 상기 생성스텝을 중단한 곳에서 스타트시키는 인터럽트스텝과, 생성된 파형데이터에 의거해서 연산생성시점보다 나중의 타이밍에서 대응하는 악음을 발생시키는 악음발생스텝을 포함하고, 상기 생성스텝은 상기 인터럽트스텝에 의해 처리된 연산정보에 의거해서 파형데이터를 연산생성하는 것을 특징으로 하는 연산장치에서 실행되는 악음발생방법이다.
또한, 본 발명의 제2관점에 따른 또 다른 악음발생방법은 소정의 오퍼레이팅 시스템을 실행하는 시스템스텝과, 상기 소정의 오퍼레이팅 시스템상에서 실행되는 어플리케이션 프로그램으로부터의 지시에 의거해서 소정기간마다 파형데이터를 소정 샘플수씩 연산생성하는 파형생성스텝과, 상기 파형생성스텝에 의해 연산생성된 파형데이터를 샘플링주기마다 1샘플씩 출력하는 출력스텝 및 상기 소정기간내에 상기 출력스텝으로부터의 요구에 따라 상기 시스템스텝과 상기 파형생성스텝 사이에서 태스크절환을 행하는 제어스텝을 포함하고, 상기 파형생성스텝은 간헐적으로 악음파라미터연산을 실행하도록 되어 있는 연산장치에서 실행되는 악음발생방법이다.
또한, 본 발명의 제2관점에 따른 또 다른 악음발생방법은 연주정보를 입력하는 입력스텝과, 소정기간내에 입력된 연주정보에 의거해서 상기 소정기간에 대응하는 파형데이터를 연산생성하는 파형생성스텝과, 소정기간분의 파형데이터를 샘플링주기마다 1샘플씩 출력하는 출력스텝과, 상기 파형생성스텝에서 연산생성된 소정기간분의 파형데이터를 상기 출력스텝에 주고받는 수수스텝과, 상기 출력스텝에 수수된 파형데이터의 출력이 진행되었음을 검출하여 파형데이터의 수수를 요구하는 요구스텝을 포함하고, 상기 파형생성스텝은 간헐적으로 악음파라미터연산을 실행하도록 되어 있으며, 또 상기 요구스텝으로부터의 요구에 따라 상기 수수스텝이 실행되고, 그 후에 상기 파형생성스텝이 실행되는 연산장치에서 실행되는 악음발생방법이다.
또한, 본 발명의 제2관점에 따른 또 다른 악음생성방법은 연주정보를 입력하는 입력스텝과, 소정기간내에 입력된 연주정보에 의거해서 상기 소정기간에 대응하는 파형데이터를 연산생성하는 파형생성스텝과, 소정기간분의 외부파형데이터를 입력하고, 상기 파형생성스텝에 의해 연산생성된 파형데이터와 합성하는 파형합성스텝과, 상기 파형합성스텝에서 합성된 상기 소정기간분의 파형데이터에 대해 신호처리를 가하는 파형처리스텝 및 상기 신호처리스텝에서 신호처리가 가해진 파형데이터를 샘플링주기마다 1샘플씩 출력하는 출력스텝을 포함하고, 상기 파형생성스텝은 간헐적으로 악음파라미터연산을 실행하도록 되어 있는 연산장치에서 실행되는 악음발생방법이다.
연주정보의 발생시에 연주처리를 우선적으로 행하고, 연주처리의 빈 시간에 음원처리를 계속적으로 하도록 하고 있으므로, 연주정보가 발생된 시점에서 처리량이 증가하여 음원처리가 그다지 실행되지 않아도 그 이외의 시간에서 그 보충을 할 수 있으므로, 음원처리를 안정하게 실행할 수 있다.
또한, 연주정보의 발생시에 연주정보의 수입처리를 행하고, 수입된 연주정보에 의거한 악음제어 혹은 파형생성은 상기 수입처리의 빈 시간에 행하도록 했으므로, 연주정보가 발생한 시점에서의 처리 증가분을 상기 빈 시간내에 분산시킬 수 있어서 일시적인 처리 증가를 방지할 수 있다.
먼저, 제1도 내지 제12도를 참조하여 제1관점에 따른 본 발명의 실시예를 설명한다.
본 발명의 악음생성방법을 실행할 수 있는 본 발명의 악음생성장치의 일실시예의 구성을 제1도에 도시했다.
이 도면에 있어서, 1은 어플리케이션 프로그램 등을 실행하여 악음파형샘플의 생성 등 각종 제어를 행하는 마이크로프로세서(CPU), 2는 프리세트 음색데이터 등이 기억되어 있는 리드 온리 메모리(ROM), 3은 CPU(1)의 워크메모리영역이나 음색데이터영역, 입력버퍼영역, 채널레지스터영역, 출력버퍼영역 등의 기억영역을 가진 랜덤액세스메모리(RAM), (4)는 시각을 지시함과 동시에, 타이머 인터럽트처리의 타이밍을 CPU(1)에 지시하는 타이머, 5는 MIDI이벤트가 입력됨과 동시에, 생성된 MIDI이벤트를 출력하는 MIDI인터페이스, 6은 영문, 가나, 숫자, 기호 등의 키를 갖춘 소위 퍼스컴용 키이보드이다.
7은 사용자가 악음생성장치와 대화하기 위한 디스플레이(모니터), 8은 악음을 생성하는 프로그램 등의 어플리케이션 프로그램이 인스톨되어 있음과 동시에,악음파형샘플을 생성하기 위해 사용하는 악음파형데이터 등이 기억되어 있는 하드디스크(HDD), 9는 RAM(3)의 일부의 CPU에 의해 지정된 영역에 기억되어 있는 악음파형샘플 데이터를 CPU(1)를 통하지 않고 직접 수수를 행하며, 일정한 샘플링주기(예를들면 48kHz)마다 디지털·아날로그변환기(DAC)(10)에 공급하는 재생부(DMA;Direct Memory Access), 10은 악음파형샘플 데이터를 수수아날로그신호로 변환하는 디지털·아날로그변환기(DAC), 11은 DAC(10)로부터 출력된 아날로그신호로 변환된 악음신호를 방음하는 사운드 시스템이다.
이상의 구성은 퍼스컴, 워크스테이션 등과 같으며, 그 속에서 본 발명의 악음발생방법을 실시할 수 있다.
상기한 바와 같이 RAM(3)은 각종 데이터가 기억된 영역을 가지고 있으나, 그 속의 음색데이터가 기억된 영역을 제2도에, 입력버퍼의 영역을 제3도에, 채널레지스터 영역을 제4도에, 출력버퍼 영역을 제5도에 도시했다.
제2도에 도시한 영역에 있어서 PD1, PD2, …, PD16은 16종류분의 음색데이터이며, 각각의 음색데이터는 각 음역의 파형을 지정하는 데이터(각 음영파형지정), 비프라토 등을 가할 때에 사용하는 LFO(Low Frequency Oscillator) 제어용 데이터(LFO제어OD), 음색필터특성을 제어하는 필터엔벨로프의 발생제어용 데이터(FEG제어OD), 진폭을 제어하는 엔벨로프의 발생제어용 데이터(AEG제어OD), 벨로시티에 의해 악음의 상승속도 등을 바꾸는 터치제어용 데이터(터치제어OD), 그밖의 데이터(그밖의 OD)로 되어 있다.
또한, OD는 오리지널 데이터임을 나타내고 있으며, 발음지시시의 터치데이터, 음고데이터 등에 따라 이들 오리지널 데이터에 가공을 가하여 음원이 사용하는 발음용 데이터를 작성하도록 하고 있다.
또, WD1, WD2, …, WDn은 파형데이터로서 입력된 음고데이터에 따라 PD1, PD2, …, PD16의 음색데이터에 있어서의 각 음영파형지정데이터에 의해 어느 하나의 파형데이터가 지정된다.
다음에 제3도에 도시한 입력버퍼의 영역에는 MIDI인터페이스(5)를 통해 입력되는 노트 온, 노트 오프나 각종 이벤트의 MIDI이벤트데이터(ID1,ID2,ID3,…)가 차례로 기록되고, 이 MIDI이벤트데이터(ID1,ID2,ID3,…)가 판독됨으로써 그 이벤트처리는 악음생성장치내에서 실행된다.
이 MIDI이벤트데이터(ID1,ID2,ID3,…)는 MIDI이벤트의 데이터내용(예를들면 데이터1 내용)과, 그 데이터의 발생시각(데이터1 발생시각)에 의해 구성된다. 이 발생시각은 MID이벤트데이터 수신시에 타이머(4)의 현재시각을 받아들임으로써 알 수 있다.
다음에 제4도에 도시한 영역은 각각 서로 독립된 다수의 악음생성을 제어하기 위한 데이터를 기억하는 채널(ch)레지스터로서 사용되며, 이 예(1ch,2ch,…,32ch)의 32채널분의 영역이 준비되어 있다. 각 채널영역은 노트넘버, 파형지정데이터(파형지정D), LFO제어데이터(LFO제어D), 필터엔벨로프 제어데이터(FEG제어D), 진폭엔벨로프 제어데이터(AEG제어D), 노트 온데이터, 그밖의 데이터(그밖의 D), 및 CPU(1)가 프로그램 실행시에 사용하는 워크영역으로 되어 있다.
이 파형지정D, LFO제어D, FEG제어D, AEG제어D는 상기한 오리지널 데이터에 가공이 가해진 발음용 데이터이다.
다음에 제5도에 도시한 영역은 다수의 출력버퍼용 영역으로서, 차례로 교대하면서 발음파형생성용 출력버퍼(X)로서 사용되고 있다. 이 출력버퍼는 후술하는 바와 같이 연산처리에 의해 생성된 각 발음채널의 악음파형 샘플데이터(SD1, SD2, SD3, …)가 생성될 때마다 채널누산되어 격납된다. 출력버퍼의 어느 하나가 발음파형 생성용 출력버퍼(X)로서 지정되어 파형생성연산에 사용된다. 이 출력버퍼(X)는 2개 이상 준비된다. 가장 간단한 구성으로는 출력버퍼(X)를 2개로 하여 한쪽에 격납되어 있는 데이터를 재생부(DMA)(9)에 넘겨서 재생하는 동안에 또 한쪽에 연산한 다음의 악음파형샘플 데이터를 격납하는 더블버퍼구성으로 할 수 있다.
또한, 출력버퍼의 사이즈는 100워드, 500워드, 1K워드, 5K워드 등 임의로 설정할 수 있으나, 사이즈를 크게 하면 발음에 지연을 일으키고, 사이즈를 적게 하면 시간적 마진이 감소하여 일시적인 연산량의 증가시 응답이 나빠지게 된다.
그래서, 리얼타임성이 요구되지 않는, 예를들면 시퀀서연주 등의 경우에는 연주타이밍을 앞으로 비켜놓음으로써 발음지연을 흡수할 수 있기 때문에 출력버퍼의 사이즈를 크게 할 수 있다. 한편, 리얼타임의 연주가 필요해지는, 예를들면 건반연주 등의 경우에는 발음지연을 방지하기 위해 버퍼사이즈는 100~200워드로 하는 것이 바람직하다.
이상은 재생 샘플링주파수가 40kHz~50kHz인 경우이며, 샘플링주파수를 낮게 설정하는 경우에는 발음지연을 방지하기 위해 좀더 작은 사이즈로 할 필요가 있다.
다음에, 본 발명의 악음생성방법의 제1실시예 내지 제5실시예를 설명하겠으나, 각 실시예는 상기 제1도에 도시한 본 발명의 악음생성장치에 의해 각각 실행할 수 있는 것이다.
본 발명의 제1실시예의 악음생성방법은 CPU(1)가 악음을 생성하는 어플리케이션 프로그램을 실행하는 각 발음채널의 악음생성처리에 있어서 다수 악음파형샘플, 예를들면 100악음파형샘플을 모아 생성하도록 한 것이다. 즉, 각 발음채널의 처리에 있어서, DAC(10)의 샘플링주기 예를들면 100사이클분을 모아 악음파형샘플이 생성되게 된다.
그리고, 소정의 계산시각마다 전체 발음채널분의 악음생성처리가 실행되고, 생성된 다수의 악음파형샘플이 100샘플이 되었을 경우에는 DAC(10)의 100샘플링 주기분의 채널누산치로서 차례로 누산되어 상기한 출력버퍼에 기억된다. 출력버퍼에 기억된 악음파형샘플은 전체 발음채널분의 누산완료후에 재생부(DMA)(9)에 의해 상기 샘플링주기마다 1샘플씩 판독되고, DAC(10)에 공급되어 사운드 시스템(11)에서 발음된다.
또한, 계산시각은 다수의 출력버퍼를 교대로 사용하며 악음생성처리를 실행했을 경우, 악음파형샘플이 중도에서 끊기지 않고 판독재생할 수 있는 간격마다 발생되도록 제어되고 있다.
이 제1실시예의 악음생성방법에 의하면, 각 발음채널의 준비처리는 모아서 생성된 다수의 악음파형샘플의 연산에 대해 1회만 하면 되기 때문에 전체 연산시간내에서 이 준비처리에 소비되는 연산시간의 비율이 감소하여 오버헤드를 적게 할수 있다. 이 때문에, 생성되는 악음파형샘플의 질적 향상이나 동시발음수를 증가시킬 수 있다.
또한, 계산시각간의 1구간(출력버퍼 사이즈에 상당)을 다시 n등분하고, 그것에 대응하는 시간간격마다 발음파형연산을 행하고, 최후의 n개째의 연산에 의해 완성된 1구간분의 악음파형샘플을 단위로 하여 재생부(DMA)(9)가 판독되도록 해도 된다.
다음에, 본 발명의 제2실시예의 악음생성방법을 설명한다.
본 발명의 제2실시예의 악음생성방법은 상기 제1실시예와 같이 CPU(1)가 악음을 생성하는 어플리케이션 프로그램을 실행하는 각 발음채널의 악음생성처리에 있어서, 다수의 악음파형샘플을 모아서 생성하도록 하고 있으나, 좀더 추가하여 입력데이터, 이 예에서는 MIDI이벤트가 MIDI인터페이스(5)에서 수신될 때마다 그 시점까지의 발음파형연산을 하도록 하고 있다. 그리고, 소정의 계산시각에는 미리 정해진 다수의 악음파형샘플(하나의 출력버퍼분의 샘플)중 미연산 악음파형샘플뿐인 발음파형연산을 하도록 한 것이다.
이것은 각 발음파형연산에서는 발음하고 있는 발음채널에 대한 연산을 하는 것이지만, 그중 입력데이터에 따라 발음형태가 변화하는 키이온이벤트 혹은 키이오프이벤트(피치밴드, 음량변화) 등이 있는 발음채널에 있어서는 대응을 변화시키지 않고 발음을 계속하는 발음채널에 비해 많은 연산처리가 필요해진다.
이 경우, 일정시간마다의 계산시각으로 하면 입력데이터가 증가되었을 때, 연산시간이 발음형태가 변화하는 발음채널에 많이 점령되기 때문에 결과적으로 연산할 수 있는 발음채널수가 감소되어 버리게 된다.
특히, 발음을 개시하는 발음채널에 대해서는 어드레스카운터, 각종 엔벨로프발생기의 초기설정, F넘버발생 등 많은 초기설정처리가 필요하여 연산처리시간이 많이 걸린다.
이 제2실시예를 제12도에 도시한 타이밍챠트를 참조하면서 좀더 설명하면, 출력버퍼는 상기한 더블버퍼구성으로 되어 있으며, 이 2개의 출력버퍼가 A, B로 되어 그 판독타이밍이 동 도면(e)에 도시되어 있다. 그리고, 각 버퍼(A, B)의 재생에 요하는 시간은 TA및 TB로 되어 있으며 TA= TB로 되어 있다.
먼저, 출력버퍼(A)용 계산대상이 되는 시각범위 t0~t1에 있어서, 동 도면 (a)에 도시한 바와 같이, 시각(ta)에서 MIDI이벤트를 2개 MIDI수신부가 수신하면 동 도면 (b)에 도시한 바와 같이 음원드라이버부에서 처리가 행해지며, 또 동 도면 (c)에 도시한 바와 같이 음원부에 의해 to~ta사이의 악음파형샘플(A1)이 계산된다.
또한, MIDI수신부는 입력된 MIDI이벤트를 수신하는 MIDI인터페이스(5)를 포함하며, 상기한 바와 같이 MIDI이벤트의 데이터를 입력버퍼에 발생식각와 함께 기록한다. 음원드라이버부는 입력버퍼의 데이터 혹은 퍼스컴 키이보드(6)로부터의 입력을 받아들이고, 음원채널 어사인 및 입력에 따라 보이싱 파라미터로부터 음원파라미터에의 변환을 행한다. 또한, 음원부는 음원파라미터를 받아들이고, 파형데이터를 가공하여 실제로 발음하는 악음파형샘플을 생성한다. LPF부는 생성된 악음파형샘플중 반환 노이즈성분을 제거한다. 그리고, LPF부의 출력이 출력버퍼(A,B)에기록된다.
또한, 음원드라이브, 음원부, LPF부는 CPU(1)가 어플리케이션 프로그램을 실행함으로써 실현되는 기능이다.
계속해서, 시각마다(tb) MIDI이벤트가 하나 MIDI수신부에서 수신되면 마찬가지로 음원드라이버부에서 처리가 행해지며, 추가로 음원부에 의해 ta~tb)사이의 악음파형샘플(A2)이 계산된다.
그 후, 시각(t1)에 도달하면 음원부에 의해 tb~t1사이의 악음파형샘플(A3)이 계산된다. 이 경우, 시각(ta, tb)에 있어서 키이온이벤트가 입력되면 그 발음초기처리도 포함하여 이 시각(t1)에서 연산처리된다. 또한, LPF부에서 필터처리가 행해지며 출력버퍼(A)용 악음파형샘플의 생성이 종료된다.
다음에, 출력버퍼(B)용 계산대상이 되는 시각범위(t1~t2)에 있어서, 동 도면 (a)에 도되시한 바와 같이, 시각(tc)에서 새로운 MIDI이벤트를 3개 MIDI수신부가 수신하지만, 음원부는 악음파형샘플(A3)를 계산중이므로, 입력데이터는 계산시간이 할당되기까지 입력버퍼에 놓여진다. 그리고, 악음파형샘플(A3)의 계산이 종료하고, 또 LPF부의 필터처리도 완료되면 입력버퍼중의 데이터가 음원드라이버부에서 처리되고, 음원부에 의해 t1~tc) 사이의 입력에 대응하는 악음파형셈플(B1)이 계산된다. 이 경우, 계산처리가 지연되어도 입력데이터의 발생시각도 입력버퍼에 기록되고 있기 때문에 발음타이밍에는 영향을 주지 않게 된다.
마찬가지로, 악음파형샘플(B1)의 계산기간중에 새로운 MIDI이벤트를 4개 수신하지만, 이 입력데이터도 악음파형샘플(B1)의 계산종료후에 계산된다.
이에 따라, 악음파형샘플(B2)은 tc~td사이의 입력에 대응하는 악음파형샘플이 되며, 악음파형샘플(B3)은 td~te사이의 입력에 대응하는 악음파형샘플이 되고, 악음파형샘플(B4)은 te~t2사이의 입력에 대응하는 악음파형샘플이 된다.
또한, 악음파형샘플(A5)은 t2~t3사이의 입력에 대응하는 악음파형샘플이 된다.
이와 같이 제2실시예는 입력데이터가 발생한 경우에는 그 시점까지의 발음파형연산을 그 시점에서 실행하도록 하고 있기 때문에, 악음파형샘플의 계산시간은 분산된다. 따라서, 소정시간마다 행해지는 계산시간에 있어서의 처리가 증가하지 않기 때문에 키이온이벤트 등의 발음형태를 변화시키는 입력데이터가 많이 발생하더라도 동시발음수가 감소하는 등의 문제가 생기는 것을 방지할 수 있다.
다음에 본 발명의 제3실시예의 악음파형 생성방법을 설명한다.
그러나, 소정의 타이밍에서 계산시각을 발생하고, 소정수의 악음파형샘플을 모아서 연산생성하도록 했을 경우, 연속적으로 악음을 발생하기 위해서는 과거에 생성한 파형샘플의 생성종료 이전에 그것에 계속되는 상기 소정수의 파형샘플을 공급할 필요가 있다. 그러면, 처리해야 하는 발음채널수가 많아 그 발음파형 연산량이 너무 많을 경우, 전체 채널분 연산을 실행하면 그 악음파형샘플의 공급이 맞지 않아 악음이 중도에서 끊겨버린다는 결점이 생긴다.
이 제3실시예의 악음파형생성방법은 이 결점을 해결하고자 하는 것으로, 악음파형샘플의 공급이 DAC(10)의 변환타이밍에 맞는지의 여부를 판정하고, 맞지않는다고 판정되었을 경우에는 중요도가 낮은 발음채널로부터 소음하는 발음채널을 선정한다. 그리고, 선정된 발음채널에 대해서는 연산시에 상기 소정수의 파형샘풀중 초기 기간에 대응하는 댐프파형샘플만이 단시간에 연산된다.
이와 같이 선정된 소음되는 발음채널에 있어서의 악음파형샘플은 단기간의 댐프파형밖에 연산하지 못하므로, 이 발음채널의 연산시간이 단축되어 전체적으로 악음파형샘플의 공급이 DAC(10)의 변환타이밍에 맞게 된다.
또한, 중요한 음이란,
(1) 그 시점에서 음량이 큰 음.
(2) 어태크부 재생중인 발음을 막 개시한 음.
(3) 다수 파트음 연주되고 있을 경우, 가장 낮은 음(베이스음).
(4) 다수 파트 연주되고 있을 경우, 가장 높은 음(리드음).
(5) 다수 파트음 연주되고 있는 경우의 솔로 파트음.
으로 하는 것이 일반적이다.
또, 상기 제3실시예의 변형예를 설명하면, 연산하는 발음채널을 발음파형연산에 앞서서 중요한 음부터 차례를 붙여서 그 순위에 따라 중요한 음부터 차례로 발음연산을 하도록 하고, 발음파형연산이 맞지않을 경우에는 발음파형연산을 도중에서 그만두고, 그 시점까지 생성된 악음파형샘플만으로 발음을 하도록 한 것이다.
이와 같이 하면 만일 연산을 중지할 필요가 생겼을 경우에도 그것에 의해 음이 사라져 버리는 채널은 중요도가 낮은 비교적 영향이 작은 악음을 생성하는 채널이 된다.
또한, 제3실시예 및 그 변형예에서 입력데이터가 발생할 때마다 발음파형연산을 하도록 해도 된다.
또, 입력데이터가 발생할 때마다 발음파형연산을 하지 않고, 마지막으로 1구간분 모아서 발음연산을 하도록 해도 된다. 이 경우, 입력데이터의 수에 따라 계산시각을 앞당기도록 트리거를 가하는 것이 바람직하다.
또는, 계산시 각 사이의 1구간을 다시 n등분하여, 그것에 대응하는 시간간격에서 발음파형연산을 행하고, 마지막 n개째의 연산으로 완성한 1구간분의 악음파형샘플을 단위로 하여 재생부(DMA)(9)가 판독되도록 해도 된다.
그러나, 소정의 타이밍에서 계산시각을 발생하고, 다수의 악음파형샘플을 모아 연산생성하도록 할 경우, 혹은 입력데이터가 발생할 때마다 발음파형연산을 할 경우, 연속적으로 악음을 발생하기 위해서는 과거에 생성한 파형샘플의 생성종료 이전에 그것에 이어지는 파형샘플을 공급할 필요가 있다. 그러면 처리해야 할 발음채널수가 많아 그 발음파형연산량이 너무 많은 경우나, 악음생성처리 이외의 처리(시퀀서처리 등)에 시간이 소비되는 등의 이유로 그 악음파형샘플의 공급이 맞지않았을 겨우, 처리 도중의 악음파형샘플이 판독되어 노이즈가 발음될 가능성이 있었다.
그래서, 본 발명의 제4실시예의 악음발생방법에 있어서는 다음과 같이 해서 이것을 해결하고 있다.
본 발명의 제4실시예에 있어서, 재생부(DMA)(9)에는 CPU(1)가 출력버퍼의 데이터를 넘기는 지령을 보내도록 하고 있다. 이 경우, 생성된 소정수의 악음샘플을 기억하는 출력버퍼 자체의 어드레스를 1회의 판독구간으로 하여 재생부에 9로 설정하거나, 반복판독되는 반복판독구간으로 설정할 수 있으나, 그위에 추가하여 상기 어드레스를 현재 모두 판독중인 판독구간에 계속해서 판독할 수 있도록 판독구간의 예약을 설정할 수 있다.
본 실시예에서는 이 판독구간의 예약에 의해 악음파형연산샘플이 생성된 후에 출력버퍼에 예약등록이 행해지고, 이미 판독중인 파형에 계속해서 판독된다. 악음파형샘플의 연산이 종료되지 않았을 경우에는 그 예약등록이 행해지지 않으므로, 처리 도중의 악음파형샘플이 발음되는 데 따른 노이즈의 발생을 방지할 수 있다.
이 경우 발음은 일시적으로 도중에서 끊어지게 되지만, 끊어지는 시간은 예를들면 44.1kHz의 샘플주파수에 있어서의 수 샘플시간으로 억제하면 영향은 적다. 수 샘플시간으로 억제하려면 상술한 바와 같이 발음되고 있는 채널수를 제어하면 된다. 또, 처리가 완료되면 예약등록이 행해져서 발음되게 된다.
또, 입력데이터가 발생할 때마다 발음파형연산을 행하지 않고, 마지막으로 1구간분 모아서 발음파형연산을 하도록 해도 된다. 이 경우, 입력데이터의 수에 따라 계산시각을 앞당기도록 트리거를 가하는 것이 바람직하다.
또는, 계산시각 사이의 1구간을 다시 n등분하여 그것에 대응하는 시간간격마다 발음파형연산을 행하고, 마지막 n개째의 연산에 의해 완성한 1구간분 악음파형샘플의 발음예약을 하도록 해도 된다.
상술한 바와 같이, 소정 타이밍에 계산시각을 발생하여, 다수의 악음파형샘플을 모아서 연산생성하도록 했을 경우 혹은 입력데이터가 발생할 때마다 발음파형연산을 할 경우, 연속적으로 악음을 발생하기 위해서는 과거에 생성한 파형샘플의 생성종료 이전에 그것에 이어지는 파형샘플을 공급할 필요가 있다.
그러나, 이 계산시각은 과거에 생성한 악음파형샘플의 종료타이밍에 의거해서 발음파형의 생성을 실행하는데 필요한 시간분, 그 종료타이밍보다 빠른 타이밍이 지정된다. 이 종료타이밍은 CPU(1)가 재생부(DMA)(9)의 상태(플래그)를 확인하고, 악음파형샘플의 재생구간이 다음 구간으로 이행하였음을 검지하도록 검출하기 때문에 재생부(DMA)(9)의 상태(플래그)가 변화하고 나서 CPU(1)가 그것을 검지하기까지 시간지연이 발생하게 된다. 또, 이 시간지연은 CPU(1)가 상술한 검지를 실행하는 타이밍에 따르기 때문에 그 타이밍에 따라 불균일한 시간지연이 된다.
그러면, 이 불균일한 시간지연이 발생하고 있는 타이밍에 의거해서 계산시각을 발생하도록 하면 정확한 계산시각을 발생할 수 없게 된다.
특히, 크게 지연된 타이밍이 한번만 검출되면 그것에 의거해서 발생된 계산시각은 연산개시시각으로부터 발음파형공급까지의 연산시간이 짧아지기 때문에 이 경우에는 동시발음수가 일시적으로 감속하게 된다.
그래서, 본 발명의 제5실시예의 악음생성방법에 있어서는 다음과 같이 하여 이를 해결하고 있다.
CPU(1)는 과거에 재생부(DMA)(9)의 상태변화가 검출된 시각을 다수 기억해 둔다. 이 다수 시각의 시각간의 평균을 취함으로서 다음 검출시각을 예측하도록 한다. 이 예측된 시각은 재생부(DMA)(9)에 있어서의 진짜 종료타이밍으로부터의 검출지연이 평균화된 것이 되므로, 예측된 타이밍보다 소정 시간전의 타이밍을 대체로 정확한 종료타이밍으로서 검출할 수 있다. 그리고, 이 종료타이밍에 의거해서 계산시각을 발생하도록 한다.
이와 같이, 검출된 종료타이밍은 평균화되어 편차가 적어지므로, 매계산시각에 확보되는 연산시간도 균일화되므로 안정된 악음생성동작이 실행되게 된다.
또한, 입력데이터가 발생할 때마다 발음파형연산을 하지 않고, 마직막으로 1구간분 모아서 발음파형연산을 하도록 해도 된다. 이 경우, 입력데이터의 수에 따라 계산시각을 앞당기도록 트리거를 가하는 것이 바람직하다.
또는, 계산시각 사이의 1구간을 다시 n등분하여 그것에 대응하는 시간간격에서 발음파형연산을 행하고, 마지막 n개째의 연산에 의해 완성한 1구간분의 악음파형샘플의 발음예약을 하도록 해도 된다.
다음에, 상기한 본 발명의 제1실시예 내지 제5실시예의 요소를 합친 악음생성방법 및 장치의 동작을 플로차트를 참조하면서 설명한다.
제6도는 메인루틴의 플로차트를 도시한 도면으로, 메인루틴이 스타트되면 스텝S10에서 초기설정이 행해진다. 초기설정에서는 타이머(4)나 DMA의 설정, 전체 발음채널의 클리어나 음색데이터 및 파형데이터 등의 준비가 행해진다. 계속해서, 스텝S20에서 키이보드(6)로부터의 입력이 처리되는 키이보드처리가 행해지고,스텝S30에서 입력된 MIDI이벤트에 따른 처리가 행해진 MIDI처리가 행해진다. 또한 스텝S40에서 악음파형샘플이 생성된 발음파형연산 등이 행해지는 음원처리가 행해지고, 스텝S50에서는 그밖의 처리가 행해지며, 스텝S20으로 리턴하여 스텝S20 내지 스텝S50의 처리가 순환되며 반복적으로 행해진다(정상루프).
이러한 처리는 멀티태스크의 방법을 이용해서 다른 소프트와 동시에 실행된다.
다음에, CPU(1)가 실행하는 MIDI수신인터럽트처리의 플로차트를 제7도에 도시한다. 이 처리는 MIDI인터페이스(5)가 외부에서 어떤 MIDI이벤트를 수신했을 때 인터럽트에 의해 기동된다. 이 MIDI수신인터럽트처리는 다른 처리보다 우선적으로 실시되는 처리이다. 이 MIDI수신인터럽트처리가 개시되면 스텝S100에서 MIDI인터페이스(5)에 의해 수신된 수신데이터가 받아들여지고, 스텝S110에서 그 수신데이터는 수신된 시점의 시각데이터와 쌍으로 제3도에 도시된 바와 같은 형식으로 상술한 입력버퍼에 기록되게 되어 인터럽트발생시의 처리로 리턴된다. 이에 따라 수신한 MIDI데이터는 차례로 수신시각과 함께 입력버퍼에 기록되게 된다.
다음에, 메인루틴의 정상루프에 의해 스텝S30으로 실행되는 MIDI처리의 상세한 플로차트를 제8도에 도시한다.
MIDI처리가 개시되면 스텝S200에서 입력버퍼를 읽으러 가서 미처리 수신데이터가 있는지의 여부를 확인한다. 미처리의 수신데이터가 있으면 스텝S210에서 판단되면 스텝S220으로 진행하여 수신데이터의 내용에 따른 분기를 행한다. 수신데이터가 노트 온 이벤트인 경우에는 스텝S230으로 분기되어 노트 온처리가 실행된다.또, 수신데이터가 노트 오프인 경우에는 스텝S240으로 분기되어 노트 오프처리가 실행되며, 수신데이터가 그밖의 데이터인 경우에는 스텝S250으로 분기되어 그 밖의 처리가 실행된다. 그리고, 이들 중 어느 하나의 처리가 종료되면 MIDI처리는 종료된다. 또한, 수신데이터가 없다고 스텝S210에서 판단되면 그대로 MIDI처리를 종료한다.
다음에, 상술한 MIDI처리에 있어서 수신데이터가 노트 온 이벤트인 경우에 스텝S230에서 실행된 노트 온처리의 플로차트를 제9A도에 도시한다.
노트 온처리가 개시되면 스텝S300에서 입력버퍼중의 그 노트 온 이벤트의 노트넘버가 NN으로서 벨로시티가 VEL로서 각각 레지스터에 받아들여지며, 그 노트 온 이벤트의 발생시각이 TM으로서 레지스터에 받아들여진다. 계속해서, 스텝S310에서 레지스터에 받아들여진 노트넘버 NN의 발음할당처리가 행해져서 할당된 채널(ch)의 번호가 i로서 레지스터에 받아들여진다.
또한, 스텝S320에서 제4도에 도시한 ch레지스터중 레지스터에 받아들여진 ch번호 i의 ch레지스터에, 상기 노트넘버(NN), 벨로시티(VEL)에 맞는 악음제어데이터를 설정한다. 설정된 악음제어데이터는 제2도에 도시한 16음색분의 음색데이터중 상기 노트 온 이벤트를 수신한 MIDI채널에 대응하는 음색데이터(각종 OD)를, 상기 노트넘버(NN), 벨로시티(VEL)의 값에 따라 가공하여 얻어지는 발음용 데이터(각종 D)이다.
여기서, 발음용 데이터중의 파형지정데이터(D)는 제2도에 도시한 음색데이터중 음역파형지정데이터를 노트넘버(NN)에서 참조함으로써 구해지며, 상기노트넘버(NN)에 대응하는 악음생성에 이용해야 할 파형으로서 파형데이터(WD1)로부터 파형데이터(WDn)중 어느 하나를 지정한다. 상기 악음제어데이터의 설정후, 스텝S330에서 ich의 노트 온 플래그를 정하도록 한다.
다음에, 스텝S340에서 발음파형의 연산생성을 실행하는데, 이 경우의 연산생성은 현재 준비중인 버퍼(X)에 기록해야 할 전체 파형중 시각(TM) 이전에 또 미계산의 파형(부분파형)에 대해 실행되며, 산출된 상기 부분파형을 출력버퍼(X)에 기록하도록 한다. 여기서, 부분파형은 스텝S210에 있어서 새로운 수신데이터가 검출된 시점에서(데이터가 확정되고) 연산생성이 가능해지는 범위의 발음파형에 상당한다. 생성하는 파형은 수신한 노트 온 이벤트의 발생시각(TM) 시점까지의 발음파형이며, 상기 노트 온에 따라 발음개시하는 악음파형은 상기 발음파형에 포함되지 않고, 이후에 생성되는 발음파형쪽에 포함된다. 이 처리의 상세에 대해서는 후술하는 제11도에 도시했다.
이 스텝S340 및 스텝S350의 처리는 앞의 제12도에 관련지워 설명한 악음파형 A1혹은 A2등의 연산생성처리에 대응하지만, 스텝S350에서는 상술한 스텝320에서 ch레지스터에 설정된 ich의 악음제어데이터에 의거해서 ich에 있어서의 발음 초기설정을 ch레지스터의 워크영역에 대해 행한다. 여기서, 이 워크영역은 각 발음(ch)의 악음생성에 필요한 어드레스 현재치, 각종 엔벨로프 현재치 및 현재 스테이트, LFO파형 현재치 등 각 ch의 파형생성에 필요한 다수의 데이터 현재치를 기억한다. 이 발음초기처리가 종료되면 노트 온처리는 종료된다.
또한, 초기설정에 있어서는 파형판독 어드레스 현재치에 대한 스타트 어드레스의 설정, 노트넘버(NN)에 대응하는 F넘버의 발생 및 LFO, 필터EG, 음량EG, 보간연산, 필터연산 등의 각 초기설정이 행해진다. 이 초기설정은 상기한 바와 같이 연산시간을 요하는 처리이다.
다음에, 상술한 MIDI처리에 있어서, 수신데이터가 노트 오프 이벤트인 경우에 스텝S240에서 실행되는 노트 오프처리의 플로차트를 제9도(b)에 도시했다.
노트 오프처리가 개시되면 스텝S400에서 입력버퍼중의 그 노트 오프이벤트의 노트넘버가 NN으로서 레지스터에 받아들여지고, 노트 오프이벤트의 발생시각이 TM으로서 레지스터에 받아들여진다. 계속해서, 스텝S410에서 노트넘버NN로 발음되고 있는 발음채널(ch)이 서치되며, 발견된 발음ch의 번호가 i로서 레지스터에 받아들여진다.
다음에, 스텝S420에서 ich의 노트 온플래그를 지우고, 스텝S430에서는 발음파형의 연산생성이 실행된다. 이 경우의 연산생성처리는 상술한 스텝S340과 똑같은 처리로서, 시각(TM) 이전의 미계산파형(부분파형)을 산출하여 출력버퍼(X)에 기록하도록 한다. 또한, 스텝S440에서 ich의 릴리스개시처리가 행해지면서 노트 오프처리는 종료한다. 여기서, ich의 릴리스개시처리란 워크영역중 ich의 각종 엔벨로프 스테이트 등을 다시 써서 ich에 있어서의 악음생성 상태를 릴리스상태로 변화시키는 처리이다.
다음에, 메인루틴의 정상루프에서 스텝S40으로 실행되는 음원처리의 상세한 플로차트를 제10도를 참조하면서 설명한다.
음원처리가 개시되면 스텝S500에서 재생부(DMA)(9)의 재생상태를 체크하고, 재생구간이 다음으로 진행해 나가면 스텝S510으로 진행하고, 재생구간이 진행하지 않을 경우에는 스텝S520으로 진행한다.
DMA(9)는 CPU(1)에 의해 지정된 RAM(3)상의 특정영역의 파형샘플을 재생영역으로 하고, 소정의 샘플링주기마다 그 특정영역의 최초의 샘플로부터 1샘플씩 차례로 판독하고, DAC(10)에 공급하여 재생한다. 또한, DMA(9)는 그 특정영역을 재생하면서 CPU(1)로부터 다음에 재생해야 할 다른 영역을 지정하는 예약을 접수한다. 예약된 다른 특정영역의 파형샘플은 재생중인 특정영역의 재생이 완료된 후, 계속해서 DMA(9)에 의해 마찬가지로 1샘플씩 차례로 판독되며, DAC(10)에 공급되어 재생된다. 여기서, 재생구간이 다음으로 진행한다는 것은 앞에서 특정영역으로 지정한 재생구간의 재생이 완료되어 다음의 특정영역으로 예약된 다른 재생구간으로 재생이 넘어갔음을 의미한다. 또한, 한번에 다수의 특정영역을 재생예약하는 것이 가능하며, 그 경우, 다수의 특정영역은 예약한 순으로 차례로 재생된다.
스텝S510에서 금회 진행이 검출된 시각(현재시각)과 과거에 검출된 시각으로부터 다음회의 검출시각을 예측하고, 예측된 검출시각으로부터 소정시간전의 시각을 다음회의 계산시각으로 지정한다. 다음회의 검출시각 예측방법으로는 현재시각과 과거의 검출시각을 포함하는 다수회의 검출시각에 의거해서 최소2승법으로 오차가 적은 근사치를 구하며, 예측하는 방법이나, 다수회의 검출시각 변화모습을 2차함수 등 다른 함수에 근사하게 예측하는 방법이 있다. DMA(9)에서는 진행이 발생하고 나서 스텝S510에서 검출되기까지의 시간은 그 때마다의 처리스텝위치, 상황차이등으로 인해 일정하지 않은 시간지연이 발생하여 다수회의 검출시각에는 일정하지 않은 편차가 포함되어 있다. 따라서, 상기 근사함수의 산출에는 다수회의 검출시각 편차를 평균화하는 처리가 포함된다.
상기 소정시간은 악음파형을 생성하기 위해 확보되는 시간이며, 어느 정도의 길이로 할 지는 확보하고 싶은 발음수, 연산의 퀄리티 등 그 연산생성에 필요한 연산량에 의거해서 결정된다. 상기 소정시간의 길이는 고정치여도 상관없지만, 키이보드(6)에 의해 설정할 수 있도록 하거나, 동시에 빨라지는 다수의 처리프로그램과의 균형으로 CPU(1)가 자동적으로 결정하도록 해도 된다.
다음에 스텝S520에서 다음회의 계산시각과 타이머(4)가 지시하는 현재시각을 비교함으로써 계산시각에 도달했는지의 여부가 판단되고, 계산시각에 도달했다고 판단되었을 경우에는 스텝S530 내지 스텝S580의 처리를 실행한다.
먼저, 스텝S530에서 현재 발음중인 발음채널을 어떤 차례로 연산할지 결정한다. 후술하는 스텝S550의 파형연산생성처리에서는 발음중인 채널에 대해 1채널씩 다수 샘플분의 발음파형을 생성해 나가는 것이지만, 그 때의 채널 처리순서를 여기서 정하고 있는 것이다.
여기서는 상기한 제3실시예의 방법에 따라 음악적으로 중요한 악음, 사라져 버리면 곤란한 발음으로부터 차례로 연산을 행하도록 번호를 붙인다. 계속해서, 스텝S540에서 발음중인 전체 발음채널을 예정한 연산시간(스텝S510에서 설명한 소정시간)내에 연산가능한지의 여부가 판정되고, 불가능할 경우는 연산순서가 마지막 발음채널로부터 소음해야 할 발음채널을 1 내지 다수 채널분 지정하고, 예정된 연산시간내에 연산가능해지도록 연산량을 삭감한다. 이 처리는 상기한 제3실시예의 악음생성방법에 의거한 구체적인 처리이다.
계속해서, 스텝S550에서 발음파형의 연산이 행해진다. 여기서는 현재 준비중인 출력버퍼(X)가 발음파형데이터로 채워져서 준비완료가 되도록 버퍼(X)의 미계산분에 대해 악음파형샘플이 연산되어 발음파형이 산출되고, 출력버퍼(X)에 기록된다. 이 처리는 앞의 제12도와 관련지워서 설명한 발음파형A3등의 연산생성처리에 대응한다.
발음파형에서 채워지고 준비완료가 된 버퍼(X)의 각 샘플은 추가로 스텝S560에서 로퍼스필터(LPF)처리가 가해져서 고역성분이 커트된다. 계속해서, 스텝S570에서 파형재생부(DMA)(9)에 LPF처리가 끝난 발음파형을 기억하는 출력버퍼(X)의 영역이, 계속해서 재생해야 할 재생파형을 기억하는 특정영역으로서 예약등록된다. 이에 따라, 현재 재생중인 특정영역 및 이미 예약되어 있는 특정영역의 발음파형이 재생완료된 후에 재생되도록 예약된다. 그리고, 스텝S580에서 그때까지 버퍼(X)로서 사용한 출력버퍼와는 다른 신규한 출력버퍼영역이 확보되어 모든 샘플치가 제로로 클리어되며, 다음 구간의 발음파형을 작성하고 준비하기 위한 출력버퍼(X)로서 새롭게 설정되어 음원처리가 종료된다.
또한, 스텝S520에서 계산시각에 도달하지 않았다고 판단되었을 경우에는 그대로 종료한다.
다음에, 노트 온처리, 노트 오프처리 및 음원처리에서 실행되는 발음파형 연산처리의 플로차트를 제11도에 도시했다. 이 처리가 행해지는 경우에는 이미 설명한 바와 같이, 미리 발음파형이 연산될 발음파형의 시간범위가 정해져 있다. 즉, 노트 온처리 등의 MIDI데이터수신시의 처리로서 본 플로를 실행할 경우에는 상기 시간범위란 상술한 부분파형이며, 음원처리중에서 본 플로를 실행할 경우에는 버퍼(X) 전체의 샘플중 미계산부분의 발음파형샘플인 것이다. 또, MIDI데이터수신시에는 직전의 음원처리에 의해 결정한 연산순서에 의거해서 연산을 하기 때문에 발음채널의 연산순서를 새로이 결정하지 않는다. 새로운 노트 온이 있었을 경우에는 다른 전체 발음채널의 순위를 하나 물리고, 그 새로운 노트 온의 채널을 연산순서의 제1번에 차례로 더해 나간다.
발음파형연산처리가 개시되면 스텝S600에서 연산순서의 1번 발음채널(ch)의 최초의 악음파형샘플 연산준비가 행해진다. 연산준비처리란, 전회의 판독어드레스, 각종 EG치, 각종 EG의 스테이트(어태크나 릴리스 등의 상태), LFO치 등의 데이터를 바로 연산에 사용할 수 있도록 액세스준비하거나 CPU(1)의 내부레지스터에 로드하는 처리이다. 그리고, 스텝S610에서 LFO, 필터(G), 음량(EG)의 파형연산을 행하고, 지정된 상기 시간범위의 연산에 필요한 LFO파형, FEG파형, AEG파형의 샘플을 생성한다. LFO파형은 F넘버, FEG파형, AEG파형에 가산되어 각 데이터를 변조한다. 또한, 스텝S540에서 소음해야 할 채널로서 지정된 발음채널에 관해서는 음량(EG)으로서 상기 범위내에서 급속히 감쇠되는 댐프용 AEG파형이 연산생성된다.
계속해서, 스텝S620에서 상기 전회의 판독어드레스를 초기치로 하여 F넘버를 반복가산하여 상기 시간범위내의 각 샘플의 판독어드레스를 발생하고, 이 판독어드레스의 정수부에 의거해서 음색데이터내의 파형기억영역(WD)으로부터 파형샘플을 판독함과 동시에, 이 판독어드레스의 소수부에 의거해서 판독된 파형샘플 사이의 보간을 행하며, 상기 시간범위내의 전체 보간샘플을 산출하도록 한다. 예를들면, 상기 시간범위가 100샘플분의 시간에 상당할 경우, 100샘플분 모아서 이 스텝에 따라 처리가 행해진다. 여기서, 상기 시간범위내 다수 샘플분의 처리는 판독어드레스에 대한 F넘버의 가산과, 가산에 의해 생성된 어드레스에 의거한 판독으로부터 보간 처리까지의 처리를 단위처리로 하여 이 단위처리를 반복해서 행하게 되어 있기 때문에 판독어드레스의 CPU레지스터에의 판독이 전체적으로 1회에 끝나므로, 처리가 고속화된다.
또한, 스텝S630에서 상기 시간범위내의 보간샘플에 대해 음샐필터처리가 행해지고, 상기 FEG파형에 의거해서 음색제어가 행해지고, 스텝S640에서 필처처리가 끝난 상기 시간범위내의 샘플에 대해 진폭제어처리가 행해지며, 상기 AEG 및 음량데이터에 의거해서 악음파형샘플의 진폭제어가 행해짐과 동시에, 진폭제어처리된 상기 시간범위분의 악음파형샘플이 각각 출력버퍼(X)가 대응하는 샘플에 더해지는 누산기록처리가 실행된다. 이 처리에서는 상기 시간범위내의 각 샘플에 대해 진폭제어와 버퍼(X)의 대응샘플에 대한 더하기를 연속적으로 하게 되어 있으므로, 샘플의 CPU레지스터에의 받아들이는 회수가 적어져서 처리속도가 향상되고 있다.
상술한 바와 같이 스텝S620에서 스텝S640에 걸친 악음파형샘플의 연산생성처리는 기본적으로는 상기 소정시간범위내의 전체 샘플을 생성하도록 행해지는 것이지만, 스텝S610에 있어서 음량(EG)의 파형연산 결과, AEG파형의 레벨이 내려가서음량이 충분히 감쇠된 범위에 대해서는 연산의 대상으로부터 제외되므로 그만큼 처리를 적게 하게 된다. 특히, 스텝S540의 지시에 의해 댐프용 AEG파형을 생성한 발음채널에 관해서는 상기 소정시간범위의 도중에 충분한 감쇠를 얻을 수 있는 경우가 많다.
그리고, 스텝S650에서 파형연산처리를 그대로 속행하고 싶은 경우에 DMA(9)에 대해 기한내에 파형을 공급할 수 있는지의 여부가 판정되어 연산을 중단할지에 대한 판단이 행해진다. 여기서, 기한내에 파형을 공급한다는 것은 먼저 생성된 발음파형을 기억하는 특정영역을 재생중인 DMA(9)가 그 영역의 재생을 종료하기 전에 버퍼(X)에 그것에 계속되는 발음파형을 준비하고, 그 버퍼(X)의 영역을 재생예약할 수 있는 것이다. 그대로 속행하면 맞지않게 되는 경우에는 연산을 중단한다고 판단되며, 스텝S670에서 중지처리가 실행되어 이 발음파형 연산처리는 종료된다.
또한, 연산을 속행해도 괜찮다고 판정되었을 경우, 연산을 중지할 필요가 없다고 판단되며, 이어지는 스텝S660에서 연산해야 할 전체 발음채널분의 악음파형 연산생성이 종료되었는지의 여부가 판단되며, 전체 발음채널의 연산이 종료되었다고 판단되지 않은 경우에는 스텝S680에서 다음의 연산순서를 부여받은 발음채널의 최초의 악음파형샘플이 지정되고, 순차적인 발음채널의 악음채널의 악음파형 연산생성준비가 행해진다. 준비가 완료되면 처리는 스텝S610으로 리턴하며, 그 발음채널에 대해 조금전과 같이 스텝S610 내지 스텝S640에 걸친 악음생성처리가 실행된다. 이와 같이 전체 발음채널의 연산이 종료되기까지 스텝S610 내지 스텝S660의 처리가 반복적으로 행해지게 된다. 각 발음채널의 처리마다 생성된 상기 소정시간범위분의 샘플은 스텝S640에서 버퍼(X)가 대응하는 샘플에 차례로 더해진다.
스텝S660에서 연산생성처리가 종료되었다고 판정되었을 경우, 본 발음파형연산을 종료한다. 이 때 버퍼(X)에는 연산해야 할 전체 발음채널이 생성된 악음파형샘플을 누산한 누산치가 상기 시간범위에 대응하는 샘플수만큼 새롭게 기억되고 있다.
한편, 스텝S650에서 중단을 한다고 판단되어 스텝S670의 중단처리를 거쳐서 발음파형연산이 종료되었을 경우, 버퍼(X)에는 연산해야 할 전체 발음채널중 그 시점까지 연산생성을 완료한 발음채널에 대한 악음파형샘플의 누산치가 상기 시간범위에 대응하는 샘플수만큼 새롭게 기억되고 있다.
중단 이후의 연산순서를 부여받은 발음채널에 대해서는 악음의 연산생성이 행해지지 않아 결과적으로 그 채널의 악음은 사라지는 것이지만, 스텝S530의 처리에 의해 사라졌을 경우에 영향이 적은 채널일수록 뒤쪽의 연산순서로 되어 있으므로, 중단에 의한 악영향은 최소한으로 억제된다. 또한, 스텝S670의 중단처리에서는 일단 연산할 수 없었던 채널에 대해 다음회 이후의 발음파형연산에서도 소음한 상태가 되도록 ch레지스터를 설정하고 있다.
이상 설명한 발음파형 연산처리가 제9(A)도에 플로차트를 도시한 노트 온처리의 스텝S340에서 실행되었을 경우에는 상술한 발음파형 연산처리가 종료되면 상기 플로차트의 스텝S350 처리가 계속해서 실행되면서 노트 온처리가 종료된다.
또한, 발음파형 연산처리가 제9(B)도에 플로차트를 도시한 노트 오프처리의 스텝S430에서 실행되었을 경우에는 상술한 발음파형 연산처리가 종료되면 상기 플로차트의 스텝S440 처리가 계속해서 실행되면서 노트 오프처리가 종료된다.
또, 발음파형 연산처리가 제10도에 플로차트를 도시한 음원처리의 스텝S550에서 실행되었을 경우에는 상술한 발음파형 연산처리가 종료되면 상기 플로차트의 스텝S560 이후의 처리가 계속해서 실행되며, 스텝S580의 처리가 종료되면 음원처리가 종료된다.
이들 노트 온처리, 노트 오프처리 및 음원처리는 제6도에 도시한 정상루프내에서 순환하며 반복적으로 행해져서 발음되는 악음파형샘플이 차례로 생성되게 된다.
또한, 본 발명의 악음생성방법에 있어서, 말할 필요도 없는 일이지만, 예를들면 다수 악음의 발생을 지시하는 스텝과, 소정시간 시간간격마다 연산개시를 지시하는 스텝과 같이, 서로 독립된 데이터를 취급하는 스텝에 대해서는 상기 설명한 차례로 처리를 할 필요없이 그 처리순서를 바꾸어서 실행해도 된다.
또한, 본 발명의 악음생성방법에 있어서는, 상기한 악음생성연산처리의 빈 시간을 이용하여 다른 어플리케이션 소프트로부터 의뢰받은 발음지시를 포함하는 처리를 행할 수 있다. 다른 어플리케이션 소프트로는 게임소프트, 통신소프트, 사무처리 소프트 등이 있다.
이상에 있어서, 상기 제1도에 도시한 악음생성장치에서 실행되는 프로그램으로서 본 발명의 악음생성방법을 설명하겠다. 또한, 본 발명의 악음생성방법을 Windows(미국 마이크로소프트사의 퍼스컴용 OS)나 그밖의 오퍼레이팅 시스템이 동작하는 범용컴퓨터상에서 하나의 어플리케이션 프로그램으로서 다른 어플리케이션프로그램과 병렬실행시켜도 된다.
본 발명은 이상과 같이 구성되어 있기 때문에, 다수의 악음파형샘플의 연산에 대해 1회만 각 발음채널의 준비처리를 하면 되게 되므로 오버헤드를 적게 할 수 있다. 이 때문에 생성된 악음의 질을 향상시킬 수 있음과 동시에, 동시발음 채널수를 증가시킬 수 있다.
또한, 악음파형샘플의 연산을 MIDI이벤트가 입력될 때마다 하도록 하면 연산이 분산되게 되어 발음초기처리에 의한 발음수의 감소를 방지할 수 있다.
또한, 연주정보의 발생시 연주정보를 받아들이는 처리를 행하고, 받아들인 연주정보에 의거한 악음제어 혹은 파형생성은 상기 받아들인 처리의 빈 시간에 실행되는 메인스텝에 포함되도록 했으므로, 연주정보가 발생한 시점에서의 처리 증가분을 상기 빈 시간내에 분산시킬 수 있어서 일시적인 처리증가를 방지할 수 있다.
다음에, 제13도 내지 제25B도를 참조하여 제2관점에 따른 본 발명의 실시예를 설명한다.
본 실시예에 있어서는 시퀀서소프트나 게임소프트 등의 어플리케이션 프로그램이 그위에서 동작하는 범용OS를 멀티태스크 관리프로그램상에서 동작시키도록 하며, 또 소프트웨어음원은 어플리케이션 프로그램이라고 하지 않고, 상기 멀티태스크 관리프로그램의 제어하에서 동작시키고 있다. 이에 따라 소프트웨어음원을 실시간처리에 필요한 시간간격으로 확실하게 실행시킬 수 있으며, 또 상기 소프트웨어음원의 처리가 실행되지 않는 시간에 상기 범용OS가 동작되어 상기 OS상의 어플리케이션 프로그램의 처리가 실행된다.
이 제2관점에 따른 실시예를 실시하는데 있어서는 제1도에 도시된 바와 같은 하드웨어구성으로 이루어진 장치를 사용해도 되고, 또는 이와는 어느 정도 변경하여 제19도에 도시된 바와 같은 하드웨어구성으로 이루어진 악음발생장치를 사용해도 된다. 이하에서는 제19도에 도시된 하드웨어구성으로 이루어진 악음발생장치를 사용하여 제2관점에 따른 실시예를 실시하는 것으로 설명을 진행한다.
제19도에 있어서 제1도에 도시된 것과 동일부호가 붙여진 구성요소는 그것과 기능이 동일하다. 제1도와 다른 점에 대해 설명하면, 제19도에서는 외부로부터의 아날로그 오디오신호의 입력을 접수하기 위한 입력단자(34)가 코딩(CODEC)장치(32)에 부속되어 형성되어 있으며, 이 코딩장치(32)를 통해 CPU(1)의 버스(35)와 사운드시스템(11) 또는 외부입력단자(34) 사이에서 사운드데이터의 접수가 행해지게 되어 있다. 코딩장치(32)는 그 내부에 디지털-아날로그변환기(DAC) 및 아날로그-디지털변환기(ADC)를 포함하고 있다. 이 디지털-아날로그변환기(DAC)에 대해서는 CPU(1)의 처리에 의해 생성된 디지털 악음파형데이터가 버스(35)를 경유하며 1샘플링 클록마다 인가되고, 이것을 아날로그신호로 변환하여 사운드시스템(11)에 공급한다. 또한, 이 아날로그-디지털변환기(ADC)에는 외부입력단자(34)로부터 아날로그 오디오신호가 입력되고, 이것을 디지털데이터로 변환하여 버스(35)에 공급한다. 음원파형데이터를 외부로부터 샘플링하여 내부메모리에 기억할 경우에 외부입력단자(34)로부터의 아날로그-오디오신호의 수신과 그 아날로그-디지털변환기능을 이용할 수 있다. 또, 제1도 및 제19도 모두 프로피디스크 구동장치나 CD-ROM구동장치 혹은 MO구동장치 등의 옵셔널한 주변기억장치를 구비해도 된다. 예를들면, 이와 같은 주변기억장치에 있어서, 본 발명의 실시예를 실시하기 위한 프로그램을 기억한 기억매체(프로피디스크나 CD 등)를 세트하고, 이것을 판독하여 버스(35)를 통해 하드디스크(8)나 RAM(3) 등에 전송기억시키도록 한다. 그리고, CPU(1)에 의해 그 프로그램을 실행시키도록 하면 본 발명을 임의의 바리에이션의 프로그램에 따라 실시할 수 있다. 제1도 및 제19도에서는 CD-ROM구동장치(33)가 접속되어 있는 예를 도시하고 있다.
제13도에 본 발명의 실시형태에 있어서 소프트웨어 모듈구성을 도시했다. 또, 이 도면에서는 설명을 간략히 하기 위해 실시간의 처리가 필요한 오디오신호처리에 관계되는 부분, 즉 소프트웨어음원 및 파형데이터 처리에 관계되는 부분만이 도시되어 있다.
제13도에 도시한 바와 같이, 최상위층에는 어플리케이션 프로그램군이 위치하고 있으며, 30은 음원믹서-제어소프트웨어, 31은 MIDI시퀀서 소프트웨어, 13은 게임소프트 등의 소프트웨어 및 14는 파형재생 소프트웨어이다. 다음은 시스템 소프트웨어군이고, 15는 어플레케이션 프로그램이 시스템 소프트웨어군이 제공하는 각종 서비스를 이용하기 위한 인터페이스, 16은 MIDI음원드라이버로서 기능하며, 후술하는 톤제너레이터 태스크(20)를 생성하는 음원MIDI드라이버, 17은 웨이브 입출력 디바이스를 오픈하는 기능을 제공하는 WAVE입출력 드라이버, 18은 음원MIDI드라이버(16) 및 WAVE 입출력 드라이버(17)와 카넬(Ring0)과의 인터페이스, 또 25는 외부MIDI드라이버이다. 이상의 각 프로그램은 프로세서의 유저·모드(Ring3)에서 실행된다.
또한, 19는 태스크 디스버퍼, 20은 톤제러레이터태스크, 21은 웨이브태스크, 22는 믹서태스크, 23은 다수의 오디오스트림의 혼합, 분할, 샘플레이트변환 혹은 포맷변환 등을 하기 위한 서브루틴군인 라이블러리, 24는 코데크 드라이버로서, 이들 프로그램은 프로세서의 카넬모드(Ring0)에서 실행된다.
태스크 디스버퍼(19)는 다수의 실행가능상태에 있는 태스크(프로세스)중에서 다음에 실행을 개시할 태스크를 선택하여 프로세서상에서 실행되도록 제어를 하는 모듈이며, 본 발명에서는 태스크의 실행중에도 타이머 등으로부터의 인터럽트를 허가하고, 현재 처리중인 태스크의 처리를 중단하고 다른 태스크의 처리를 개시하는 것을 허가하는 소위 프리앰프티브방식(완전멀티태스크방식)의 태스크 스케줄링을 하는 것이다.
또한, 톤제너레이터 태스크(20)는 그 상세한 것은 후술하겠으나, 음원MIDI드라이버(16)에 의해 생성되며, 상기 음원MIDI드라이버(16)로부터 공급되는 악음제어파라미터(T Gparms)에 의거해서 최대 32채널분의 파형테이블 합성기능과 잔향 등의 음색제어처리기능을 제공하는 것이다. 또한, 웨이브태스크(21) 및 믹서태스크(22)는 WAVE입출력 드라이버(17)에 의해 오픈되는 웨이브입출력 디바이스에 대응하여 생성되는 태스크이다.
또한, 26은 파형데이터를 입출력하기 위한 A/D변환기 및 D/A변환기를 가진 코데크회로, 27은 MIDI인터페이스(MIDI I/O)이다.
또, 도시하지 않았으나,상기 시스템 프로그램군에는 통상의 범용OS에 포함되어 있는 디바이스 드라이버군 및 메모리관리, 파일시스템, 유저인터VP이스 등의 프로그램군이 포함되어 있다.
제14도를 참조하여 태스크(프로세스)의 실행상태에 대해 설명한다. 태스크는 create명령을 실행함으로써 생성되며, 생성된 태스크는 먼저 실행가(READY)상태로 되어 대기행렬에 이어진다. 태스크디스퍼쳐(19)는 대기행렬에 이어져 있는 실행가(READY) 상태의 태스크중에서 소정의 우선순위에 따라 처리를 개시해야 할 태스크를 선택하고, 이에 따라 당해 태스크는 실행중(RUNNING) 상태가 된다. 이 상태에서 타이머로부터의 타임슬라이스 인터럽트 등이 발생하면 실행중인 태스크는 그 처리를 중단하고, 실행가(READY) 상태로 되어 다시 대기행렬에 이어진다. 그리고, 태스크 디스퍼처(19)는 소정의 우선순위에 따라 대기행렬에 이어져 있는 태스크중에서 다음에 실행해야 할 태스크를 선택하고, 상기 선택한 태스크를 실행시키도록 제어한다.
따라서, 다른 태스크를 실행중이더라도 소정의 간격에서 발생하는 타임슬라이스 인터럽트 등에 의해 그 태스크 처리를 강제적으로 중단할 수 있으며, 톤제너레이터 태스크(20)의 우선순위를 높게 해 둠으로써 소정시간 간격마다 톤제너레이터 태스크(20)를 확실하게 실행하는 것이 가능해진다. 또, 웨이브 태스크(21) 등의 실시간처리가 필요해지는 태스크에 대해서도 마찬가지로 실행시킬 수 있어서 범용컴퓨터상에서 실시간처리를 가능하게 할 수 있다. 그리고, 상기 소정의 시간간격중 실시간처리가 행해지지 않는 기간에는 범용 OS를 태스크의 하나로서 동작시키고, 상기 OS상에서 동작하는 어플리케이션 프로그램을 상기 실시간처리와 병렬적으로 실행하는 것이 가능하다.
또한, 태스크가 실행중(RUNNING) 상태에 있을 때 sleep명령 혹은 pend명령과 같은 특정한 사상의 발생을 가진 명령이 실행되었을 때에는 그 태스크는 대기상태(BLOCKED)가 되며, 다른 태스크가 디스패치된다. 그리고, 대기상태(BLOCKED)로 된 태스크는 당해 특정한 사상이 발생했을 때 다시 실행가(READY) 상태가 되어 대기행렬에 이어진다. 또, exit명령이나 delete명령 등이 실행되었을 때에는 태스크는 종료(TERMINATED) 상태가 된다.
그런데, 이와 같은 구성에 있어서, 음원MIDI드라이버(16), 톤제너레이터 태스크(20), 코데크 드라이버(24) 및 코데크회로(26)에 의해 본 발명의 소프트웨어음원이 실현된다.
음원MIDI드라이버(16)는 MIDI시퀀서 소프트웨어(12) 등에서 인터페이스(15)를 통해 MIDI신호의 입력이벤트가 있었을 때 기동된다. 기동되면 음원MIDI드라이버(16)는 입력된 MIDI신호에 따라 노트 온, 노트 오프, 프로그램체인지, 컨트롤체인지, 시스템 익스크루시브 등의 처리를 한다. 노트 온 이벤트의 경우에는 신규한 발음을 음원인 톤제러레이터 태스크(20)의 발음채널에 할당하고, 상기 할당한 채널에 설정하기 위한 악음제어 파라미터와 노트 온을 준비한다. 준비된 악음제어 파라미터는 MIDI채널마다 선택되어 있는 음색의 음색파라미터를 노트 온 이벤트에 부수되는 노트넘버, 연주터치에 따라 가공처리한 파라미터이다. 또한, 이 준비된 악음제어 파라미터는 톤제너레이터 태스크(20)의 기동시 톤제너레이터 태스크(20)의 음원레지스터에 전송된다.
톤제너레이터 태스크(20)는 최대 32채널의 파형테이블 합성기능과, 모노럴입력 스테레오출력의 잔향기능을 가지고 있으며, 코데크 드라이버(24)와 코데크회로(26)로 이루어진 출력디바이스로부터의 파형데이터요구에 따라 1프레임시간마다 기동된다. 이 톤제너레이터 태스크(20)는 외부오디오입력을 접수하여 스스로 생성하는 파형테이블 합성데이터와 상기 외부오디오입력에 대해 잔향처리를 행하고, 처리결과인 오디오파형을 출력디바이스에 출력한다.
톤제너레이터 태스크(20)에 있어서 처리의 전체구조를 도시한 등가회로도를 제15도에 도시했다. 이 도면에 있어서, 41은 최대 32채널의 파형테이블 합성처리, 점선으로 둘러싼 42는 외부스테레오 오디오신호입력처리, 43은 잔향처리를 나타낸다. 또, 44는 파형데이터 메모리, 50은 보간연산부, 51 및 65는 데이터변환기, 52,53 및 54는 승산부, 55는 정수형식으로 입력된 스테레오 오디오 입력신호를 받아들이고, 부동소수점 형식의 데이터로 변환함과 동시에, 좌측채널신호(L), 우측채널신호(R) 및 양자의 합계 L+R신호를 출력하는 데이터변환부, 56, 57, 59 및 62는 가산부, 58 및 64는 인터리브를 하기 위한 가산부, 60, 61, 63, 66 및 67은 버퍼, 65는 부도소수점 형식의 데이터를 정수형식의 데이터로 변환하는 데이터변환부이다. 또한, 데이터변환부(55)에 입력되는 스테레오 오디오 입력신호는 코데크(26)로부터의 입력 혹은 파형재생소프트웨어(14)로부터 WAVE입출력 드라이버(17)를 통한 입력중 어느 하나여도 된다.
종래의 하드웨어음원에 있어서는 1샘플마다 파형을 생성하고, 차례로 D/A변환처리를 하고 있으나, 본 소프트웨어음원 및 오디오 입출력에 있어서는 파형데이터는 프레임단위로 처리된다. 프레임이란, 모아진 처리를 행하는 어떤 단위이며,본 소프트웨어음원 및 오디오 입출력에 있어서는 5ms 정도의 재생시간에 상당하는 샘플 수분의 버퍼를 확보하고, 이것을 1프레임 단위로 하고 있다. 이 버퍼의 사이즈는 파형계산주파수(샘플주파수)에 의해 변화한다. 제15도에 있어서의 각 버퍼(60)(61)(63)(66) 및 (67)은 모두 1프레임분의 용량을 가진 버퍼이다.
또한, 제15도에 있어서 굵은 화살표는 32비트의 부동소수점 형식으로 표시된 데이터를 나타내며, 가는 화살표는 16비트 정수데이터를 나타내고 있다. 또, 굵은 사각으로 둘러싸인 버퍼(60)(61)(63)는 32비트 부동소수점 형식의 데이터를 격납하는 버퍼를 나타내고 있으며, 가는 사각으로 둘러싸인 버퍼(66)(67)는 16비트 정수데이터를 격납하는 버퍼를 나타내고 있다.
또, 이 시스템에서 사용하고 있는 CPU에 있어서는 부동소수점 승산쪽이 정수승산보다 고속으로 실행되므로, 신호처리는 극력 부동소수점형식으로 행하도록 이루어져 있다. 단, 파형데이터 메모리(44)상의 파형데이터는 대체로 8비트의 정수데이터이기 때문에, 보간연산부(50)에 있어서는 정수로 승산을 실행하고, 그후에 데이터변화부(50)에서 부동소수점형식으로 변환시켜 실행시간을 단축하고 있다.
또, 파형테이블 합성처리(41)는 기본적으로 파형보간과 게인조정으로 이루어져 있다. 파형데이터메모리(44)로부터 판독된 파형데이터는 보간연산부(50)에 의해 음원MIDI드라이버(16)로부터 공급되는 피치정보를 이용하여 보간하고, 데이터변환부(51)에 의해 부동소수점형식으로 변환된다. 이 출력은 3가지 출력계열, 즉 좌측채널신호(L), 우측채널신호(R) 및 잔향입력신호(L+R)로 나뉘며, 각각 승산부(52)(53)(54)에서 음원MIDI 드라이버(16)로부터 공급되는 Volume정보(각 발음채널의 음량엔벨로프신호에 각각 상기 3계열의 각 출력마다의 레벨을 곱한 데이터)가 승산된다. 이 각 발음채널로부터 출력된 파형데이터는 각각 가산부(56)(57) 및 (62)에서 서로 가산된다. 각 가산부(56)(57) 및 (62)에는 각각 데이터변환부(55)로부터 외부스테레오 오디오 입력신호의 좌측채널신호(L), 우측채널신호(R) 및 합계 신호(L+R)도 공급되고 있으며, 생성된 전체 발음채널의 파형데이터합과 외부오디오 입력신호의 믹싱이 행해진다.
가산기(56)(57)의 출력은 각각 Dry버퍼(60) 및 DryR버퍼(61)에 격납되고, 또 가산기(62)의 출력은 잔향용 버퍼(Rev63)에 격납된다. 버퍼(Rev63)에 격납된 L+R데이터는 잔향처리(43)에 입력되어 잔향연산이 행해지고, 생성된 잔향출력데이터(반향음데이터)는 L과 R 독립적으로 게인조정된 후, DryL버퍼(60) 및 DryR버퍼(61)에 격납되어 있는 데이터에 각각 가산되고, 또한, 데이터변환부(65)에서 정수형식으로 변환된 후, 버퍼(66)(67)을 통해 오디오출력데이터로서 코데크(26)의 D/A변환기에 출력되게 된다.
이들 처리의 처리타이밍을 제16도를 이용해서 설명한다. 이 도면에 있어서 횡축은 시간축으로, 시간축의 상부에 기재되어 있는 [A]는 음원MIDI드라이버(16)의 처리를 나타내고, 시간축의 하부에 기재되어 있는 [B]는 톤제너레이터 태스크(20)에 있어서의 처리를 나타내고 있다. 또한, 최하부 2행은 오디오입출력 스트림을 나타내고 있으며, 오디오입력 디바이스는 라이브러리(23)에 준비되어 있는 코데크회로(26)로부터의 A/D파형데이터 입력루틴, 오디오출력 디바이스는 마찬가지로 코데크회로로의 D/A변환하기 위한 파형데이터 출력 루틴이다.
이 시스템전체는 3종류의 우선순위를 가진 처리단위로 크게 나눌 수 있다. 가장 우선순위가 높은 처리는 타이머 인터럽트에 의한 MIDI신호의 발생으로 인해 기동되는 음원MIDI드라이버(16)의 처리이며, MIDI신호로부터 악음제어 파라미터에의 변환이 당해 인터럽트처리중에 실행된다. 단, 타이머 인터럽트가 아니라 어플리케이션으로부터 직접 MIDI출력하였을 경우에는 가장 낮은 우선순위가 된다. 다음의 우선순위는 톤제너레이터 태스크(20)이며, 이 톤제너레이터 태스크(20)는 오디오 입출력 버퍼로부터의 ready 메시지(오디오출력 디바이스가 다음 데이터를 요구할 때 내는 output ready 메시지 및 오디오입력 디바이스가 데이터 송출가능할 때 내는 input ready 메시지), 음원MIDI드라이버(16)가 새로운 악음제어 파라미터를 보낼 때 내는 TG params received 메시지 및 음원MIDI드라이버(16)가 파형을 로드할 때 내는 wave load request 메시지에 의해 기동된다. MIDI시퀀서 등 그밖의 어플리케이션은 우선순위가 가장 낮은 처리가 된다.
제16도의 톤제너레이터 태스크(20)에 있어서 처리 [B]에 있어서, 1프레임분에 상당하는 데이터의 처리는, (1) 오디오입력 데이터를 읽는다, (2)악음제어 파라미터를 처리한다, (3)32ch분의 파형을 연산생성한다, (4)필요에 따라 강제댐프를 행한다, (5)음원스테이터스를 보낸다, (6)잔향계산을 행한다, (7)데이터를 오디오출력하게 된다. 이들중에서 가장 CPU부하가 크고, 또 변동이 심한 것은 (3)의 32채널파형생성처리로서, 1프레임 동안에 계산이 완료되지 못할 가능성이 있다. 따라서, 처리 순번으로는 불확정한 것을 가장 마지막에 가지고 가는 것이 합리적이기 때문에, 처리는 상기 (1)부터 시작하는 것이 아니라 상기 (5)에서 시작하도록 되어있다.
상기 (5)~(7)은 일련의 처리로 되어 있으며, 오디오출력 디바이스로부터의 output ready 메시지에 의해 기동된다. 이 메시지가 수신되고, 톤제너레이터 태스크(20)가 기동되면, 먼저 처리(5)에 있어서 음원MIDI드라이버(16)에 대해 톤제너레이터 트스크(20)의 동작상황인 음원스테이터스(TG status)를 송출하고, 음원MIDI 드라이버(16)의 콜백함수가 불리워진다. 음원MIDI드라이버(16)는 이 콜백함수중에서 TG status를 읽고, 톤제너레이터 태스크(20)에 대해 준비되어 있는 발음채널의 악음제어 파라미터 및 노트 온신호 등으로 이루어진 TG params를 톤제너레이터 태스크(20)의 음원레지스터에 설정한다. 계속해서, 톤제터레이터 태스크(20)는 (6)의 잔향연산 실행을 개시하며, 버퍼(63)에 격납되어 있는 파형데이터를 입력으로 하여 잔향연산처리를 실행함과 동시에, 그 출력을 각각 1프레임분의 DryL 버퍼(60) 및 DryR 버퍼(61)에 더한다. 그리고, (7)의 오디오데이터 출력처리를 개시하고, 각 버퍼(60)(61)에 격납되어 있는 파형데이터를 출력드라이버용 1프레임분의 파형데이터로 변환하여 출력드라이버에 주고받으며 당해 일련의 처리를 종료한다.
다음에 행해지는 일련의 처리는 (1)의 오디오 입력처리이다. 이 처리는 input ready 메시지에 의해 기동된다. 실제로는 제16도에 도시한 바와 같이 input은 output보다 먼저 ready가 되어 있기 때문에, 상기 (7)의 처리후에 계속해서 처리 (1)이 호출되게 된다. 이 오디오 입력처리(1)에 있어서는 오디오입력 디바이스 혹은 WAVE입출력 드라이버(17)로부터 1프레임분의 입력데이터가 읽힌다.
마지막 일련의 처리는 (2)~(4)이다. 이것은 TG params의 수신메시지에 의해기동된다. 실제로는 상술한 바와 같이, 처리 (6)보다 먼저 TG params는 수신되어 있기 때문에 상기 처리 (1) 뒤에 계속해서 이 일련의 처리가 판독된다. 여기서는, 먼저 처리(2)에 있어서 음원MIDI드라이버(16)에 의해 음원레지스터에 설정되어 있는 악음제어 파라미터, 노트 온신호 등의 TG params가 해석되고, 파형생성 연산용 데이터로 변환된다. 계속해서, 처리 (3)에 있어서, 상기 (2)에서 준비된 파라미터나 데이터 등에 의거해서 최대 32채널분의 파형생성처리가 행해진다. 이 파형생성처리는 상술한 바와 같이 파형데이터 메모리(44)의 어드레스를 악음피치에 따른 속도로 진행하면서 파형데이터를 판독하고, 판독된 샘플 사이의 보간을 행하고, 음량엔벨로프(AEG) 등의 volume 정보에 의거한 음량제어를 함으로써 1ch분의 파형데어터를 생성하고, 이것을 최대 32ch분 반복함으로써 행해진다. 또한, 음량제어는 좌측채널(L), 우측채널(R) 및 잔향용 L+R의 3계열 독립적으로 행해지며, 생성된 1프레임 × 3계열분의 파형데이터는 각 버퍼(60)(61)(63)에 더해진다.
이 처리 (3)이 종료되었을 때 당해 프레임의 처리는 종료하고, 다음의 output ready 메시지가 수신되기까지의 시간은 범용 OS가 동작된다. 또한, 제4도의 (b)에 도시한 바와 같이 다음의 output ready 메시지가 와도 상기 (3)의 파형생성처리가 종료되지 않았을 때에는 상기 파형생성처리는 중단되게 되지만, 이 때 미계산채널에 대해 강제 댐프처리(4)가 행해져서 클릭노이즈가 발생하지 않게 되어 있다.
또, 상술한 최대 32채널분의 파형생성처리는 상기 중단이 행해졌을 경우에 영향이 눈에 띄는 채널, 예를들면 현재의 레벨이 큰 채널부터 차례로 행해지게 된다.
또, 상술한 톤제너레이터 태스크(20)의 실행중에 보다 우선순위가 높은 타이머 인터럽트에 의한 MIDI이벤트가 발생했을 때에는 제어는 강제적으로 음원MIDI드라이버(16)로 이동되며, 거기서 대응하는 처리가 행해진다. 이 모습은 제16도의 [A]에 화살표로 표시되어 있다. 이 도면에는 7개의 MIDI이벤트가 발생한 모습이 표시되어 있다.
이상 설명한 톤제너레이터 태스크(20)를 제17도, 제18A도, 제18B도의 플로차트에 의해 좀더 상세하게 설명한다.
먼저, 제17도의 스텝100에서 이 톤제너레이터 태스크(20)가 생성된다. 톤제너레이터 태스크(20)는 스텝100에서 생성된 후, 스텝101에서 슬립상태가 된다. 상기 슬립상태에 있을 때 메시지 수신 등 이벤트가 발생하여 어웨이크되어 레이디 상태가 되며, 태스크디스퍼쳐에 의해 디스패치되면 스텝102로 이동하여 이벤트가 판정된다. 즉, (a)오디오 입/출력 디바이스로부터의 ready인지, (b)음원MIDI드라이버(16)로부터의 파형데이터 로드 요구 wave load request인지, 그렇지 않으면 (c)음원MIDI드라이버(16)로부터의 TG params의 수신메시지인지가 판정된다.
이 판정결과가 (a)의 오디오 입/출력 디바이스로부터의 ready 메시지의 수신일 때에는 스텝103으로 진행하고, 상기 메시지가 오디오출력 디바이스로부터의 output ready인지, 오디오입력 디바이스로부터의 input ready인지가 판정된다. 이 판정결과가 오디오출력 디바이스로부터의 output ready 메시지일 때에는 스텝104에서 trigger 플래그를 「1」로 하고, 다음에 스텝105에서 음원MIDI드라이버(16)에 대해 TG status를 송출한다(제16도에 있어서의 처리(5)). 그리고, 스텝106에서 잔향이 온이 되고 있는지의 여부를 판정하여 상기 판정결과가 YES일 때에는 스텝107에서 잔향계산처리(제16도에서 처리 (6))를 한 후에 또 상기 판정결과가 N0일 때에는 직접 스텝108로 진행한다. 그리고, 스텝108에서 오디오데이터를 출력(제16도에 있어서의 처리 (7))하고, 상기 스텝101로 리턴하여 슬립상태가 된다.
한편, 상기 스텝103에 있어서의 판정결과가 오디오입력 디바이스로부터의 input ready 메시지일 때에는 스텝109로 진행하여 trigger 플래스 상태가 판정된다. 이 판정결과, trigger=1일 때에는 스텝110으로 진행하고, 오디오입력 데이터의 판독(제16도에 있어서의 처리(1))을 행한 후, 상기 스텝101로 리턴하여 슬립상태가 된다. 또, trigger = 0일 때에는 상기 스텝101로 리턴하여 슬립상태가 된다. 여기서, trigger 플래그는 (3)파형생성처리가 종래되었을 때 「0」이 되고, output ready 메시지가 수신되었을 때 「1」에 세트되는 플래그이다. 따라서, 이 스텝109에서 trigger 플래그의 상태를 판정함으로써 output ready 메시지에 대한 처리보다 먼저 input ready 메시지에 대한 처리가 행해지는 일이 없게 되어 있다.
또한, 상기 스텝102에 있어서의 판정결과가 (b)의 음원MIDI드라이버(16)로부터의 파형데이터로드 요구 wave load request 메시지일 때에는 스텝111로 진행하며 상기 스텝111에서 파형데이터를 판독하여 메모리에 격납하는 처리를 행하고, 상기 스텝101로 리턴하여 슬립상태가 된다. 또, 이 파형데이터 로드 요구는 톤제너레이터 태스크(20)의 초기화시 등에 음원MIDI드라이버(16)로부터 파형데이터를 보내기위해 나오는 메시지이다.
상기 스텝102에 있어서 판정결과가 (c)의 TG params의 수신메시지일 때에는 스텝112로 진행하고, 상기 스텝112에 있어서 음원MIDI드라이버(16)에 의해 음원레지스터에 설정되어 있는 악음제어 파라미터 TG params의 처리(제16도에 있어서의 처리(2))가 행해진다. 구체적으로는 수신한 악음제어 파라미터 TG parms로부터 파형데이터메모리 어드레스, 피치정보, EG파라미터, 팬데이터, LFO제어데이터 등의 음원제어 파라미터가 결정된다. 계속해서, 스텝113으로 진행하여 TG EXIT인지의 여부가 판정되고, 상기 판정결과가 YES일 때에는 스텝116으로 진행하면서 태스크는 종료된다. 상기 판정결과가 NO일 때에는 스텝114로 진행하고, 상기 스텝114에서 최대 32채널분의 파형생성처리(제16도의 처리(3))를 한다. 이 처리의 상세에 대해서는 제18A도 및 제18B도를 참조해서 후술하겠다. 이 파형생성처리가 종료된 후에는 스텝115로 진행하여 trigger 플래그를 「0」에 리세트하고, 상기 스텝101로 리턴하여 슬립상태가 된다.
상기 스텝114의 32채널분의 파형생성처리에 대해 제18A도 및 제18B도를 참조해서 설명한다. 상기 스텝114의 파형생성처리가 제18A도의 스텝200에서 개시되면 먼저 스텝201에서 새로운 키이온 데이터가 발생했는지의 여부가 판정된다. 여기서, 새로운 키이 온 데이터있음이라고 판정되면 스텝202로 진행하여 발음채널의 연산순서의 재배치가 행해진다. 이것은 다수 채널의 파형생성연산을 하고 있는 도중에 상술한 바와 같이 output ready request가 발생하여 상기 연산을 도중에서 중단하지 않으면 안되는 경우가 있는데, 중요한 채널에 대해서는 먼저 연산을 완료시켜 두기위해 행해지는 처리이다. 또, c는 발음채널수이다.
이 스텝202가 종료된 후, 혹은 상기 스텝201에서 새로운 키이 온 데이터의 발생이 없다고 판정되었을 때에는 스텝203이 실행된다. 이스텝203에서는 연산채널수를 카운트하는 카운터(i)에 「0」을 세트하여 상기 카운터(i)를 리세트하고, 변수 vNum에 발음채널수(c)와 동시발음허가 채널수(r)중 작은 쪽의 값을 세트한다. 이 변수 vNum은 연산해야 할 채널수를 나타내는 변수이다. 계속해서, 스텝204로 진행하여 카운터(i)의 값이 변수 vNum보다 작은지의 여부를 판정한다. 이 판정결과가 NO, 즉 카운터(i)의 값이 연산해야 할 채널수 vNum보다 크거나 같을 때에는 스텝209로 진행하여 이 파형생성처리를 종료한다.
스텝204의 판정결과가 YES, 즉 카운터(i)의 값이 변수 vNum보다 작을 때에는 스텝205로 진행하여 output ready request가 발생하고 있는지의 여부가 판정된다. 이 판정결과가 YES일 때에는 스텝206으로 진행하고, 그 채널(i) 발음신호의 강제댐프처리(제16도에 있어서의 (4))가 행해진다. 한편, 이 판정결과가 NO일 때에는 스텝207에 있어서 제i채널의 파형생성연산이 행해진다. 그 상세한 점에 대해서는 제18B도를 참조하여 후술하겠다. 제i채널에 대한 강제댐프처리(206) 혹은 파형생성연산(207)이 종료되면 스텝208로 진행하고, 카운터(i)를 잉크리멘트하여 다시 스텝204로 리턴하며, 이번에는 그 다음 채널 i+1에 대해 상기 스텝204에서 스텝208의 처리가 반복된다.
상기 스텝207의 각 채널 파형생성연산의 상세에 대해서는 제18B도를 참조하여 설명하겠다. 이 파형생성연산처리는 스텝211~2, 이 일련의 처리를 다수회 반복함으로써 다수 샘플분의 파형데이터가 생성되도록 되어 있다.
제i채널의 파형생성연산207이 스텝210에서 개시되면, 먼저 스텝211에서 전회의 파형생성연산시에 있어서의 스텝214에서 이미 산출되어 있는 판독어드레스(readPter)의 정수부에 따라 파형데이터 메모리로부터 보간에 필요한 수의 파형샘플을 판독하고, 상기 판독어드레스의 소수부에 따라 상기 파형샘플 사이의 보간연산이 행해진다. 이에 따라, 하나의 보간샘플이 생성된다. 다음에 스텝212에서 dryL버퍼(60), dryR버퍼(61) 및 rev버퍼(63)에 더해지는 데이터의 볼륨레벨 계산이 행해진다. 이것은 음원MIDI드라이버(16)로부터 공급되는 음량엔벨로프AEG, 음량vol, 변조AM, 팬Pan, 상술한 3계열의 각 레벨SendLevel의 각 파라미터를 가산함으로써 행해진다. 계속해서, 스텝213에 있어서, 스텝212에서 구한 3계열의 각 볼륨레벨을 각각 대응하는 보간연산결과 데이터와 승산하고, 그 결과를 각 계열에 대응하는 버퍼에 더한다.
계속해서, 스텝214로 진행하여, f넘버(피치정보)를 가산하여 파형데이터 메모리(44)의 새로운 판독어드레스 readPtr를 작성한다. 이와 같이 파형데이터 메모리의 판독어드레스readPtr(파형테이블)로부터 F넘버에 비례하는 피치(음고)를 가진 파형이 판독되게 된다. 또, F넘버가 소수부를 가진 데이터일 때에는 보다 정밀한 피치의 제어를 할 수 있다.
다음에, 스텝215로 진행하여 음량엔벨로프AEG의 갱신을 한다. 계속해서, 스텝216에서 상기 갱신된 음량엔벨로프AEG가 keyoffLevel보다 적은 값인지의 여부가 판정된다. 이 판정결과가 NO일 때에는 스텝217로 진행하여 LFO의 갱신처리를 행하고, 계속해서 스텝218에서 음량파라미터vol와 팬파라미터pan의 평활화처리(보간처리)를 한다(이들 스텝215, 217 및 218의 상세에 대해서는 후술하겠다.
다음에, 스텝219로 진행하여 이 채널에 대해 생성해야 할 파형샘플이 아직 남아 있는지, 즉 이 채널에 대해 1프레임에 상당하는 수의 샘플파형의 생성이 끝났는지의 여부를 판정하여 그 판정결과가 YES, 즉 연산생성해야 할 샘플이 있을 때에는 다시 스텝211로 리턴하다. 그 판정결과가 NO일 때에는 상기 채널의 모든 샘플에 대한 파형연산처리가 종료된 것이기 때문에 스텝221로 진행하고, 스텝207의 당해 채널의 파형생성연산을 종료한다.
또한, 앞의 스텝216 판정에 있어서 갱신된 음량파라미터의 값이 keyoffLevel보다 작아, 판정결과가 YES라고 되었을 때에는 스텝220에서 keyoff처리를 행하여 당해 채널을 소음상태로 설정한 후, 스텝221로 진행하고, 이 채널의 파형생성연산(207)을 종료한다.
여기서, 상술한 엔벨로프파형 및 LFO파형에 대해 제25A도, 제25B도를 참조해서 설명한다. 제25A도는 엔벨로프(EG)파형의 전형적인 예를 도시한 것이며, 주지한 바와 같이 어태크(ATTACK), 디케이(DECAY), 서스틴(SUSTAIN) 및 릴리스(RELEASE) 4개의 세그먼트로 이루어져 있다. 즉, 키이온(keyon)이 발생하면 어태크레이트(ATKrate)의 기울기를 가지며 최대레벨(EGMAXlevel)까지 단숨에 상승하고(어태크세그먼트), 계속해서 상기 최대레벨로부터 서스틴레벨까지 디케이레이트(DCrate)의 기울기에서 감쇠한다(디케이세그멘트). 그리고, 서스틴레벨(SUSlevel)에서 일정시간 정상상태로 되어(서스틴세그먼트),키이오프(keyoff)가 입력되면 릴리스레이트(RLSrate)의 기울기에서 감쇠한다. 그리고, 레벨이 인간의 귀에는 들리지 않을 정도의 키이오프레벨(keyofflevel)에 도달하면 댐프레이트(DMPrate)에 의해 클릭노이즈가 발생하지 않을 정도로 급속히 감쇠시킨다.
또한, LFO(Low Frequency Oscillator)파형은 악음파형에 대한 변조파형을 얻기 위해 사용되는 것으로, 제25B도에 도시한 바와 같이 기울기(LFOrate)로부터 결정되는 LFO주기를 가진 톱니형파로 되어 있다. 이 LFO파형을 이용해서 테이블참조나 연산에 의해 예를들면 정현파 등의 필요한 변조파형을 얻을 수 있다.
이와 같은 EG파형이나 LFO파형은 악음파형의 샘플링주기에 비해 매우 천천히 변화하는 것이다. 상기한 제18B도에 도시한 제i채널의 파형생성연산에 있어서는 각 샘플마다 이 진폭EG의 갱신(스텝215), LFO의 갱신(스텝217) 및 볼륨 및 팬의 보간연산(스텝218)을 하고 있으나, EG파형이나 LFO파형의 변화는 샘플링주기에 비해 천천히 한 것이기 때문에, 이들 연산처리를 각 샘플링주기마다 실행할 필요는 없으며, 다수 샘플링주기마다 실행하도록 해도 아무런 문제는 생기지 않는다. 그리고, 이와 같이 함으로써 파형생성연산에 있어서의 연산량을 적게 하는 것이 가능해진다.
이와 같이 한 제i채널 파형생성 연산처리의 또다른 실시형태를 제20도에 도시했다. 이 도면에 도시한 실시형태에 있어서는 8샘플연산마다 AEG의 갱신처리, LFO의 갱신처리 및 볼륨과 팬의 보간연산처리를 하는 것이다. 또한, 이들 연산처리의 빈도는 8샘플마다 할 필요는 없으며, 사용하는 CPU의 처리속도나 CPU의 부하상태에 따라 최적의 빈도를 선택하면 된다. 제20도에 있어서, 스텝230에서 제i채널의 파형생성연산이 개시되면, 먼저 스텝231에서 샘플번호를 카운트하는 카운터 sn의 내용을 「0」에 리세트한다. 계속해서, 스텝232에서 상술한 211(제18B)과 마찬가지로, 파형데이터 메모리로부터 필요한 파형샘플을 판독하여 보간연산이 행해진다. 다음에, 전회의 파형생성연산시에 있어서의 스텝250에서 이미 산출되어 있는 각 볼륨레벨을 각각 대응하는 보간연산 결과데이터와 승산하고,그 결과를 각 계열에 대응하는 버퍼에 더한다. 다음에, 스텝234에서 파형데이터 메모리의 새로운 판독어드레스를 작성한다.
다음에, 스텝235에서 샘플번호 카운터 sn의 내용이 0 혹은 8의 배수인지의 여부가 판정된다. 그 판정결과가 YES일 때에는 EG나 LFO의 연산을 실행해야 할 샘플이기 때문에 스텝236으로 진행하여 진폭EG(AEG)의 갱신처리가 행해지며, 그 후 스텝237로 진행한다. 한편, 이 235의 판정결과가 NO일 때에는 AEG의 갱신을 하지 않고 스텝237로 진행한다. 237에서 현재의 AEG값이 키이오프레벨보다 작은지의 여부가 판정되고, 그 결과가 NO일 때에는 스텝238로 진행하며, 상기 235와 같이 이 샘플이 LFO의 갱신처리 등을 해야 할 샘플인지 아닌지의 판정이 행해진다. 이 판정의 결과가 YES일 때에는 스텝239에서 LFO의 갱신처리를 행하고, 계속해서 스텝240에서 볼륨과 팬의 보간연산을 행한 후 241에서 3계열의 각 데이터의 볼륨레벨의 갱신처리가 행해지며, 이 샘플분의 파형생성처리가 종료되고 스텝242로 진행한다.
또, 상기 238의 판정결과가 NO일 때에는 LFO의 갱신처리 등을 실행해야 할 샘플이 아니기 때문에 이 시점에서 그 샘플분의 파형생성처리가 종료됨으로써스텝242로 진행한다.
스텝242에서는 모든 샘플의 처리가 종료되었는지의 여부를 판정하고, 처리해야 할 샘플이 남아 있을 때에는 스텝243에서 샘플번호 카운터를 잉크리멘트해서 상술한 스텝232 이후의 처리가 반복된다.
또한, 상기 스텝237에서 AEG가 키이오프레벨(keyofflevel)보다 작은 것이라 판정되었을 때에는 스텝244의 키이오프처리로 진행하고, 파형을 댐프레이트(제25A도)에 의해 급속히 감쇠시켜서 이 채널i의 파형생성처리를 종료한다.
이 제20도에 도시한 실시형태에 의하면, 스텝236의 AEG의 갱신처리, 스텝239의 LFO 갱신처리, 스텝240의 볼륨과 팬의 보간처리 및 스텝241의 볼륨레벨의 계산처리가 8샘플마다 실행되게 되어 상술한 제18A도, 제18B도에 도시한 실시형태의 경우보다 CPU의 연산부하량을 감쇠시킬 수 있다.
제i채널의 파형생성연산의 또다른 실시형태를 제21도에 도시했다. 이 제21도에 있어서의 각 스텝261~266은 각각 제20도에 있어서의 스텝231~236과 동일 내용이고, 또 제21도의 스텝267~269는 각각 제20도의 스텝239~241과 동일내용이며, 또 제21도의 스텝270은 제20도의 스텝237과, 제21도의 스텝271~273은 제20도의 스텝242~244와, 각각 동일내용이기 때문에 제21도에 있어서의 각 스텝의 처리내용에 대한 상세한 설명은 생략한다.
이 제21도에 도시한 실시형태에 있엇는 스텝265에서 당해 샘플이 EG나 LFO의 연산을 하지 않은 샘플이라고 판정되었을 때 스텝270으로 진행하여 AEG의 값이 키이오프레벨보다 작은 것인지의 여부를 판정한다. 또한, 상기 스텝265의 판정결과연산을 해야 할 샘플일 때에는 스텝266의 AEG갱신처리, 스텝267의 LFO갱신처리, 스텝268의 볼륨과 팬의 보간처리 및 스텝269의 볼륨레벨의 계산처리를 차례로 하도록 되어 있다.
즉, 상술한 제20도의 실시형태에 있어서는, 스텝236의 AEG 갱신연산을 LFO갱신연산(스텝239), 볼륨 및 팬의 보간연산(스텝240) 및 볼륨레벨계산(스텝241)으로 분리하고, AEG의 갱신연산 종료후에 AEG의 값이 키이오프레벨보다 작은지 아닌지의 판정을 하고 있으나, 이 제21도에 도시한 실시형태에서는 이들 연산처리를 모아서 하도록 하고, 그 후에 AEG값의 판정을 하도록 한 것이다. 이에 따라, CPU의 연산량은 제20도의 경우에 비해 약간 증가하지만, 상술한 제18B도의 경우보다는 감소하고 있다.
또한, 이들 실시형태에서는 AEG, LFO 등의 갱신처리의 빈도를 소정 샘플마다로 함으로써 연산량을 경감하고 있으나, 그밖에 당해 샘플이 EG에 있어서의 어느 세그먼트에 있는지에 따라 EG연산을 할지의 여부를 결정하도록 해도 된다. 예를들면 어태크 세그먼트 및 디케이세그먼트에서는 EG연산을 실행하지만 서스틴세그먼트에서는 정상상태에 있는 것이기 때문에 EG연산을 생략할 수 있다. 이와 같이 EG파형의 세그먼트에 따라 EG연산을 생략함으로써 연산빈도를 실질적으로 저하시키는 것도 가능하다.
다음에, AEG의 갱신처리(제18B도)의 스텝215, 제20도의 스텝236 및 제21도의 스텝266)의 상세에 대해 제22도를 참조해서 설명하겠다. AEG갱신처리가 개시되면, 먼저 스텝301에서 EG파라미터(EGPARM), 진폭EG의 현재치(aeg) 및연산터치정보(touch)가 판독된다. 이 EG제어정보는 당해 발음채널에서 생성되는 악음에 대응하는 EG파형의 각 세그먼트의 계속시간, 목표치(EGMAXlevel, SUSlevel) 및 어태크레이트(ATKrate), 디케이레이트(DCrate), 릴리스레이트(RLSrate) 등으로 이루어진다.
다음에, 스텝302로 진행하여 현재 키이온중인지의 여부가 판정된다. 이 판정결과가 NO일 때에는 키이오프이기 때문에 스텝303으로 진행하고, 릴리스세그먼트로 이행한다. 또한, 키이온중일 대에는 그대로 스텝304로 진행한다. 이 스텝304에 있어서, 현재의 세그먼트가 서스틴 세그먼트인지의 여부가 판정된다. 그 판정결과가 NO, 즉 서스틴세그먼트일 때에는 AEG는 정상상태이기 때문에 AEG갱신처리는 이대로 종료된다. 또, 304의 판정결과가 YES일 때에는 스텝305 이하로 진행하여, AEG의갱신이 행해지게 된다.
EG의 각 세그먼트의 레이트치 등의 EG파라미터는 실수치로 기억되고 있으나, 본 발명에서는 EG치를 정수로서 취급하고 있기 때문에, AEG의 갱신은 다음과 같이 행해지고 있다. 즉, 대응하는 세그먼트에 있어서의 레이트치를 rate라 하고, 그 정수부를 n, 소수부를 f라고 한다. 그리고, f〉0일 때에는 m=n+1, k=rate/(n+1), f=0일 때에는 m=n, k=rate/n=1로 한다. 그리고, k를 누산하여 그 값이 1을 초과할 때마다 현재의 AEG치 aeg에 정수치(m)를 가산함으로써 AEG를 갱신하도록 하고 있다. 이와 같이 함으로써, 레이트치의 소수절상치(m)를 rate/m의 활률로 가산할 수 있으며, 결국 m·(rate/m)=rate를 현재치(aeg)에 가산하여 AEG의 갱신을 하게 된다.
이 때문에, 먼저 스텝305에 있어서 aeg플랙션 레지스터(aegfrac reg)에 상술한 k의 값을 더한다. 이 aegfrac reg는 상술한 k를 누산하기 위한 레지스터이다. 그리고, 스텝306에 있어서, 상기 aegfrac reg의 내용이 1보다 커졌는지의 여부를 판정한다. 이 판정결과가 NO일 때에는 상술한 바와 같이 현재의 AEG값의 갱신하지 않은 것이기 때문에 그대로 이 처리를 종료한다. 또한, aegfrac reg의 내용이 1을 초과하여 스텝306의 판정결과가 YES로 되었을 때에는 스텝107로 진행하고, 현재의 AEG 치 aeg에 m=(당해 세그먼트의 레이트값 rate의 정수부 n+1)을 가산하여 새로운 aeg로 하고, 상기 새로운 aeg에 연주터치정보(TOUCH)를 승산하여 갱신된 AEG치를 구한다.
다음에, 스텝308에서 aegfrac reg의 내용으로부터 1을 감산하여 다음회의 k 누산에 대비한다. 계속해서, 스텝309에 있어서 aeg는 목표치(어태크세그먼트일 때에는 EGMAXlevel), 디케이세그먼트일 때에는 SUSlevel)에 도달했는지의 여부가 판정되고, 그 판정결과가 YES일 때에는 스텝310에서 다음의 세그먼트로 이행하고, NO일 때에는 그대로 이번 회의 AEG갱신처리를 종료한다.
다음에, LFO갱신처리(제18B도의 스텝217, 제20도의 스텝239 및 제21도의 스텝267)의 상세에 대해 제23도를 참조하여 설명하겠다. 이 LFO제어데이터도 상술한 EG파라미터와 마찬가지로 실수치로 기억되고 있으나, 실제의 LFO파라미터는 정수로 취급하고 있기 때문에, 상술한 EG치와 마찬가지로 확률적인 연산에 의해 갱신되어 있다. 먼저, 스텝321에서 기억되어 있는 LFO제어데이터, 즉 LFO레이트(LFOrate)와, 현재의 LFO위상치(lfop)를 기록한다.
여기서, 상술한 EG의 경우와 마찬가지로, 판독된 LFO레이트치(LFO rate)의정수부를 n, 소수부를 f라 하고, f〉0일 때에는 m=n+1, k=LFOrate/(n+1), f=0일 때에는 m=n, k=LFOrate/n=1로 한다. 그리고, k를 누산하고, 그 값이 1을 초과할 때마다 현재의 LFO치 1fop에 정수치 (m)를 가산함으로써 LFO치를 갱신하도록 하고 있다.
즉, 스텝322에 있어서, 1fo플랙션레지스터(1fofrac reg)에 k를 더하고, 그 값이 1을 초과했는지의 여부를 스텝323에서 판정한다. RM 판정결과가 NO일 때에는 이번회의 갱신처리를 종료한다. 또, YES일 때에는 스텝324에서 LFO의 현재위상치1fop에 m(=LFOrate의 정수치 n+1)을 가산하고, 새로운 현재위상치1fop로 갱신한다. 계속해서, 스텝325에서 1fofrac reg의 내용으로부터 1을 감산하여 다음회의 처리에 대비하고, 스텝326으로 진행한다. 스텝326에 있어서 현재위상치1fop가 목표치1fopdist에 도달했는지의 여부를 판정한다. 이 판정결과가 NO일 때에는 그대로 스텝328로 진행한다. 한편, 1fop가 목표치 1fopdist에 도달하고, 스텝326의 판정결과가 YES가 되었을 때에는 스텝327에서 1fop를 0에 리세트한다. 이에 따라 제25B도에 도시한 바와 같이 톱니형파의 LFO치가 생성되게 된다. 다음에, 스텝328이 실행되어 현재의 LFO위상치1fop의 값에 의거해서 테이블참조 혹은 연산에 의해 소정의 LFO파형의 진폭치1fo를 구해진다.
이상, 제25B도와 같은 톱니형파의 LFO치를 발생하여 변조파형으로서 이용하거나 혹은 이 톱니형파 LFO치에 의거해서 각종 변조파형을 발생하는 방법을 실시예로 들어 설명했으나, 그밖에 직접적인 연산에 의해 소망하는 변조파형의 LFO치를 구하도록 해도 되고, 또 단순히 차례로 소정의 변조파형테이블을 참조하도록 해도된다.
다음에, 제24도에 의거해서 볼륨 및 팬의 계산처리(제18B도)에 있어서의 스텝218, 제20도의 스텝240 및 제21도의 스텝268)에 대해 설명한다. 또한, 이 볼륨정보 및 팬정보는 사용자의 조작에 의해 설정되는 것이다. 먼저, 스텝331에 있어서 볼륨정보의 현재치vol가 사용자에 의해 세트된 목표치와 같아지는지의 여부를 판정한다. vol목표치와 같아지면서 이 판정결과가 NO가 되었을 때에는 스텝332로 진행한다. 또한, 목표치와 같아지지 않을 때에는 스텝332로 진행하고, vol데이터의 보간처리를 하여 보간된 데이터를 새로운 vol데이터로 한다.
다음에, 스텝332에 있어서 팬데이터의 현재치pan가 사용자에 의해 설정된 목표치와 같아지지 않은지의 여부를 판정한다. pan이 목표치와 같고, 그 판정결과가 NO가 되었을 때에는 그대로 볼륨 및 팬의 계산처리를 종료한다. 한편 스텝333의 YES가 되었을 때에는 스텝334에서 팬데이터의 보간처리를 행하여 보간후의 데이터를 새로운 pan데이터로 한다.
또, 상기한 실시형태에 있어서는 톤제너레이터 태스크(20)를 출력드라이버의 1프레임분의 재생종료시에 발생되는 output ready 메시지에 의해 기동하고 있으나, 반드시 이것에 한정되는 것은 아니다. 톤제러레이터 태스크(20)에 있어서의 (5)~(7)의 처리는 1프레임시간에 비해 단시간에 종료되는 것이기 때문에, 톤제너레이터 태스크(20)를 1프레임 재생시간 도중에 기동하도록 해도 된다. 또, 일정시간 길이의 각 프레임마다 기동하도록 하지 않아도 출력드라이버에 세트된 파형데이터가 적어졌음을 검출한 시점에서 기동하도록 해도 된다.
또, 파형데이터의 수수요구(output ready 메시지)가 있었을 때 본 발명의 파형생성방법은 소프트웨어음원의 경우에 한하지 않고, 전자악기 등에 내장된 전용 악음발생장치에도 적용할 수 있다.
또한, 생성된 파형데이터와 외부에서 입력된 파형데이터를 합성하는 것 및 외부에서 입력된 파형데이터를 다수 스테이지의 파형생성연산처리 도중의 스테이지에 삽입하는 것도 소프트웨어음원의 경우에 한하지 않고 전용 악음발생장치의 경우에도 적용할 수 있다.
또한, 상기 실시형태에 있어서는 상기한 바와 같이 처리(5)(6)(7)(1)(2)(3)의 순서로 일련의 처리를 하고 있으나, 처리 순서는 반드시 이것에 한정되지 않는다.
또, 상기 실시형태에 있어서는 파형생성 연산처리(3)를 연속해서 행하고 있으나, 반드시 이것에 한정되지는 않으며, 다수개로 분할하여 행하도록 해도 된다.
또, 상기에서는 MIDI이벤트의 인터럽트처리에 있어서 발음할당 및 음원레지스터 설정까지 모아서 실행하게 되어 있으나, 이 인터럽트처리에 있어서 발음할당처리만을 실행하도록 하거나 혹은 동 인터럽트처리에서는 단순히 발생한 MIDI이벤트를 버퍼에 받아들이는 수신처리만을 실행하도록 해도 된다. 이 경우에는 MIDI인터럽트처리에서 발음할당 내지 음원레지스터의 설정을 생략하는 대신, 같은 처리를 예를들면 음원처리중에 실행하면 되는 것이다. 또는, 그위에 타이머 등으로 다른 인터럽트 요인을 설정하고, 그 인터럽트처리에 의해 실행하는 것도 가능하다.
또한, 상기 인터럽트 처리는 상술한 바와 같은 할당처리나 수신처리에 한정되는 것이 아니라, 악음생성에 이어지는 연주정보처리에 관한 것이면 어떠한 처리여도 상관없다.
또, 악음생성방법은 상술한 실시형태와 같은 파형메모리방식에 한정되는 것이 아니라 FM방식, 물리모델방식, ADPCM방식 등 어떤 방식이여도 상관없다.
본 발명에 따르면 임의의 범용 OS와 병렬적으로 파형생성연산을 안정적으로 실행하는 것이 가능해진다.
또, 파형재생부로부터 요구가 있었을 때 신속하게 파형데이터를 출력할 수 있어서 데이터의 수수가 지연되는 위험성을 없앨 수 있다.
또한, 외부로부터 입력된 파형데이터에 대해 소프트웨어음원의 음색제어처리를 가하는 것이 가능해진다.
또, 연주정보가 발생한 시점에서 처리가 증가하여 음원처리를 그다지 실행할 수 없더라도, 그 이외의 시점에서 그 보충을 할 수 있으므로, 음원처리를 안정화할 수 있다.
또한, 연주정보가 발생한 시점에서의 처리 증가분을 빈시간내에 분산시킬 수 있어서 일시적인 처리증가를 방지할 수 있다.
또, EG파형연산이나 LFO연산을 간헐적으로 함으로써, 파형생성을 위한 연산량을 적게 하는 것이 가능해져서 파형생성으로 인한 처리부담을 경감할 수 있다.

Claims (122)

  1. 악음 발생 방법에 있어서,
    복수의 지정된 악음을 발생하도록 발생명령들을 내리는 제1 단계;
    상기 지정된 악음을 복수의 악음발생 채널 중에서 지정된 각각의 악음 발생 채널에 할당하고, 상기 지정된 악음용의 제어 데이터를 상기 각각의 지정된 악음 발생 채널의 채널 레지스터에 기입하여 저장하는 제2 단계;
    소정의 간격으로 연산개시 명령을 내리는 제3 단계;
    상기 제3 단계에 의해 내려진 상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여, 지정된 악음 발생 채널 각각에 대한 복수의 샘플분의 파형 데이터를 연산하여 형성하도록, 상기 지정된 악음 발생 채널에 대해 악음 형성 연산을 순차적으로 수행하는 제4 단계;
    상기 샘플 각각에 대해, 상기 제4 단계에 의한 상기 지정된 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계; 및
    상기 복수의 샘플 각각의 샘플분의 상기 혼합된 샘플 데이터를 매 샘플링 사이클마다 아날로그 신호로 변환하는 제6 단계를 포함하며,
    상기 악음 형성 연산에서, 상기 제4 단계는 상기 채널 레지스터로부터의 상기 제어 데이터 하나를 판독한 것에 기초하여 상기 복수의 샘플분의 파형 데이터를 상기 지정된 악음 발생 채널 각각에 대해 형성하고, 상기 파형 데이터 형성 후에상기 채널 레지스터에 상기 제어 데이터를 기입하는 악음 발생 방법.
  2. 제1항에 있어서, 상기 지정된 악음 각각에 대해 상기 제1 단계에 의해 내려진 발생명령에 따라 도중에 연산개시 명령을 내리는 제7 단계를 더 포함하며, 상기 도중의 연산개시 명령에 응답하여, 상기 제4 단계는 마지막으로 형성된 파형의 말미부터 발생명령이 상기 제1 단계에 의해 내려진 시점까지의 구간에 대응하는 복수의 샘플분의 파형 데이터를 형성하는 것인 악음 발생 방법.
  3. 악음 발생 방법에 있어서,
    복수의 지정된 악음을 발생하도록 발생명령들을 내리는 제1 단계;
    상기 지정된 악음을 복수의 악음발생 채널 중에서 지정된 각각의 악음 발생 채널에 할당하고, 상기 지정된 악음용의 제어 데이터를 상기 각각의 지정된 악음 발생 채널의 채널 레지스터에 기입하여 저장하는 제2 단계;
    소정의 간격으로 연산개시 명령을 내리는 제3 단계;
    상기 제3 단계에 의해 내려진 상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여, 지정된 악음 발생 채널 각각에 대한 복수의 샘플분의 파형 데이터를 연산하여 형성하는 제4 단계;
    상기 샘플 각각에 대해, 상기 제4 단계에 의한 상기 지정된 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 복수의 샘플 각각의 샘플분의 혼합된 샘플 데이터를 형성하는 제5 단계; 및
    상기 복수의 샘플분의 상기 혼합된 샘플 데이터를 매 샘플링 사이클마다 아날로그 신호로 변환하는 제6 단계를 포함하며,
    상기 제4 단계는 다른 채널보다 높은 볼륨을 가진 악음을 현재 발생하는 채널 중 적어도 한 채널에 우선순위를 부여하는 소정의 조건에 따라 상기 파형 데이터의 연산에 의한 형성을 수행하는 악음 발생 방법.
  4. 제3항에 있어서, 소정의 제한시간을 설정하는 제7 단계, 및 모든 지정된 악음 발생 채널에 대한 연산이 소정의 제한시간 내에 완료될 것인지 여부를 판정하고, 모든 지정된 악음 발생 채널에 대한 연산이 소정의 제한시간 내에 완료되지 않을 것으로 판정되면 악음 발생 채널 중 어느 한 채널의 악음 소음을 지시하는 제8 단계를 더 포함하는 악음 발생 방법.
  5. 악음 발생 방법에 있어서,
    복수의 지정된 악음을 발생하도록 발생명령들을 내리는 제1 단계;
    상기 지정된 악음을 복수의 악음발생 채널 중에서 지정된 각각의 악음 발생 채널에 할당하고, 상기 지정된 악음용의 제어 데이터를 상기 각각의 지정된 악음 발생 채널의 채널 레지스터에 기입하여 저장하는 제2 단계;
    상기 지정된 악음 발생 채널에서 발생된 악음들의 각각의 중요도에 따라 상기 지정된 악음 발생 채널에 걸쳐 연산처리 순서를 결정하는 제3 단계;
    소정의 간격으로 연산개시 명령을 내리는 제4 단계;
    상기 제4 단계에 의해 내려진 연산개시 명령에 따라, 상기 지정된 악음 발생 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 복수의 샘플분의 파형 데이터를 연산하여 형성하는 제5 단계;
    상기 복수의 샘플 각각에 대해, 상기 채널에 대해 형성된 파형 데이터를 혼합하여 복수의 샘블에 대한 혼합된 샘플 데이터를 형성하는 제6 단계; 및
    상기 복수의 샘플 각각에 대해 상기 혼합된 샘플 데이터를 매 샘플링 사이클마다 아날로그 신호로 변환하는 제7 단계를 포함하며,
    제5 단계는 상기 제3 단계에 의해 결정된 연산처리 순서에 따라 상기 지정된 악음 발생 채널에 대한 파형 데이터를 형성하는 연산을 수행하며, 상기 제5 단계에 의한 파형 데이터를 형성하는 연산이 소정의 시간 내에 완료되지 않아 상기 제7 단계에 의해 변환된 아날로그 신호가 끊겨질 우려가 있을 때, 연산처리 순서에서 채널 중 한 채널에 대해 수행되고 있는 시점에서 파형 데이터를 형성하는 연산을 중단시켜 아날로그 신호가 끓기지 않도록 한 악음 발생 방법.
  6. 연산장치에서 실행되는 악음 발생 방법에 있어서,
    연주정보를 입력하는 입력단계;
    소정의 기간 동안 입력된 상기 연주정보에 의거해서, 상기 소정의 기간에 대응하는 파형 데이터를 연산하여 형성하는 파형 형성 단계;
    매 샘플링 사이클마다, 상기 소정의 기간에 대응하는 파형 데이터의 한 샘플을 출력하는 출력 단계;
    상기 파형 형성 단계에 의해 형성된 소정의 기간에 대응하는 파형 데이터를 상기 출력단계에 공급하는 파형 데이터 공급단계;
    상기 출력 단계에 의한 파형 데이터의 출력이 진행되었음을 검출하여, 상기 파형 데이터 공급단계로부터 파형 데이터의 또 다른 공급을 요구하는 요구단계를 포함하며,
    상기 파형 데이터 공급단계는 상기 요구단계에 의한 요구에 응하여 실행되고 상기 파형 형성 단계는 상기 공급단계 후에 실행되는 악음 발생 방법.
  7. 연산장치에서 실행되는 악음 발생 방법에 있어서,
    연주정보를 입력하는 입력단계;
    소정의 기간 동안 입력된 상기 연주정보에 의거해서, 상기 소정의 기간에 대응하는 파형 데이터를 연산하여 형성하며, 상기 파형 데이터의 복수의 연속한 샘플을 형성하는 파형 형성 단계;
    상기 소정의 기간에 대응하는 외부 파형 데이터를 입력하고, 상기 외부 데이터와 상기 파형 형성 단계에 의해 연산에 의해 형성된 파형 데이터를 결합하며, 상기 소정의 기간분의 합성된 파형 데이터를 형성하는 파형 합성 단계;
    상기 소정의 기간분의 상기 합성된 파형 데이터에 신호처리를 가하고, 상기 합성 파형 데이터의 상기 복수의 샘플에 상기 신호 처리를 가하는 파형 처리 단계; 및
    매 샘플링 사이클마다, 상기 합성된 파형 데이터의 한 샘플을 출력하는 출력단계를 포함하는 악음 발생 방법.
  8. 악음 발생 장치에 있어서,
    음원 처리 프로그램 및 연주 처리 프로그램을 기억하는 메모리;
    연주정보를 공급하는 공급수단;
    제어정보를 기억하는 레지스터;
    상기 악음 처리 프로그램 및 연주 처리 프로그램을 실행하는 것으로서, 통상은 제어정보에 의거하여 복수의 샘플링 기간분의 파형 데이터를 총괄하여 형성하도록 악음 처리 프로그램을 실행하며, 연주정보가 상기 공급수단에 의해 공급되었을 때는 악음 처리 프로그램의 실행을 일시적으로 중단하여 연주 처리 프로그램을 실행하고 그럼으로써 공급된 연주정보에 대응하는 제어 정보를 생성하고 이 생성된 제어정보를 상기 레지스터에 기억시키며, 연주 처리 프로그램 완료시, 상기 악음 처리 프로그램이 중단된 지점에서 악음 처리 프로그램을 재개하는 연산수단; 및
    상기 악음 처리 프로그램에 의해 형성된 파형 데이터에 의거하여, 상기 연산수단에 의한 파형 데이터의 형성보다 늦은 타이밍에서 대응하는 악음을 발생하는 악음 출력수단을 포함하는 악음 발생 장치.
  9. 연산장치에서 실행되는 악음 발생 방법에 있어서,
    연주정보를 입력하는 입력 단계;
    소정의 기간 동안 입력된 상기 연주정보에 의거해서, 상기 소정의 기간에 대응하는 파형 데이터를 연산하여 형성하는 파형 형성 단계;
    매 샘플링 사이클마다, 상기 소정의 기간에 대응하는 파형 데이터의 한 샘플을 출력하는 출력단계;
    상기 파형 형성 단계에 의해 형성된 상기 소정의 기간에 대응하는 파형 데이터를 상기 출력단계에 공급하는 파형 데이터 공급단계; 및
    상기 출력 단계에 의한 파형 데이터의 출력이 진행되었음을 검출하여, 상기 파형 데이터 공급단계로부터 파형 데이터의 또 다른 공급을 요구하는 요구단계를 포함하며,
    상기 파형 데이터 형성단계는 간헐적으로 악음 파라미터 연산을 수행하며, 상기 파형 데이터 공급단계는 상기 요구단계에 의한 요구에 응하여 실행되며, 상기 파형 형성 단계는 상기 공급단계 후에 실행되는 악음 발생 방법.
  10. 연산장치에서 실행되는 악음 발생 방법에 있어서,
    연주정보를 입력하는 입력 단계;
    소정의 기간 동안 입력된 상기 연주정보에 의거해서, 상기 소정의 기간에 대응하는 복수의 연속한 파형 데이터 샘플을 연산하여 형성하는 파형 형성 단계;
    상기 소정의 기간에 대응하는 외부 파형 데이터를 입력하고, 상기 외부 데이터와 상기 파형 형성 단계에 의해 연산에 의해 형성된 파형 데이터를 결합하며, 상기 소정의 기간분의 합성된 파형 데이터를 형성하는 파형 합성 단계;
    상기 소정의 기간분의 상기 합성된 파형 데이터에 신호처리를 가하는 파형처리 단계; 및
    매 샘플링 사이클마다, 상기 합성된 파형 데이터의 한 샘플을 출력하는 출력단계를 포함하며,
    상기 파형 형성 단계는 간헐적으로 악음 파라미터 연산을 수행하는 악음 발생 방법.
  11. 악음 발생 장치에 있어서,
    복수의 지정된 악음을 발생하도록 발생명령들을 내리는 제1 수단;
    상기 지정된 악음을 복수의 악음발생 채널 중에서 지정된 각각의 악음 발생 채널에 할당하고, 상기 지정된 악음용의 제어 데이터를 상기 각각의 지정된 악음 발생 채널의 채널 레지스터에 기입하여 저장하는 제2 수단;
    소정의 간격으로 연산개시 명령을 내리는 제3 수단;
    상기 제3 수단에 의해 내려진 상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여, 지정된 악음 발생 채널 각각에 대한 복수의 샘플분의 파형 데이터를 연산하여 형성하도록, 상기 지정된 악음 발생 채널에 대해 악음 형성 연산을 순차적으로 수행하는 제4 수단;
    상기 샘플 각각에 대해, 상기 제4 수단에 의한 상기 지정된 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 수단; 및
    상기 복수의 샘플 각각의 샘플분의 상기 혼합된 샘플 데이터를 매 샘플링 사이클마다 아날로그 신호로 변환하는 제6 수단을 포함하며,
    상기 악음 형성 연산에서, 상기 제4 수단은 상기 채널 레지스터로부터의 상기 제어 데이터 하나를 판독한 것에 기초하여 상기 복수의 샘플분의 파형 데이터를 상기 지정된 악음 발생 채널 각각에 대해 형성하고, 상기 파형 데이터 형성 후에 상기 채널 레지스터에 상기 제어 데이터를 기입하는 악음 발생 장치.
  12. 제11항에 있어서, 상기 지정된 악음 각각에 대해 상기 제1 수단에 의해 내려진 발생명령에 따라 도중에 연산개시 명령을 내리는 제7 수단을 더 포함하며, 상기 도중의 연산개시 명령에 응답하여, 상기 제4 수단은 마지막으로 형성된 파형의 말미부터 발생명령이 상기 제1 수단에 의해 내려진 시점까지의 구간에 대응하는 복수의 샘플분의 파형 데이터를 형성하는 것인 악음 발생 장치.
  13. 사운드 발생 장치에 있어서,
    제1 및 제2 프로그램을 실행하는 프로세서 장치;
    상기 프로세서 장치에 의해 실행될 프로그램을 기억하는 메모리 장치;
    지정된 사운드를 발생하도록 발생명령을 입력하는 입력장치;
    사운드 발생 채널에서 발생되도록 사운드를 제어하는 제어 데이터를 기억하는 레지스터 장치로서, 상기 제어 데이터는 복수의 상기 사운드 발생 채널 각각에 대해 상기 레지스터 장치에 개별적으로 기억되는 것인 상기 레지스터 장치; 및
    매 소정의 샘플링 사이클마다, 발생된 사운드 파형 데이터를 출력하는 출력장치를 포함하며,
    상기 프로세서 장치는, 상기 입력장치를 통해 상기 발생명령의 입력에 응하여, 상기 지정된 사운드를 상기 사운드 발생 채널 중 하나에 할당하고 상기 지정된 사운드에 대응하는 상기 제어 데이터를 상기 할당된 채널에 대응하여 상기 레지스터 장치에 기억시키게 하는 프로세스를 행하는 상기 제1 프로그램을 실행하며, 상기 프로세서 장치는, 또한,
    소정의 간격으로 연산개시 명령을 내리는 프로세스;
    상기 연산개시 명령 각각에 따라, 형성될 복수의 샘플에 필요한 총 샘플링 사이클 수에 대응하는 시간보다 짧은 시간 내에 상기 레지스터 장치에 기억된 제어 데이터에 의거하여 각각의 채널에 대한 상기 복수의 샘플분의 파형 데이터를 연산하여 형성하도록 상기 채널에 대해 사운드 형성 연산을 수행하는 프로세스, 상기 사운드 형성 연산은 다른 채널보다 높은 볼륨의 악음을 현재 발생하는 채널 중 적어도 한 채널에 우선순위를 부여하는 소정의 조건에 따라 형성되며;
    각각의 소정의 샘플점에 대해서, 개개의 채널에 대해 형성된 파형 데이터의 샘플들을 혼합하여 상기 각각의 샘플점에 대해 혼합된 샘플 데이터를 형성하는 프로세스를 행하게 하는 상기 제2 프로그램을 실행하며,
    각각의 소정의 샘플점에 대해, 상기 개개의 채널에 대해 형성된 파형 데이터의 샘플들은 각각의 상기 샘플점에 대해 혼합된 샘플 데이터를 형성하는 것인 사운드 발생 장치.
  14. 제13항에 있어서, 상기 프로세스 장치에 의해 실행되는 상기 제2 프로그램은 소정의 제한시간을 설정하는 프로세스, 모든 지정된 악음 발생 채널에 대한 연산이 소정의 제한시간 내에 완료될 것인지 여부를 판정하는 프로세스, 및 모든 지정된 악음 발생 채널에 대한 연산이 소정의 제한시간 내에 완료되지 않을 것으로 판정되면 악음 발생 채널 중 어느 채널의 악음 소음을 지시하는 프로세스를 더 행하게 하는 것인 사운드 발생 장치.
  15. 악음 발생 장치에 있어서,
    복수의 지정된 악음을 발생하도록 발생명령들을 내리는 제1 수단;
    상기 지정된 악음을 복수의 악음발생 채널 중에서 지정된 각각의 악음 발생 채널에 할당하고, 상기 지정된 악음용의 제어 데이터를 상기 각각의 지정된 악음 발생 채널의 채널 레지스터에 기입하여 저장하는 제2 수단;
    상기 지정된 악음 발생 채널에서 발생된 악음들의 각각의 중요도에 따라 상기 지정된 악음 발생 채널에 걸쳐 연산처리 순서를 결정하는 제3 수단;
    소정의 간격으로 연산개시 명령을 내리는 제4 수단;
    상기 제4 수단에 의해 내려진 연산개시 명령에 따라, 상기 지정된 악음 발생 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 복수의 샘플분의 파형 데이터를 연산하여 형성하는 제5 수단;
    상기 복수의 샘플 각각에 대해, 상기 채널에 대해 형성된 파형 데이터를 혼합하여 복수의 샘플에 대한 혼합된 샘플 데이터를 형성하는 제6 수단; 및
    상기 복수의 샘플 각각에 대해 상기 혼합된 샘플 데이터를 매 샘플링 사이클마다 아날로그 신호로 변환하는 제7 수단을 포함하며,
    제5 수단은 상기 제3 수단에 의해 결정된 연산처리 순서에 따라 상기 지정된 악음 발생 채널에 대한 파형 데이터를 형성하는 연산을 수행하며, 상기 제5 수단에 의한 파형 데이터를 형성하는 연산이 소정의 시간 내에 완료되지 않아 상기 제7 수단에 의해 변환된 아날로그 신호가 끊겨질 우려가 있을 때, 연산처리 순서에서 채널 중 한 채널에 대해 수행되고 있는 시점에서 파형 데이터를 형성하는 연산을 중단시켜 아날로그 신호가 끓기지 않도록 한 악음 발생 장치.
  16. 악음 발생 장치에 있어서,
    연주정보를 공급하는 공급수단;
    복수의 샘플링 기간 동안, 총괄적이고 연속적으로, 파형 데이터를 연산하여 형성하는 주 수단;
    연주정보가 상기 공급수단에 의해 공급되었을 때 상기 주 수단을 일시적으로 중단시켜 상기 주 수단이 파형 데이터를 형성하는 대신 소정의 입력동작을 수행하여 상기 공급되는 연주정보를 수신하며, 입력동작 완료시, 상기 주 수단이 중단된 지점에서 상기 주 수단을 재개시키는 인터럽트 수단; 및
    상기 주 수단에 의해 형성된 파형 데이터에 의거하여, 상기 인터럽트 수단에 의한 파형 데이터가 연산에 의해 형성되는 시점보다 늦은 타이밍에서 대응하는 악음을 발생하는 악음 발생 수단을 포함하며,
    상기 주 수단은 입력동작에 의한 연주정보에 의거하여 악음 제어 데이터를 생성하는 연주정보 처리 수단과, 상기 악음 제어 수단에 의거하여 파형 데이터를 연산하여 형성하는 음원 처리 수단을 포함하는 것인 악음 발생 장치.
  17. 사운드 발생 장치에 있어서,
    소정의 오퍼레이팅 시스템의 실행과, 어플리케이션 프로그램, 사운드 발생 프로그램 및 태스크 제어 프로그램을 포함하며 상기 오퍼레이팅 시스템에서 실행되는 복수의 프로그램의 실행을 행하는 프로세서 장치;
    상기 프로세서 장치에 의해 실행될 프로그램들을 기억하는 메모리 장치; 및
    매 소정의 샘플링 사이클마다, 발생된 사운드 파형을 출력하는 출력장치를 포함하며,
    상기 프로세서 장치는, 상기 오퍼레이팅 시스템에서 실행되는 상기 어플리케이션 프로그램으로부터 사운드를 발생시키는 명령에 응하여, 매 소정의 기간마다, 소정 개수의 샘플에 대해 파형 데이터를 연산하여 형성하는 프로세스를 행하게 하는 상기 사운드 발생 프로그램을 실행하며,
    상기 출력장치는 상기 형성된 파형 데이터의 연속한 샘플 각각을 매 샘플 사이클마다 출력하고, 복수의 샘플링 사이클에 한번 태스크 전환을 요청하는 트리거 신호를 발생하며,
    상기 프로세서 장치는, 상기 트리거 신호에 응하여, 상기 소정의 기간동안 상기 파형 데이터를 형성하는 실행과 상기 오퍼레이팅 시스템의 실행간에 태스크전환동작을 제어하는 프로세스를 행하게 하는 상기 태스크 제어 프로그램을 또한 실행하는 사운드 발생 장치.
  18. 악음 발생 장치에 있어서,
    연주정보를 입력하는 입력수단;
    소정의 기간 내에 입력된 연주정보에 의거해서, 상기 소정 기간에 대응하는 파형 데이터를 연산하여 생성하는 파형 형성 수단;
    소정의 기간에 대응하는 파형 데이터를 샘플링 주기마다 1샘플씩 출력하는 출력수단;
    상기 파형 형성 수단에 의해 형성된 소정 기간분의 파형 데이터를 상기 출력수단에 공급하는 파형 데이터 공급수단; 및
    상기 출력수단에 의한 파형 데이터의 출력의 진행을 검출하여, 상기 파형 데이터 공급수단으로부터 상기 파형 데이터 또 다른 공급을 요구하는 요구수단을 포함하며,
    상기 파형 데이터 공급수단은 상기 요구수단으로부터의 요구에 따라 실행되고, 상기 파형 형성 수단은 상기 공급수단에 이어 실행되는 것인 악음 발생 장치.
  19. 사운드 발생 장치에 있어서,
    사운드 발생 프로그램을 실행하는 프로세서 장치;
    상기 프로세서 장치에 의해 실행될 프로그램을 기억하는 메모리 장치;
    연주정보를 입력하는 입력장치;
    매 소정의 샘플링 사이클마다, 발생된 사운드 파형 데이터를 출력하는 출력장치를 포함하며,
    상기 프로세서 장치는, 소정의 기간동안 입력된 연주정보에 응하여, 소정의 기간에 대응하는 파형 데이터를 연산하여 형성하는 프로세스;
    소정의 기간분의 외부 파형 데이터를 입력하는 프로세스;
    상기 외부 데이터와 상기 파형 형성 수단에 의해 연산에 의해 형성된 파형 데이터를 결합하여, 상기 소정의 기간분의 합성된 파형 데이터를 형성하는 프로세스;
    상기 소정의 기간분의 상기 합성된 파형 데이터에 신호처리를 가하는 프로세스를 행하게 하는 상기 사운드 발생 프로그램을 실행하고,
    상기 출력장치는 상기 결합 및 처리된 파형 데이터의 한 샘플을 상기 발생된 사운드 파형 데이터로서 매 샘플링 사이클마다 출력하는 사운드 발생 장치.
  20. 사운드 발생 장치에 있어서,
    사운드 발생 프로그램을 실행하는 프로세서 장치;
    상기 프로세스 장치에 의해 실행될 프로그램을 기억하는 메모리 장치;
    연주정보를 입력하는 입력장치;
    발생된 사운드 파형 데이터를 매 소정의 샘플링 사이클마다 출력하는 출력장치를 포함하며;
    상기 프로세서 장치는, 소정의 기간동안 입력된 연주정보에 의거하여, 복수의 스테이지에 걸쳐 연산을 수행하여 연산에 의해 파형 데이터를 형성하는 프로세스;
    외부 파형 데이터를 입력하는 프로세스; 및
    상기 연산하는 스테이지 중 한 스테이지에 상기 입력된 외부 파형 데이터를 삽입하는 프로세스를 행하게 하는 상기 사운드 발생 프로그램을 실행하는 사운드 발생 장치.
  21. 사운드 발생 장치에 있어서,
    소정의 오퍼레이팅 시스템의 실행과, 어플리케이션 프로그램, 사운드 발생 프로그램 및 태스크 제어 프로그램을 포함하며 상기 오퍼레이팅 시스템에서 실행되는 복수의 프로그램의 실행을 행하는 프로세서;
    상기 프로세서 장치에 의해 실행될 프로그램들을 기억하는 메모리 장치; 및
    매 소정의 샘플링 사이클마다, 발생된 사운드 파형을 출력하는 출력장치를 포함하며,
    상기 프로세서 장치는, 상기 오퍼레이팅 시스템에서 실행되는 상기 어플리케이션 프로그램으로부터 사운드를 발생시키는 명령에 응하여, 매 소정의 기간마다, 소정 개수의 샘플에 대해 파형 데이터를 연산하여 형성하는 프로세스를 행하게 하는 상기 사운드 발생 프로그램을 실행하며,
    상기 출력장치는 상기 형성된 파형 데이터의 연속한 샘플 각각을 매 샘플 사이클마다 출력하고, 복수의 샘플링 사이클에 한번 태스크 전환을 요청하는 트리거 신호를 발생하며,
    상기 프로세서 장치는, 상기 트리거 신호에 응하여, 상기 소정의 기간동안 상기 사운드 발생 프로그램의 실행과 상기 오퍼레이팅 시스템의 실행간에 태스크 전환동작을 제어하는 프로세스를 행하게 하는 상기 태스크 제어 프로그램을 또한 실행하며,
    상기 프로세서 장치는 상기 파형 데이터를 형성하는 프로세스 동안 간헐적으로 악음 파라미터를 연산하는 프로세스를 행하게 하는 상기 사운드 발생 프로그램을 실행하며, 상기 연산된 악음 파라미터는 상기 파형 데이터를 형성하는데 사용되는 것인 사운드 발생 장치.
  22. 악음 발생 장치에 있어서,
    연주정보를 입력하는 입력 수단;
    소정의 기간동안 입력된 연주정보에 의거하여, 상기 소정의 기간에 대응하는 파형 데이터를 연산에 의해 형성하는 파형 형성 수단;
    상기 소정의 기간분의 상기 파형 데이터의 1샘플을 매 샘플링 사이클마다 출력하는 출력수단;
    상기 파형 형성 수단에 의해 형성된 소정 기간분의 파형 데이터를 상기 출력수단에 공급하는 파형 데이터 공급수단; 및
    상기 출력수단에 의한 파형 데이터의 출력의 진행을 검출하여, 상기 파형 데이터 공급수단으로부터 상기 파형 데이터 또 다른 공급을 요구하는 요구수단을 포함하며,
    상기 파형 형성 수단은 악음 파라미터 연산을 간헐적으로 수행하며, 상기 파형 데이터 공급수단은 상기 요구수단에 의한 요구에 응하여 실행되고 상기 파형 형성 수단은 상기 공급수단에 이어 실행되는 것인 악음 발생 장치.
  23. 사운드 발생 장치에 있어서,
    사운드 발생 프로그램을 실행하는 프로세서 장치;
    상기 프로세서 장치에 의해 실행될 프로그램을 기억하는 메모리 장치;
    연주정보를 입력하는 입력장치;
    매 소정의 샘플링 사이클마다, 발생된 사운드 파형 데이터를 출력하는 출력장치를 포함하며,
    상기 프로세서 장치는
    소정의 기간동안 입력된 연주정보에 의거하여, 상기 소정의 기간에 대응하는 파형 데이터를 연산에 의해 형성하는 프로세스;
    상기 파형 데이터를 형성하는데 사용되는 악음 파라미터를 상기 파형 데이터를 형성하는 동안 간헐적으로 연산하는 프로세스;
    상기 소정의 기간에 대응하는 외부 파형 데이터를 입력하고, 이 외부 파형 데이터와 상기 형성된 파형 데이터를 결합하여 상기 소정의 기간분의 결합된 파형 디터를 얻는 프로세스;
    상기 소정의 기간분의 상기 결합된 파형 데이터에 소정의 사운드 처리를 가하는 프로세스를 행하게 하는 상기 사운드 발생 프로그램을 실행하며;
    상기 출력장치는 상기 결합되어 처리된 파형 데이터의 1샘플을 상기 발생된 사운드 파형 데이터로서 매 샘플링 사이클마다 출력하는 것인 사운드 발생 장치.
  24. 악음 발생 방법을 수행하게 하는 명령을 포함하는 기계로 판독가능한 기록매체에 있어서, 상기 방법은,
    복수의 지정된 악음을 발생하도록 발생명령들을 내리는 제1 단계;
    상기 지정된 악음을 복수의 악음발생 채널 중에서 지정된 각각의 악음 발생 채널에 할당하고, 상기 지정된 악음용의 제어 데이터를 상기 각각의 지정된 악음 발생 채널의 채널 레지스터에 기입하여 저장하는 제2 단계;
    소정의 간격으로 연산개시 명령을 내리는 제3 단계;
    상기 제3 단계에 의해 내려진 상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여, 지정된 악음 발생 채널 각각에 대한 복수의 샘플분의 파형 데이터를 연산하여 형성하도록, 상기 지정된 악음 발생 채널에 대해 악음 형성 연산을 순차적으로 수행하는 제4 단계;
    상기 샘플 각각에 대해, 상기 제4 단계에 의한 상기 지정된 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계; 및
    상기 복수의 샘플 각각의 샘플분의 상기 혼합된 샘플 데이터를 매 샘플링 사이클마다 아날로그 신호로 변환하는 제6 단계를 포함하며,
    상기 악음 형성 연산에서, 상기 제4 단계는 상기 채널 레지스터로부터의 상기 제어 데이터 하나를 판독한 것에 기초하여 상기 복수의 샘플분의 파형 데이터를 상기 지정된 악음 발생 채널 각각에 대해 형성하고, 상기 파형 데이터 형성 후에 상기 채널 레지스터에 상기 제어 데이터를 기입하는 것인, 기계로 판독가능한 기록매체.
  25. 악음 발생 방법을 수행하게 하는 명령을 포함하는 기계로 판독가능한 기록매체에 있어서, 상기 방법은,
    복수의 지정된 악음을 발생하도록 발생명령들을 내리는 제1 단계;
    상기 지정된 악음을 복수의 악음발생 채널 중에서 지정된 각각의 악음 발생 채널에 할당하고, 상기 지정된 악음용의 제어 데이터를 상기 각각의 지정된 악음 발생 채널의 채널 레지스터에 기입하여 저장하는 제2 단계;
    소정의 간격으로 연산개시 명령을 내리는 제3 단계;
    상기 제3 단계에 의해 내려진 상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여, 지정된 악음 발생 채널 각각에 대한 복수의 샘플분의 파형 데이터를 연산하여 형성하는 제4 단계;
    상기 샘플 각각에 대해, 상기 제4 단계에 의한 상기 지정된 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 복수의 샘플 각각의 샘플분의 혼합된 샘플 데이터를 형성하는 제5 단계; 및
    상기 복수의 샘플분의 상기 혼합된 샘플 데이터를 매 샘플링 사이클마다 아날로그 신호로 변환하는 제6 단계를 포함하며,
    상기 제4 단계는 다른 채널보다 높은 볼륨을 가진 악음을 현재 발생하는 채널 중 적어도 한 채널에 우선순위를 부여하는 소정의 조건에 따라 상기 파형 데이터의 연산에 의한 형성을 수행하는 것인, 기계로 판독가능한 기록매체.
  26. 악음 발생 방법을 수행하게 하는 명령을 포함하는 기계로 판독가능한 기록매체에 있어서, 상기 방법은,
    복수의 지정된 악음을 발생하도록 발생명령들을 내리는 제1 단계;
    상기 지정된 악음을 복수의 악음발생 채널 중에서 지정된 각각의 악음 발생 채널에 할당하고, 상기 지정된 악음용의 제어 데이터를 상기 각각의 지정된 악음 발생 채널의 채널 레지스터에 기입하여 저장하는 제2 단계;
    상기 지정된 악음 발생 채널에서 발생된 악음들의 각각의 중요도에 따라 상기 지정된 악음 발생 채널에 걸쳐 연산처리 순서를 결정하는 제3 단계;
    소정의 간격으로 연산개시 명령을 내리는 제4 단계;
    상기 제4 단계에 의해 내려진 연산개시 명령에 따라, 상기 지정된 악음 발생 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 복수의 샘플분의 파형 데이터를 연산하여 형성하는 제5 단계;
    상기 복수의 샘플 각각에 대해, 상기 채널에 대해 형성된 파형 데이터를 혼합하여 복수의 샘블에 대한 혼합된 샘플 데이터를 형성하는 제6 단계; 및
    상기 복수의 샘플 각각에 대해 상기 혼합된 샘플 데이터를 매 샘플링 사이클마다 아날로그 신호로 변환하는 제7 단계를 포함하며,
    제5 단계는 상기 제3 단계에 의해 결정된 연산처리 순서에 따라 상기 지정된 악음 발생 채널에 대한 파형 데이터를 형성하는 연산을 수행하며, 상기 제5 단계에 의한 파형 데이터를 형성하는 연산이 소정의 시간 내에 완료되지 않아 상기 제7 단계에 의해 변환된 아날로그 신호가 끊겨질 우려가 있을 때, 연산처리 순서에서 채널 중 한 채널에 대해 수행되고 있는 시점에서 파형 데이터를 형성하는 연산을 중단시켜 아날로그 신호가 끓기지 않도록 한 것인, 기계로 판독가능한 기록매체.
  27. 악음 발생 방법을 수행하게 하는 명령을 포함하는 기계로 판독가능한 기록매체에 있어서, 상기 방법은,
    연주정보를 공급하는 공급단계;
    복수의 샘플링 기간 동안, 총괄적이고 연속적으로, 파형 데이터를 연산하여 형성하는 주 단계;
    연주정보가 상기 공급단계에 의해 공급되었을 때 상기 주 수단을 일시적으로 중단시켜 상기 주 수단이 파형 데이터를 형성하는 대신 소정의 입력동작을 수행하여 상기 공급되는 연주정보를 수신하며, 입력동작 완료시, 상기 주 수단이 중단된 지점에서 상기 주 수단을 재개시키는 인터럽트 단계; 및
    상기 주 수단에 의해 형성된 파형 데이터에 의거하여, 상기 인터럽트 단계에 의한 파형 데이터가 연산에 의해 형성되는 시점보다 늦은 타이밍에서 대응하는 악음을 발생하는 악음 발생 단계를 포함하며,
    상기 주 단계는 입력동작에 의한 연주정보에 의거하여 악음 제어 데이터를 생성하는 연주정보 처리 단계와, 상기 악음 제어 수단에 의거하여 파형 데이터를 연산하여 형성하는 음원 처리 단계를 포함하는 것인, 기계로 판독가능한 기록매체.
  28. 악음 발생 방법을 수행하게 하는 명령을 포함하는 기계로 판독가능한 기록매체에 있어서, 상기 방법은,
    연주정보를 입력하는 입력단계;
    소정의 기간 동안 입력된 상기 연주정보에 의거해서, 상기 소정의 기간에 대응하는 파형 데이터를 연산하여 형성하는 파형 형성 단계;
    매 샘플링 사이클마다, 상기 소정의 기간에 대응하는 파형 데이터의 한 샘플을 출력하는 출력 단계;
    상기 파형 형성 단계에 의해 형성된 소정의 기간에 대응하는 파형 데이터를 상기 출력단계에 공급하는 파형 데이터 공급단계;
    상기 출력 단계에 의한 파형 데이터의 출력이 진행되었음을 검출하여, 상기 파형 데이터 공급단계로부터 파형 데이터의 또 다른 공급을 요구하는 요구단계를 포함하며,
    상기 파형 데이터 공급단계는 상기 요구단계에 의한 요구에 응하여 실행되고 상기 파형 형성 단계는 상기 공급단계 후에 실행되는 것인, 기계로 판독가능한 기록매체.
  29. 악음 발생 방법을 수행하게 하는 명령을 포함하는 기계로 판독가능한 기록매체에 있어서, 상기 방법은,
    연주정보를 입력하는 입력단계;
    소정의 기간 동안 입력된 상기 연주정보에 의거해서, 상기 소정의 기간에 대응하는 파형 데이터를 연산하여 형성하며, 상기 파형 데이터의 복수의 연속한 샘플을 형성하는 파형 형성 단계;
    상기 소정의 기간에 대응하는 외부 파형 데이터를 입력하고, 상기 외부 데이터와 상기 파형 형성 단계에 의해 연산에 의해 형성된 파형 데이터를 결합하며, 상기 소정의 기간분의 합성된 파형 데이터를 형성하는 파형 합성 단계;
    상기 소정의 기간분의 상기 합성된 파형 데이터에 신호처리를 가하고, 상기 합성 파형 데이터의 상기 복수의 샘플에 상기 신호 처리를 가하는 파형 처리 단계; 및
    매 샘플링 사이클마다, 상기 합성된 파형 데이터의 한 샘플을 출력하는 출력단계를 포함하는 것인, 기계로 판독가능한 기록매체.
  30. 악음 발생 방법을 수행하게 하는 명령을 포함하는 기계로 판독가능한 기록매체에 있어서, 상기 방법은,
    연주정보를 입력하는 입력단계;
    소정의 기간 동안 입력된 상기 연주정보에 의거해서, 상기 소정의 기간에 대응하는 파형 데이터를 연산하여 형성하는 파형 형성 단계;
    상기 소정의 기간분의 상기 파형 데이터의 1샘플을 매 샘플링 사이클마다 출력하는 출력단계;
    상기 파형 형성 단계에 의해 형성된 소정 기간분의 파형 데이터를 상기 출력단계에 공급하는 파형 데이터 공급단계; 및
    상기 출력수단에 의한 파형 데이터의 출력의 진행을 검출하여, 상기 파형 데이터 공급단계로부터 상기 파형 데이터 또 다른 공급을 요구하는 요구단계를 포함하며,
    상기 파형 형성 단계는 악음 파라미터 연산을 간헐적으로 수행하며, 상기 파형 데이터 공급단계는 상기 요구단계에 의한 요구에 응하여 실행되고 상기 파형 형성 단계는 상기 공급단계에 이어 실행되는 것인, 기계로 판독가능한 기록매체.
  31. 악음 발생 방법을 수행하게 하는 명령을 포함하는 기계로 판독가능한 기록매체에 있어서, 상기 방법은,
    연주정보를 입력하는 입력단계;
    소정의 기간 동안 입력된 상기 연주정보에 의거해서, 상기 소정의 기간에 대응하는 파형 데이터를 연산하여 형성하며, 상기 파형 데이터의 복수의 연속한 샘플을 형성하는 파형 형성 단계;
    상기 소정의 기간에 대응하는 외부 파형 데이터를 입력하고, 상기 외부 데이터와 상기 파형 형성 단계에 의해 연산에 의해 형성된 파형 데이터를 결합하며, 상기 소정의 기간분의 합성된 파형 데이터를 형성하는 파형 합성 단계;
    상기 소정의 기간분의 상기 합성된 파형 데이터에 신호처리를 가하고, 상기 합성 파형 데이터의 상기 복수의 샘플에 상기 신호 처리를 가하는 파형 처리 단계; 및
    매 샘플링 사이클마다, 상기 합성된 파형 데이터의 한 샘플을 출력하는 출력단계를 포함하며,
    상기 파형 형성 단계는 악음 파라미터 연산을 간헐적으로 수행하는 것인, 기계로 판독가능한 기록매체.
  32. 사운드 발생 방법에 있어서,
    지정된 사운드를 발생하도록 발생명령들을 입력하는 제1 단계;
    상기 지정된 사운드를 복수의 사운드 발생 채널 중 한 채널에 할당하고, 상기 지정된 사운드용의 제어 데이터를 상기 할당된 채널에 대응하는 레지스터에 기입하는 제2 단계;
    소정의 간격으로 연산개시 명령을 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 형성될 상기 복수의 샘플에 필요한 샘플링 사이클의 총 수에 대응하는 시간보다 짧은 시간 내에, 상기 레지스터에 기억된 제어 데이터에 근거하여, 채널 각각에 대한 복수의 샘플분의 파형 데이터를 연산하여 총괄적으로 형성하도록, 상기 채널에 대해 연산을 수행하는 제4 단계;
    소정의 각각의 샘플점에 대해, 개개의 채널에 대해 형성된 파형 데이터의 샘플들을 혼합하여 상기 샘플점분의 혼합된 샘플을 형성하는 제5 단계; 및
    연속한 샘플점의 상기 혼합된 샘플 데이터를 매 샘플링 사이클마다 연속적으로 출력하는 제6 단계를 포함하는 사운드 발생 방법.
  33. 악음 발생 방법을 수행하게 하는 명령을 포함하는 기계로 판독가능한 기록매체에 있어서, 상기 방법은,
    지정된 사운드를 발생하도록 발생명령들을 입력하는 제1 단계;
    상기 지정된 사운드를 복수의 사운드 발생 채널 중 한 채널에 할당하고, 상기 지정된 사운드용의 제어 데이터를 상기 할당된 채널에 대응하는 레지스터에 기입하는 제2 단계;
    소정의 간격으로 연산개시 명령을 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 형성될 상기 복수의 샘플에 필요한 샘플링 사이클의 총 수에 대응하는 시간보다 짧은 시간 내에, 상기 레지스터에 기억된 제어 데이터에 근거하여, 채널 각각에 대한 복수의 샘플분의 파형 데이터를 연산하여 총괄적으로 형성하도록, 상기 채널에 대해 연산을 수행하는 제4 단계;
    소정의 각각의 샘플점에 대해, 개개의 채널에 대해 형성된 파형 데이터의 샘플들을 혼합하여 상기 샘플점분의 혼합된 샘플을 형성하는 제5 단계; 및
    연속한 샘플점의 상기 혼합된 샘플 데이터를 매 샘플링 사이클마다 연속적으로 출력하는 제6 단계를 포함하는 것인, 기계로 판독가능한 기록매체.
  34. 악음 발생 방법에 있어서,
    복수의 지정된 악음을 발생하도록 발생명령들을 내리는 제1 단계;
    상기 지정된 악음을 복수의 악음발생 채널 중에서 지정된 각각의 악음 발생 채널에 할당하고, 상기 지정된 악음용의 제어 데이터를 상기 각각의 지정된 악음 발생 채널의 채널 레지스터에 기입하여 저장하는 제2 단계;
    소정의 간격으로 연산개시 명령을 내리는 제3 단계;
    상기 제3 단계에 의해 내려진 상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여, 지정된 악음 발생 채널 각각에 대한 복수의 샘플분의 파형 데이터를 연산하여 형성하도록, 상기 지정된 악음 발생 채널에 대해 악음 형성 연산을 순차적으로 수행하는 제4 단계;
    상기 샘플 각각에 대해, 상기 제4 단계에 의한 상기 지정된 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계;
    복수의 샘플분의 상기 혼합된 샘플 데이터를 버퍼 메모리에 기억시키는 제6 단계; 및
    상기 복수의 샘플 각각의 샘플분의 상기 혼합된 샘플 데이터를 매 샘플링 사이클마다 아날로그 신호로 변환하는 제7 단계를 포함하며,
    상기 악음 형성 연산에서, 상기 제4 단계는 상기 채널 레지스터로부터의 상기 제어 데이터 하나를 판독한 것에 기초하여 상기 복수의 샘플분의 파형 데이터를 상기 지정된 악음 발생 채널 각각에 대해 형성하고, 상기 파형 데이터 형성 후에 상기 채널 레지스터에 상기 제어 데이터를 기입하는 악음 발생 방법.
  35. 사운드 발생 장치에 있어서,
    제1 및 제2 프로그램을 실행하는 프로세서 장치;
    상기 프로세서 장치에 의해 실행될 프로그램을 기억하는 메모리 장치;
    지정된 사운드를 발생하도록 발생명령을 입력하는 입력장치;
    사운드 발생 채널에서 발생되도록 사운드를 제어하는 제어 데이터를 기억하는 레지스터 장치로서, 상기 제어 데이터는 복수의 상기 사운드 발생 채널 각각에 대해 상기 레지스터 장치에 개별적으로 기억되는 것인 상기 레지스터 장치; 및
    매 소정의 샘플링 사이클마다, 발생된 사운드 파형 데이터를 출력하는 출력장치를 포함하며,
    상기 프로세서 장치는, 상기 입력장치를 통해 상기 발생명령의 입력에 응하여, 상기 지정된 사운드를 상기 사운드 발생 채널 중 하나에 할당하고 상기 지정된 사운드에 대응하는 상기 제어 데이터를 상기 할당된 채널에 대응하여 상기 레지스터 장치에 기억시키게 하는 프로세스를 행하는 상기 제1 프로그램을 실행하며, 상기 프로세서 장치는, 또한,
    소정의 간격으로 연산개시 명령을 내리는 프로세스;
    상기 연산개시 명령 각각에 따라, 형성될 복수의 샘플에 필요한 총 샘플링 사이클 수에 대응하는 시간보다 짧은 시간 내에 상기 레지스터 장치에 기억된 제어 데이터에 의거하여 각각의 채널에 대한 상기 복수의 샘플분의 파형 데이터를 연산하여 형성하도록 상기 채널에 대해 사운드 형성 연산을 수행하는 프로세스;
    각각의 소정의 샘플점에 대해서, 개개의 채널에 대해 형성된 파형 데이터의 샘플들을 혼합하여 상기 각각의 샘플점에 대해 혼합된 샘플 데이터를 형성하는 프로세스; 및
    연속한 샘플점의 상기 혼합된 샘플 데이터를 버퍼 기억장치에 기억시키는 프로세스를 행하게 하는 상기 제2 프로그램을 실행하며,
    상기 출력장치는 상기 연속한 샘플점의 상기 혼합된 샘플 데이터를 상기 버퍼 기억장치로부터 상기 발생된 사운드 파형 데이터로서 매 샘플링 사이클마다 출력하는 것인 사운드 발생 장치.
  36. 제35항에 있어서, 상기 프로세서 장치에 의해 실행되는 상기 사운드 프로그램은, 상기 입력장치를 통해 입력된 발생명령에 따라 도중의 연산개시 명령을 내리는 프로세스를 또한 행하게 하며, 상기 수행단계는, 상기 도중의 연산개시 명령에 따라, 마지막으로 형성된 파형의 말미시점부터 상기 발생명령이 상기 입력장치를 통해 입력되는 시점까지의 구간에 대응하는 복수의 파형 샘플들을 형성하는 것인 사운드 발생 장치.
  37. 악음 발생 방법에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널용의 복수의 샘플분의 파형 데이터를 형성하는 제4 단계, 상기 악음발생 채널 각각에 대한 파형 데이터의 엔벨로프값은 하나 이상의 샘플마다 다르며;
    상기 복수의 샘플 각각에 대해, 상기 제4 단계에 의한 각각의 악음 발생 채널용으로 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계를 포함하는 악음 발생 방법.
  38. 제37항에 있어서, 상기 복수의 샘플 각각용의 상기 혼합된 샘플 데이터를 샘플링 사이클마다 아날로그 신호로 변환하는 제6 단계를 더 포함하는 악음 발생 방법.
  39. 제37항에 있어서, 상기 제4 단계는 상기 악음 형성 연산을 수행하기 전에 상기 채널 레지스터로부터 읽어 낸 제어 데이터에 기초하여 복수의 샘플분의 상기 파형 데이터를 연산하여 형성하도록 각각의 악음 발생 채널에 대해 악음 형성 연산을 연속하여 수행하는 악음 발생 방법.
  40. 제39항에 있어서, 상기 제4 단계에서, 상기 파형 데이터 형성 후에 상기 제어 데이터는 상기 채널 레지스터에 기록되는 것인 악음 발생 방법.
  41. 제37항에 있어서, 상기 제4 단계는 상기 악음 발생 채널 중 한 채널용의 복수의 샘플분의 파형 데이터를 총괄적으로 형성하는 연산을 수행하고 이어서 악음 발생 채널 중 또 다른 채널용의 복수의 샘플분의 파형 데이터를 총괄적으로 형성하는 연산을 수행하여, 개개의 악음 발생 채널에 대해 연속하여 악음 형성 연산을 연속 수행하며, 상기 제5 단계는 복수의 샘플을 버퍼링할 수 있는 버퍼 내에 혼합된 샘플 데이터가 형성되게 상기 버퍼의 선택된 위치에, 상기 제4 단계에 의해 연속하여 형성된, 상기 개개의 악음 발생 채널의 복수의 샘플 중 모든 대응하는 것을 누적시키는 것인 악음 발생 방법.
  42. 제37항에 있어서, 상기 제3 단계는 소정의 간격으로 상기 연산개시 명령을 내리는 단계를 더 포함하는 악음 발생 방법.
  43. 악음 발생 방법에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널용의 복수의 샘플분의 파형 데이터를 형성하는 제4 단계;
    상기 복수의 샘플 각각에 대해, 상기 제4 단계에 의한 각각의 악음 발생 채널용으로 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계; 및
    상기 각각의 복수의 샘플분의 새로운 혼합된 데이터의 형성이 상기 제5 단계에 의해 완료되고 상기 제5 단계에 의해 사전에 형성된 상기 혼합된 샘플 데이터의 재생의 완료 후에, 상기 새로운 혼합된 샘플 데이터가 재생되게 제어를 실행하는 제6 단계를 포함하는 악음 발생 방법.
  44. 제43항에 있어서, 상기 복수의 샘플 각각용의 상기 혼합된 샘플 데이터를 샘플링 사이클마다 아날로그 신호로 변환하는 제7 단계를 더 포함하는 악음 발생 방법.
  45. 제43항에 있어서, 상기 제4 단계는 상기 악음 형성 연산을 수행하기 전에 상기 채널 레지스터로부터 읽어 낸 제어 데이터에 기초하여 복수의 샘플분의 상기 파형 데이터를 연산하여 형성하도록 각각의 악음 발생 채널에 대해 악음 형성 연산을연속하여 수행하는 악음 발생 방법.
  46. 제43항에 있어서, 상기 제4 단계에서, 상기 파형 데이터 형성 후에 상기 제어 데이터는 상기 채널 레지스터에 기록되는 것인 악음 발생방법.
  47. 제43항에 있어서, 상기 제4 단계는 상기 악음 발생 채널 중 한 채널용의 복수의 샘플분의 파형 데이터를 총괄적으로 형성하는 연산을 수행하고 이어서 악음 발생 채널 중 또 다른 채널용의 복수의 샘플분의 파형 데이터를 총괄적으로 형성하는 연산을 수행하여, 개개의 악음 발생 채널에 대해 연속하여 악음 형성 연산을 연속 수행하며, 상기 제5 단계는 복수의 샘플을 버퍼링할 수 있는 버퍼 내에 혼합된 샘플 데이터가 형성되게 상기 버퍼의 선택된 위치에, 상기 제4 단계에 의해 연속하여 형성된, 상기 개개의 악음 발생 채널의 복수의 샘플 중 모든 대응하는 것을 누적시키는 것인 악음 발생 방법.
  48. 제43항에 있어서, 상기 제3 단계는 소정의 간격으로 상기 연산개시 명령을 내리는 단계를 더 포함하는 악음 발생 방법.
  49. 악음 발생 방법에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널용의 복수의 샘플분의 파형 데이터를 형성하는 제4 단계;
    상기 복수의 샘플 각각에 대해, 상기 제4 단계에 의한 각각의 악음 발생 채널용으로 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계; 및
    상기 복수의 샘플 각각의 용으로 혼합된 샘플 데이터를 버퍼링하고 이에 소정의 효과를 부여하는 제6 단계를 포함하는 악음 발생 방법.
  50. 제49항에 있어서, 상기 복수의 샘플 각각용의 상기 혼합된 샘플 데이터를 샘플링 사이클마다 아날로그 신호로 변환하는 제7 단계를 더 포함하는 악음 발생 방법.
  51. 제49항에 있어서, 상기 제4 단계는 상기 악음 형성 연산을 수행하기 전에 상기 채널 레지스터로부터 읽어 낸 제어 데이터에 기초하여 복수의 샘플분의 상기 파형 데이터를 연산하여 형성하도록 각각의 악음 발생 채널에 대해 악음 형성 연산을연속하여 수행하는 악음 발생 방법.
  52. 제49항에 있어서, 상기 제4 단계에서, 상기 파형 데이터 형성 후에 상기 제어 데이터는 상기 채널 레지스터에 기록되는 것인 악음 발생방법.
  53. 제49항에 있어서, 상기 제4 단계는 상기 악음 발생 채널 중 한 채널용의 복수의 샘플분의 파형 데이터를 총괄적으로 형성하는 연산을 수행하고 이어서 악음 발생 채널 중 또 다른 채널용의 복수의 샘플분의 파형 데이터를 총괄적으로 형성하는 연산을 수행하여, 개개의 악음 발생 채널에 대해 연속하여 악음 형성 연산을 연속 수행하며, 상기 제5 단계는 복수의 샘플을 버퍼링할 수 있는 버퍼 내에 혼합된 샘플 데이터가 형성되게 상기 버퍼의 선택된 위치에, 상기 제4 단계에 의해 연속하여 형성된, 상기 개개의 악음 발생 채널의 복수의 샘플 중 모든 대응하는 것을 누적시키는 것인 악음 발생 방법.
  54. 악음 발생 방법에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하는 제4 단계; 및
    적어도 제1 악음 신호 및 제2 악음 신호를 얻음에 있어, 상기 제4 단계에 의한 악음 발생 채널에 대해 형성된 상기 파형 데이터를, 상기 각각의 제1 및 제2 악음 신호에 대해 독립적으로 제어가능한 레벨로 혼합함으로써 각각 형성하여 상기 제1 및 제2 악음 신호를 얻는 제5 단계를 포함하는 악음 발생 방법.
  55. 제54항에 있어서, 상기 제1 및 제2 악음신호 중 적어도 하나에, 다른 파형 데이터 샘플을 합하는 제6 단계를 더 포함하는 악음 발생 방법.
  56. 제54항에 있어서, 상기 복수의 샘플 각각에 대해 상기 혼합된 샘플 데이터를 샘플링 사이클마다 아날로그 신호로 변환하는 제6 단계를 더 포함하는 악음 발생 방법.
  57. 제54항에 있어서, 상기 제4 단계는 상기 악음 형성 연산을 수행하기 전에 상기 채널 레지스터로부터 읽어 낸 제어 데이터에 기초하여 복수의 샘플분의 상기 파형 데이터를 연산하여 형성하도록 각각의 악음 발생 채널에 대해 악음 형성 연산을 연속하여 수행하는 악음 발생 방법.
  58. 제54항에 있어서, 상기 제4 단계에서, 상기 파형 데이터 형성 후에 상기 제어 데이터는 상기 채널 레지스터에 기록되는 것인 악음 발생방법.
  59. 제54항에 있어서, 상기 제4 단계는 상기 악음 발생 채널 중 한 채널에 대한 복수의 샘플분의 파형 데이터를 총괄적으로 형성하는 연산을 수행하고 이어서 악음 발생 채널 중 또 다른 채널에 대한 복수의 샘플분의 파형 데이터를 총괄적으로 형성하는 연산을 수행하여, 개개의 악음 발생 채널에 대해 연속하여 악음 형성 연산을 연속 수행하며, 상기 제5 단계는 복수의 샘플을 버퍼링할 수 있는 버퍼 내에 혼합된 샘플 데이터가 형성되게 상기 버퍼의 선택된 위치에, 상기 제4 단계에 의해 연속하여 형성된, 상기 개개의 악음 발생 채널의 복수의 샘플 중 모든 대응하는 것을 누적시키는 것인 악음 발생 방법.
  60. 악음 발생 방법에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널용의 복수의 샘플분의 파형 데이터를 형성하는 제4 단계;
    상기 복수의 샘플 각각에 대해, 상기 제4 단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계; 및
    상기 제5 단계에 의해 형성된 상기 혼합된 샘플 데이터에, 다른 파형 데이터 샘플을 합하는 제6 단계를 포함하는 악음 발생 방법.
  61. 악음 발생 장치에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하며;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하며;
    연산개시 명령을 순차적으로 내리며;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널용의 복수의 샘플분의 파형 데이터를 형성하며, 상기 악음발생 채널 각각에 대한 파형 데이터의 엔벨로프값은 하나 이상의 샘플마다 다르며;
    상기 복수의 샘플 각각에 대해, 상기 파형 데이터를 혼합하여 혼합된 샘플데이터를 형성하도록 프로그램되는 프로세서를 포함하는 악음 발생 장치.
  62. 악음 발생 장치에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 데이터 버스를 통해 수신하며;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하며;
    연산개시 명령을 순차적으로 내리며;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하며;
    상기 복수의 샘플 각각에 대해, 상기 형성 단계에 의한 각각의 악음 발생 채널용으로 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하며;
    상기 각각의 복수의 샘플분의 새로운 혼합된 데이터의 형성이 완료되고 상기 사전에 형성된 상기 혼합된 샘플 데이터의 재생의 완료 후에, 상기 새로운 혼합된 샘플 데이터가 재생되게 제어를 실행하도록 프로그램되는 프로세서를 포함하는 악음 발생 장치.
  63. 메모리 및 이 메모리에 저장된 프로그램을 실행하는 프로세서를 포함하는 악음 발생 장치에서, 상기 프로그램은 상기 프로세서에 대해,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하며;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하며;
    연산개시 명령을 순차적으로 내리며;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하며;
    상기 복수의 샘플 각각에 대해, 상기 형성단계에 의한 각각의 악음 발생 채널용으로 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하며;
    상기 복수의 샘플 각각의 용으로 혼합된 샘플 데이터를 버퍼링하고 이에 소정의 효과를 부여하는 소정의 프로세스를 행하게 하는 것인 악음 발생 장치.
  64. 악음 발생 장치에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 데이터 버스를 통해 수신하며;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하며;
    연산개시 명령을 순차적으로 내리며;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하며; 및
    적어도 제1 악음 신호 및 제2 악음 신호를 얻음에 있어, 상기 각각의 제1 및 제2 악음 신호에 대해 독립적으로 제어가능한 레벨로 상기 파형 데이터를 혼합함으로써 각각의 제1 및 제2 악음신호를 형성하도록 프로그램되는 프로세서를 포함하는 악음 발생 장치.
  65. 악음 발생 장치에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하며;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하며;
    연산개시 명령을 순차적으로 내리며;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하며;
    상기 복수의 샘플 각각에 대해, 상기 형성단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하며;
    상기 혼합된 샘플 데이터에, 다른 파형 데이터 샘플을 합하도록 프로그램되는 프로세서를 포함하는 악음 발생 장치.
  66. 악음을 발생하기 위해 프로세서가 실행할 수 있는 프로그램의 명령을 포함하는 것으로 기계로 판독가능한 매체에 있어서, 상기 프로그램은,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널용의 복수의 샘플분의 파형 데이터를 형성하는 제4 단계, 상기 악음발생 채널 각각에 대한 파형 데이터의 엔벨로프값은 하나 이상의 샘플마다 다르며;
    상기 복수의 샘플 각각에 대해, 상기 제4 단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계를 포함하는 것인, 기계로 판독가능한 매체.
  67. 악음을 발생하기 위해 프로세서가 실행할 수 있는 프로그램의 명령을 포함하는 것으로 기계로 판독가능한 매체에 있어서, 상기 프로그램은,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 데이터 버스를 통해 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하는 제4 단계;
    상기 복수의 샘플 각각에 대해, 상기 제4 단계에 의한 각각의 악음 발생 채널용으로 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계; 및
    상기 각각의 복수의 샘플분의 새로운 혼합된 데이터의 형성이 완료되고 상기 사전에 형성된 상기 혼합된 샘플 데이터의 재생의 완료 후에, 상기 새로운 혼합된 샘플 데이터가 재생되게 제어를 실행하는 제6 단계를 포함하는 것인, 기계로 판독가능한 매체.
  68. 악음을 발생하기 위해 프로세서가 실행할 수 있는 프로그램의 명령을 포함하는 기계로 판독가능한 매체에 있어서, 상기 프로그램은,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하는 제4 단계;
    상기 복수의 샘플 각각에 대해, 상기 제4 단계에 의한 각각의 악음 발생 채널용으로 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계; 및
    상기 복수의 샘플 각각의 용으로 혼합된 샘플 데이터를 버퍼링하고 이에 소정의 효과를 부여하는 제6 단계를 포함하는 것인, 기계로 판독가능한 매체.
  69. 악음을 발생하기 위해 프로세서가 실행할 수 있는 프로그램의 명령을 포함하는 기계로 판독가능한 매체에 있어서, 상기 프로그램은,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 데이터 버스를 통해 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하는 제4 단계; 및
    적어도 제1 악음 신호 및 제2 악음 신호를 얻음에 있어, 상기 각각의 제1 및 제2 악음 신호에 대해 독립적으로 제어가능한 레벨로 상기 파형 데이터를 혼합함으로써 각각의 제1 및 제2 악음신호를 형성하는 제5 단계를 포함하는 것인, 기계로 판독가능한 매체.
  70. 악음을 발생하기 위해 프로세서가 실행할 수 있는 프로그램의 명령을 포함하는 기계로 판독가능한 매체에 있어서, 상기 프로그램은,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하는 제4 단계;
    상기 복수의 샘플 각각에 대해, 상기 형성단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계;
    상기 혼합된 샘플 데이터에, 다른 파형 데이터 샘플을 합하는 제6 단계를 포함하는 것인, 기계로 판독가능한 매체.
  71. 악음 발생 방법에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    가변 시점들에서 연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하는 제4 단계를 포함하며, 상기 복수의 샘플분의 상기 파형 데이터는 상기 가변 시점의 대응하는 시점들에서 상기 연산개시 명령에 응하여 복수의 연산기간의 각각의 기간 동안 총괄적으로 형성되는 것인 악음 발생 방법.
  72. 제71항에 있어서, 상기 제4 단계에서, 각각의 상기 연산기간 동안 형성된 상기 파형 데이터는 이전의 연산개시 명령과 현재의 연산개시 명령 사이에 발생한 복수의 샘플을 제공하는 것인 악음 발생 방법.
  73. 악음 발생 장치에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 데이터 버스를 통해 수신하며;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하며;
    가변 시점들에서 연산개시 명령을 순차적으로 내리며;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하는 것으로, 상기 복수의 샘플분의 상기 파형 데이터는 상기 가변 시점의 대응하는 시점들에서 상기 연산개시 명령에 응하여 복수의 연산기간의 각각의 기간 동안 총괄적으로 형성되도록 프로그램되는 프로세서를 포함하는 악음 발생 장치.
  74. 악음을 발생하기 위해 프로세서가 실행할 수 있는 프로그램의 명령을 포함하는 기계로 판독가능한 매체에 있어서, 상기 프로그램은,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    가변 시점들에서 연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하는 단계로서, 상기 복수의 샘플분의 상기 파형 데이터는 상기 가변 시점의 대응하는 시점들에서 상기 연산개시 명령에 응하여 복수의 연산기간의 각각의 기간 동안 총괄적으로 형성되는 제4 단계를 포함하는 것인, 기계로 판독가능한 매체.
  75. 소정의 어플리케이션 소프트웨어 프로그램과 프로세서에 의한 악음 발생 소프트웨어 프로그램을 처리함에 의한 악음 발생 방법에 있어서,
    상기 어플리케이션 소프트웨어 프로그램을 처리함으로써 하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 상기 악음 발생 소프트웨어에 내리는 제1 프로세스; 및
    상기 제1 프로세스에 의해 내려진 상기 발생명령에 따라 상기 악음 발생 소프트웨어 프로그램을 실행함으로써 상기 지정된 악음의 파형 데이터를 발생하는제2 프로세스를 포함하며, 상기 제2 프로세스는,
    상기 제1 프로세스에 의해 내려진 상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제1 단계;
    연산개시 명령을 순차적으로 내리는 제2 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널용의 복수의 샘플분의 파형 데이터를 형성하는 제3 단계; 및
    상기 복수의 샘플 각각에 대해, 상기 제3 단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제4 단계를 포함하는 악음 발생 방법.
  76. 악음 발생 장치에 있어서,
    저장된 프로그램을 실행하는 프로세서를 포함하며, 상기 프로그램은 소정의 어플리케이션 프로그램 및 악음 발생 프로그램을 포함하며,
    상기 어플리케이션 프로그램은 상기 프로세서에 대해서, 하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 상기 악음 발생 프로그램에 내리는 단계를 실행하게 하는 명령을 포함하며,
    상기 악음 발생 프로그램은 상기 프로세서에 대해서,
    상기 어플리케이션 프로그램으로부터의 명령에 따라, 하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 내리고, 상기 어플리케이션 프로그램에 의해 내려진 상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하며;
    연산개시 명령을 순차적으로 내리며;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널용의 복수의 샘플분의 파형 데이터를 형성하며;
    상기 복수의 샘플 각각에 대해, 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하게 하는 명령을 포함하는 것인 악음 발생 장치.
  77. 악음을 발생하기 위해 프로세서가 실행할 수 있는 소정의 어플리케이션 프로그램 및 악음 발생 프로그램을 포함하는, 기계로 판독가능한 매체에 있어서,
    상기 어플리케이션 프로그램은 하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 상기 악음 발생 프로그램에 내리는 단계를 포함하며,
    상기 악음 발생 프로그램은,
    상기 어플리케이션 상기 어플리케이션 프로그램에 의해 내려진 상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제1 단계;
    연산개시 명령을 순차적으로 내리는 제2 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널용의 복수의 샘플분의 파형 데이터를 형성하는 제3 단계; 및
    상기 복수의 샘플 각각에 대해, 상기 제3 단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제4 단계를 포함하는 것인, 기계로 판독가능한 매체.
  78. 제75항에 있어서, 상기 어플리케이션 소프트웨어 프로그램 및 상기 악음 발생 소프트웨어 프로그램은 병렬로 상기 프로세서에 의해 실행되는 악음 발생 방법.
  79. 제76항에 있어서, 상기 어플리케이션 소프트웨어 프로그램 및 상기 악음 발생 소프트웨어 프로그램은 병렬로 상기 프로세서에 의해 실행되는 악음 발생 장치.
  80. 악음 발생 방법에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널용의 복수의 샘플분의 파형 데이터를 형성하는 제4 단계; 및
    상기 복수의 샘플 각각에 대해, 상기 제4 단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계를 포함하며,
    상기 제4 단계는 파형 데이터가 특정 시간간격 내에 형성될 수 있는 악음 발생 채널 중 어느 것을 결정하며, 상기 파형 데이터의 형성은 상기 결정된 각각의 악음 발생 채널에 대해서만 수행되는 것인 악음 발생 방법.
  81. 제80항에 있어서, 상기 제4 단계는, 상기 각각의 악음 발생 채널에서 현재 발생되는 악음의 볼륨에 기초하여, 파형 데이터의 형성이 수행될 악음 발생 채널과 파형 데이터의 형성이 수행되지 않을 악음 발생 채널 간을 구별하는 악음 발생 방법.
  82. 메모리 및 이 메모리에 저장된 프로그램을 실행하는 프로세서를 포함하는 악음 발생 장치에서, 상기 프로그램은 상기 프로세서에 대해,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 단계;
    연산개시 명령을 순차적으로 내리는 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하는 단계; 및
    상기 복수의 샘플 각각에 대해, 상기 형성단계에 의한 각각의 악음 발생 채널용으로 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 단계를 포함하며,
    상기 파형 데이터 형성 단계는 파형 데이터가 특정 시간간격 내에 형성될 수 있는 악음 발생 채널 중 어느 것을 결정하며, 상기 파형 데이터의 형성은 상기 결정된 각각의 악음 발생 채널에 대해서만 수행되는 것인 악음 발생 장치.
  83. 악음을 발생하기 위해 프로세서가 실행할 수 있는 프로그램의 명령을 포함하는 기계로 판독가능한 매체에 있어서, 상기 프로그램은,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하는 제4 단계; 및
    상기 복수의 샘플 각각에 대해, 상기 제4 단계에 의한 각각의 악음 발생 채널용으로 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계를 포함하며,
    상기 제4 단계는 파형 데이터가 특정 시간간격 내에 형성될 수 있는 악음 발생 채널 중 어느 것을 결정하며, 상기 파형 데이터의 형성은 상기 결정된 각각의 악음 발생 채널에 대해서만 수행되는 것인, 기계로 판독가능한 매체.
  84. 악음 발생 방법에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널용의 복수의 샘플분의 파형 데이터를 형성하는 제4 단계;
    상기 복수의 샘플 각각에 대해, 상기 제4 단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계; 및
    모든 지정된 악음 발생 채널에 대한 연산이 소정의 시간기간 내에 완료되지 않을 것으로 판정될 때, 상기 악음 발생 채널 중 적어도 한 채널에 대한 파형 데이터의 형성을 수정하는 명령을 내리는 제6 단계를 포함하는 악음 발생 방법.
  85. 제84항에 있어서, 상기 제6 단계는 모든 지정된 악음 발생 채널이 소정의 조건 하에서 완료될 것인지 여부를 판정하는 단계를 포함하는 악음 발생 방법.
  86. 제84항에 있어서, 상기 제6 단계는 상기 악음 발생 채널 중 상기 적어도 하나에 대한 댐프 파형 데이터를 제공하는 단계를 더 포함하는 악음 발생 방법.
  87. 제84항에 있어서, 상기 제6 단계는 상기 악음 발생 채널 중 상기 적어도 한 채널에 대한 상기 파형 데이터의 연산을 중지하는 단계를 더 포함하는 악음 발생 방법.
  88. 메모리 및 이 메모리에 저장된 프로그램을 실행하는 프로세서를 포함하는 악음 발생 장치에서, 상기 프로그램은 상기 프로세서에 대해,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 단계;
    연산개시 명령을 순차적으로 내리는 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널용의 복수의 샘플분의 파형 데이터를 형성하는 단계;
    상기 복수의 샘플 각각에 대해, 상기 제4 단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 단계; 및
    모든 지정된 악음 발생 채널에 대한 연산이 소정의 시간기간 내에 완료되지 않을 것으로 판정될 때, 상기 악음 발생 채널 중 적어도 한 채널에 대한 파형 데이터의 형성을 수정하는 명령을 내리는 단계를 수행하게 하는 것인 악음 발생 장치.
  89. 악음을 발생하기 위해 프로세서가 실행할 수 있는 프로그램을 포함하는 기계로 판독가능한 매체에 있어서, 상기 프로그램은,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널용의 복수의 샘플분의 파형 데이터를 형성하는 제4 단계;
    상기 복수의 샘플 각각에 대해, 상기 제4 단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계; 및
    모든 지정된 악음 발생 채널에 대한 연산이 소정의 시간기간 내에 완료되지 않을 것으로 판정될 때, 상기 악음 발생 채널 중 적어도 한 채널에 대한 파형 데이터의 형성을 수정하는 명령을 내리는 제6 단계를 포함하는, 기계로 판독가능한 매체.
  90. 악음 발생 방법에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    상기 각각의 악음 발생 채널에서 발생될 악음의 중요도를 판정하는 제3 단계;
    연산개시 명령을 순차적으로 내리는 제4 단계;
    상기 제4 단계에 의해 내려진 상기 각각의 연산개시 명령에 응하여, 상기 제3 단계에 의해 판정된 악음의 중요도에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여, 상기 복수의 악음 발생 채널 중 임의의 수의 채널에 대해 복수의 샘플분의 파형 데이터를 형성하는 제5 단계; 및
    상기 복수의 샘플 각각에 대해, 상기 제5 단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제6 단계를 포함하는 악음 발생 방법.
  91. 제90항에 있어서, 상기 제5 단계는 상기 악음 발생 채널에 걸쳐 소정의 연산 처리 순서에 따라 연산을 수행하며, 상기 연산 처리 순서는 상기 제3 단계의해 판정된 악음의 상기 중요도에 따라 정해지는 것인 악음 발생 방법.
  92. 메모리 및 이 메모리에 저장된 프로그램을 실행하는 프로세서를 포함하는 악음 발생 장치에서, 상기 프로그램은 상기 프로세서에 대해,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 단계;
    상기 각각의 악음 발생 채널에서 발생될 악음의 중요도를 판정하는 단계;
    연산개시 명령을 순차적으로 내리는 제4 단계;
    상기 명령을 내리는 단계에 의해 내려진 상기 각각의 연산개시 명령에 응하여, 상기 판정 단계에 의해 판정된 악음의 중요도에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여, 상기 복수의 악음 발생 채널 중 임의의 수의 채널에 대해 복수의 샘플분의 파형 데이터를 형성하는 단계; 및
    상기 복수의 샘플 각각에 대해, 상기 형성단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 단계를 수행하게 하는 것인 악음 발생 장치.
  93. 악음을 발생하기 위해 프로세서가 실행할 수 있는 프로그램을 포함하는 기계로 판독가능한 매체에 있어서, 상기 프로그램은,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    상기 각각의 악음 발생 채널에서 발생될 악음의 중요도를 판정하는 제3 단계;
    연산개시 명령을 순차적으로 내리는 제4 단계;
    상기 제4 단계에 의해 내려진 상기 각각의 연산개시 명령에 응하여, 상기 제3 단계에 의해 판정된 악음의 중요도에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여, 상기 복수의 악음 발생 채널 중 임의의 수의 채널에 대해 복수의 샘플분의 파형 데이터를 형성하는 제5 단계; 및
    상기 복수의 샘플 각각에 대해, 상기 제5 단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제6 단계를 포함하는 것인, 기계로 판독가능한 매체.
  94. 악음 발생 방법에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널용의 복수의 샘플분의 파형 데이터를 형성하는 제4 단계; 및
    상기 복수의 샘플 각각에 대해, 상기 제4 단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계를 포함하며,
    상기 제4 단계는 상기 악음 발생 채널에 걸쳐 소정의 연산 처리 순서에 따라 사익 악음 발생 채널 각각에 대한 복수의 샘플분의 파형 데이터를 형성하기 위한 연산을 수행하며, 상기 제4 단계에 의한 파형 데이터 형성을 위한 연산의 수행 중에 연산이 소정의 시간 내에 완료되지 않을 것으로 판정될 때, 상기 소정의 시간 중 나머지 시간 동안 상기 파형 데이터 형성을 위한 연산은 수행되지 않는 악음 발생 방법.
  95. 메모리 및 이 메모리에 저장된 프로그램을 실행하는 프로세서를 포함하는 악음 발생 장치에서, 상기 프로그램은 상기 프로세서에 대해,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 단계;
    연산개시 명령을 순차적으로 내리는 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널용의 복수의 샘플분의 파형 데이터를 형성하는 단계; 및
    상기 복수의 샘플 각각에 대해, 상기 형성단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 단계를 수행하게 하며,
    상기 형성단계는 상기 악음 발생 채널에 걸쳐 소정의 연산 처리 순서에 따라 사익 악음 발생 채널 각각에 대한 복수의 샘플분의 파형 데이터를 형성하기 위한 연산을 수행하며, 상기 형성단계에 의한 파형 데이터 형성을 위한 연산의 수행 중에 연산이 소정의 시간 내에 완료되지 않을 것으로 판정될 때, 상기 소정의 시간 중 나머지 시간 동안 상기 파형 데이터 형성을 위한 연산은 수행되지 않게 하는 악음 발생 장치.
  96. 악음을 발생하기 위해 프로세서가 실행할 수 있는 프로그램을 포함하는 기계로 판독가능한 매체에 있어서, 상기 프로그램은,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    연산개시 명령을 순차적으로 내리는 제3 단계;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널용의 복수의 샘플분의 파형 데이터를 형성하는 제4 단계; 및
    상기 복수의 샘플 각각에 대해, 상기 제4 단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하는 제5 단계를 포함하며,
    상기 제4 단계는 상기 악음 발생 채널에 걸쳐 소정의 연산 처리 순서에 따라 사익 악음 발생 채널 각각에 대한 복수의 샘플분의 파형 데이터를 형성하기 위한 연산을 수행하며, 상기 제4 단계에 의한 파형 데이터 형성을 위한 연산의 수행 중에 연산이 소정의 시간 내에 완료되지 않을 것으로 판정될 때, 상기 소정의 시간 중 나머지 시간 동안 상기 파형 데이터 형성을 위한 연산은 수행되지 않는 것인, 기계로 판독가능한 매체.
  97. 연산장치에서 실행을 위한 악음 발생 방법에 있어서,
    연주정보를 수신하는 수신단계;
    소정의 기간동안 상기 수신단계에 의해 수신된 연주정보에 기초하여, 소정의 기간에 대응하는 파형 데이터를 형성하는 파형형성 단계, 상기 파형형성 단계는 총괄적으로 상기 파형 데이터의 복수의 연속한 샘플을 형성하며;
    상기 소정의 기간에 대응하는 외부 파형 데이터를 수신하고, 상기 수신된 외부 파형 데이터와 총괄적으로 이전에 형성된 파형 데이터를 결합하여, 상기 소정의 기간동안, 합성된 파형 데이터를 총괄적으로 형성하는 파형 합성 단계를 포함하는 악음 발생 방법.
  98. 제97항에 있어서, 상기 외부 파형 데이터는 상기 파형 형성 단계에 의해 형성된 파형 데이터가 아닌 것인 악음 발생 방법.
  99. 제97항에 있어서, 상기 합성된 파형 데이터의 한 샘플을 매 샘플링 사이클마다 출력하는 출력단계를 더 포함하는 악음 발생 방법.
  100. 악음 발생 장치에 있어서,
    연주정보를 데이터 버스를 통해 수신하는 수신하며;
    소정의 기간동안 수신된 연주정보에 기초하여, 소정의 기간에 대응하여 총괄적으로 상기 파형 데이터의 복수의 연속한 샘플을 형성하며;
    상기 소정의 기간에 대응하는 외부 파형 데이터를 수신하고, 총괄적으로 상기 수신된 외부 파형 데이터와 이전에 형성된 파형 데이터를 결합하여, 상기 소정의 기간동안, 합성된 파형 데이터를 총괄적으로 형성하도록 프로그램되는 프로세서를 포함하는 악음 발생 장치.
  101. 악음을 발생하기 위해 프로세서가 실행할 수 있는 프로그램을 포함하는 기계로 판독가능한 매체에 있어서, 상기 프로그램은,
    연주정보를 수신하는 수신단계;
    소정의 기간동안 상기 수신단계에 의해 수신된 연주정보에 기초하여, 소정의 기간에 대응하는 파형 데이터를 형성하는 파형형성 단계, 상기 파형형성 단계는 총괄적으로 상기 파형 데이터의 복수의 연속한 샘플을 형성하며;
    상기 소정의 기간에 대응하는 외부 파형 데이터를 수신하고, 상기 수신된 외부 파형 데이터와 총괄적으로 이전에 형성된 파형 데이터를 결합하여, 상기 소정의 기간동안, 합성된 파형 데이터를 총괄적으로 형성하는 파형 합성 단계를 포함하는 것인, 기계로 판독가능한 매체.
  102. 연산장치에서 실행을 위한 악음 발생 방법에 있어서,
    연주정보를 수신하는 수신단계;
    상기 수신단계에 의해 수신된 연주정보에 기초하여, 파형 데이터를 형성하도록 복수의 스테이지에 걸쳐 연산을 수행하는 파형 형성 단계로서, 상기 파형형성 단계는 총괄적으로 상기 파형 데이터의 복수의 연속한 샘플을 형성하며, 상기 복수의 스테이지는 파형 데이터를 합성하는 파형 합성 스테이지와 상기 파형 합성 스테이지에 의해 합성된 파형 데이터를 처리하는 파형 처리 스테이지를 포함하며;
    상기 파형 형성 단계 의해 형성된 파형 데이터가 아닌 외부 파형 데이터를 수신하는 단계; 및
    상기 수신된 외부 파형 데이터가 상기 합성된 파형 데이터와 동일한 방식으로 상기 파형 처리 스테이지에서 처리되도록 상기 파형 형성 단계에서 상기 스테이지 중 한 스테이지에 상기 수신된 외부 파형 데이터를 삽입하는 단계를 포함하는 악음 발생 방법.
  103. 악음 발생 장치에 있어서,
    연주정보를 데이터 버스를 통해 수신하며;
    수신된 연주정보에 기초하여, 파형 데이터를 형성하도록 복수의 스테이지에 걸쳐 연산을 수행함에 있어, 총괄적으로 상기 파형 데이터의 복수의 연속한 샘플을 형성하도록 수행하며, 상기 복수의 스테이지는 파형 데이터를 합성하는 파형 합성 스테이지와 상기 파형 합성 스테이지에 의해 합성된 파형 데이터를 처리하는 파형 처리 스테이지를 포함하며;
    이전에 형성된 파형 데이터가 아닌 외부 파형 데이터를 수신하고;
    상기 수신된 외부 파형 데이터가 상기 합성된 파형 데이터와 동일한 방식으로 상기 파형 처리 스테이지에서 처리되도록 상기 파형 형성 단계에서 상기 스테이지 중 한 스테이지에 상기 수신된 외부 파형 데이터를 삽입하도록 프로그램되는 프로세서를 포함하는 악음 발생 장치.
  104. 악음을 발생하기 위해 프로세서가 실행할 수 있는 프로그램을 포함하는 기계로 판독가능한 매체에 있어서, 상기 프로그램은,
    연주정보를 수신하는 수신단계;
    상기 수신단계에 의해 수신된 연주정보에 기초하여, 파형 데이터를 형성하도록 복수의 스테이지에 걸쳐 연산을 수행하는 파형 형성 단계로서, 상기 파형형성 단계는 총괄적으로 상기 파형 데이터의 복수의 연속한 샘플을 형성하며, 상기 복수의 스테이지는 파형 데이터를 합성하는 파형 합성 스테이지와 상기 파형 합성 스테이지에 의해 합성된 파형 데이터를 처리하는 파형 처리 스테이지를 포함하며;
    상기 파형 형성 단계 의해 형성된 파형 데이터가 아닌 외부 파형 데이터를 수신하는 단계; 및
    상기 수신된 외부 파형 데이터가 상기 합성된 파형 데이터와 동일한 방식으로 상기 파형 처리 스테이지에서 처리되도록 상기 파형 형성 단계에서 상기 스테이지 중 한 스테이지에 상기 수신된 외부 파형 데이터를 삽입하는 단계를 포함하는 것인, 기계로 판독가능한 매체.
  105. 연산장치에서 실행을 위한 악음 발생 방법에 있어서,
    연주정보를 수신하는 수신단계;
    총괄적이고, 연속적으로 복수의 샘플링 기간 동안 파형 데이터를 형성하는 형성 단계;
    상기 연주정보가 상기 수신단계에 의해 수신될 때, 상기 연주정보의 처리를 수행하도록 상기 형성단계를 일시적으로 인터럽트하고, 이어서 상기 연주정보의 처리를 완료하였을 때, 상기 형성단계가 인터럽트되었던 지점에서 상기 형성단계를재개하는 인터럽트 단계; 및
    상기 형성단계에 의해 형성된 파형 데이터에 기초하여 상기 형성단계에 의한 파형 데이터의 형성보다 늦은 타이밍에서 대응하는 악음을 발생하는 악음 발생 단계를 포함하며,
    상기 형성단계는 상기 인터럽트 단계에 의해 처리된 상기 연주정보에 기초하여 파형 데이터를 형성하는 악음 발생 방법.
  106. 메모리 및 이 메모리에 저장된 프로그램을 실행하는 프로세서를 포함하는 악음 발생 장치에서, 상기 프로그램은 상기 프로세서에 대해,
    연주정보를 공급하는 단계;
    총괄적이고 연속적으로 복수의 샘플링 기간 동안 파형 데이터를 형성하는 단계;
    상기 연주정보가 상기 공급단계에 의해 공급될 때, 상기 연주정보의 처리를 수행하도록 상기 형성단계를 일시적으로 인터럽트하고, 이어서 상기 연주정보의 처리를 완료하였을 때, 상기 형성단계가 인터럽트되었던 지점에서 상기 형성단계를 재개하는 인터럽트 단계; 및
    상기 형성단계에 의해 형성된 파형 데이터에 기초하여 상기 형성단계에 의한 파형 데이터의 형성보다 늦은 타이밍에서 대응하는 악음을 발생하는 악음 발생 단계를 포함하며,
    상기 형성단계는 상기 인터럽트 단계에 의해 처리된 상기 연주정보에 기초하여 파형 데이터를 형성하게 하는 것인 악음 발생 장치.
  107. 악음을 발생하기 위해 프로세서가 실행할 수 있는 프로그램을 포함하는 기계로 판독가능한 매체에 있어서, 상기 프로그램은,
    연주정보를 공급하는 공급 단계;
    총괄적이고 연속적으로 복수의 샘플링 기간 동안 파형 데이터를 형성하는 형성단계;
    상기 연주정보가 상기 공급단계에 의해 공급될 때, 상기 연주정보의 처리를 수행하도록 상기 형성단계를 일시적으로 인터럽트하고, 이어서 상기 연주정보의 처리를 완료하였을 때, 상기 형성단계가 인터럽트되었던 지점에서 상기 형성단계를 재개하는 인터럽트 단계; 및
    상기 형성단계에 의해 형성된 파형 데이터에 기초하여 상기 형성단계에 의한 파형 데이터의 형성보다 늦은 타이밍에서 대응하는 악음을 발생하는 악음 발생 단계를 포함하며,
    상기 형성단계는 상기 인터럽트 단계에 의해 처리된 상기 연주정보에 기초하여 파형 데이터를 형성하는 것인, 기계로 판독가능한 매체.
  108. 연산장치에서 실행을 위한 악음 발생 방법에 있어서,
    소정의 오퍼레이팅 시스템을 실행하는 시스템 단계;
    소정의 오퍼레이팅 시스템 상에 실행되는 어플리케이션 프로그램으로부터의명령에 기초하여, 총괄적으로 복수의 샘플링 사이클 동안 파형 데이터를 형성하는 파형 형성 단계;
    상기 파형 형성단계에 의해 형성된 파형 데이터의 한 샘플을, 매 샘플링 사이클마다, 출력하는 출력단계; 및
    상기 출력단계에 의한 요청에 응답하여, 소정의 기간 동안 상기 시스템 단계와 상기 파형 형성 단계간 태스크 절환을 수행하는 제어단계를 포함하며,
    상기 파형 형성 단계는 간헐적으로 악음 파라미터 연산을 수행하는 것인 악음 발생 방법.
  109. 악음 발생 장치에 있어서,
    소정의 오퍼레이팅 시스템을 실행하는 단계;
    소정의 오퍼레이팅 시스템 상에서 실행되는 어플리케이션 프로그램으로부터의 명령에 기초하여, 총괄적으로 복수의 샘플링 사이클 동안 파형 데이터를 연산하여 형성하는 단계;
    연산하여 형성된 상기 파형 데이터의 한 샘플을, 매 샘플링 사이클마다, 출력하는 단계; 및
    상기 출력단계에 의한 요청에 응답하여, 소정의 개수의 샘플링 사이클에 대응하는 소정의 기간 동안 상기 실행 단계와 상기 형성 단계간 태스크 절환을 수행하는 단계를 수행하며,
    상기 파형 형성 단계는 간헐적으로 악음 파라미터 연산을 수행하도록 프로그램되는 프로세서를 포함하는 악음 발생 장치.
  110. 악음을 발생하기 위해 프로세서가 실행할 수 있는 프로그램을 포함하는 기계로 판독가능한 매체에 있어서, 상기 프로그램은,
    소정의 오퍼레이팅 시스템을 실행하는 시스템 단계;
    소정의 오퍼레이팅 시스템 상에서 실행되는 어플리케이션 프로그램으로부터의 명령에 기초하여, 총괄적으로 복수의 샘플링 사이클 동안 파형 데이터를 형성하는 파형 형성 단계;
    상기 파형 형성단계에 의해 형성된 파형 데이터의 한 샘플을, 매 샘플링 사이클마다, 출력하는 출력단계; 및
    상기 출력단계에 의한 요청에 응답하여, 소정의 기간 동안 상기 시스템 단계와 상기 파형 형성 단계간 태스크 절환을 수행하는 제어단계를 포함하며,
    상기 파형 형성 단계는 간헐적으로 악음 파라미터 연산을 수행하는 것인, 기계로 판독가능한 매체.
  111. 악음 발생 장치에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하며;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하며;
    연산개시 명령을 순차적으로 내리며;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하며;
    상기 복수의 샘플 각각에 대해, 상기 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하며,
    상기 복수의 샘플 각각에 대해 혼합된 샘플 데이터를 버퍼하고 혼합된 샘플 데이터에 소정의 효과를 부여하는 소정의 프로세스를 가하도록 된 프로그램된 프로세서를 포함하는 악음 발생 장치.
  112. 악음 발생 장치에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하며;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하며;
    연산개시 명령을 순차적으로 내리며;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하며;
    상기 복수의 샘플 각각에 대해, 상기 각각의 악음 발생 채널에 대해 형성된파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하며,
    상기 파형 데이터를 형성하는 단계는 파형 데이터가 특정 시간기간 내에 형성되는 악음 발생 채널 중 어느 것을 판정하는 단계를 포함하며, 상기 파형 데이터의 형성은 상기 판정된 악음 발생 채널에 대해서만 수행되도록 프로그램된 프로세서를 포함하는 악음 발생 장치.
  113. 악음 발생 장치에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하며;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하며;
    연산개시 명령을 순차적으로 내리며;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하며;
    상기 복수의 샘플 각각에 대해, 상기 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하며,
    모든 지정된 악음 발생 채널에 대한 연산이 소정의 시간기간 내에 완료되지 않을 것으로 판정될 때, 상기 악음 발생 채널 중 적어도 한 채널에 대한 파형 데이터의 형성을 수정하는 명령을 내리도록 프로그램된 프로세서를 포함하는 악음 발생장치.
  114. 악음 발생 장치에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하며;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하며;
    상기 각각의 악음 발생 채널에서 발생될 악음의 중요도를 판정하며;
    연산개시 명령을 순차적으로 내리며;
    상기 각각의 연산개시 명령과 상기 판정된 악음의 중요도에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여, 상기 복수의 악음 발생 채널 중 임의의 수의 채널에 대해 복수의 샘플분의 파형 데이터를 형성하며;
    상기 복수의 샘플 각각에 대해, 상기 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하도록 프로그램된 프로세서를 포함하는 악음 발생 장치.
  115. 데이터 버스에 결합된 프로그램된 프로세서를 포함하는 악음 발생 장치에서, 상기 프로세서는,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하며;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하며;
    연산개시 명령을 순차적으로 내리며;
    상기 각각의 연산개시 명령에 따라, 상기 채널의 상기 채널 레지스터에 기억된 제어 데이터에 근거하여 각각의 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하며;
    상기 복수의 샘플 각각에 대해, 상기 제4 단계에 의한 각각의 악음 발생 채널에 대해 형성된 파형 데이터를 혼합하여 혼합된 샘플 데이터를 형성하며,
    상기 파형 데이터는 상기 악음 발생 채널에 걸쳐 소정의 연산 처리 순서에 따라 연산에 의해 형성되며, 상기 연산이 소정의 시간 내에 완료되지 않을 것으로 판정될 때, 상기 소정의 시간 중 나머지 시간 동안 상기 파형 데이터 형성을 위한 연산은 수행되지 않도록 된 프로세서를 포함하는 것인 악음 발생 장치.
  116. 악음 발생 장치에 있어서,
    연주정보를 공급하며;
    총괄적이고 연속적으로 복수의 샘플링 기간 동안 파형 데이터를 형성하며;
    상기 연주정보가 공급될 때, 상기 연주정보의 처리를 수행하도록 파형 데이터의 형성을 일시적으로 인터럽트하고, 이어서 상기 연주정보의 처리를 완료하였을 때, 상기 파형 데이터의 형성이 인터럽트되었던 지점에서 파형 데이터의 형성을 재개하며;
    상기 형성된 파형 데이터에 기초하여 상기 파형 데이터의 형성보다 늦은 타이밍에서 대응하는 악음을 발생하며,
    상기 파형 데이터의 형성은 상기 인터럽트 동안 처리된 상기 연주정보에 기초하여 수행되도록 프로그램된 프로세서를 포함하는 악음 발생 장치.
  117. 악음 발생 방법에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    소정의 시간간격에 대응하여 상기 채널 레지스터에 기억된 제어 데이터에 기초하여 상기 악음 발생 채널에 대한 복수의 샘플분의 파형 데이터를 형성하는 제3 단계; 및
    상기 소정의 시간간격 내에 복수의 시점에서 연산개시 명령을 내리는 제4 단계를 포함하며, 상기 각각의 연산개시 명령에 응답하여 총괄적으로 복수의 샘플분의 상기 파형 데이터를 형성하는 악음 발생 방법.
  118. 악음 발생 방법에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    재생 시간간격에 대응하여 상기 채널 레지스터에 기억된 제어 데이터에 기초하여 상기 악음 발생 채널에 대한 보수의 샘플분의 파형 데이터를 형성하는 제3 단계; 및
    상기 재생 시간간격 내에 복수의 시점에서 연산개시 명령을 내리는 제4 단계를 포함하며, 상기 각각의 연산개시 명령에 응답하여 총괄적으로 복수의 샘플분의 상기 파형 데이터를 형성하는 악음 발생 방법.
  119. 악음 발생 장치에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하며;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하며;
    소정의 시간간격에 대응하여 상기 채널 레지스터에 기억된 제어 데이터에 기초하여 상기 악음 발생 채널에 대한 보수의 샘플분의 파형 데이터를 형성하며;
    상기 소정의 시간간격 내에 복수의 시점에서 연산개시 명령을 내리며, 상기 각각의 연산개시 명령에 응답하여 총괄적으로 복수의 샘플분의 상기 파형 데이터를형성하도록 프로그램된 프로세서를 포함하는 악음 발생 장치.
  120. 악음 발생 장치에 있어서,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하며;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하며;
    재생 시간간격에 대응하여 상기 채널 레지스터에 기억된 제어 데이터에 기초하여 상기 악음 발생 채널에 대한 보수의 샘플분의 파형 데이터를 형성하며;
    상기 재생 시간간격 내에 복수의 시점에서 연산개시 명령을 내리며, 상기 각각의 연산개시 명령에 응답하여 총괄적으로 복수의 샘플분의 상기 파형 데이터를 형성하도록 프로그램된 프로세서를 포함하는 악음 발생 장치.
  121. 악음을 발생하기 위해 프로세서가 실행할 수 있는 프로그램을 포함하는 기계로 판독가능한 매체에 있어서, 상기 프로그램은,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    소정의 시간간격에 대응하여 상기 채널 레지스터에 기억된 제어 데이터에 기초하여 상기 악음 발생 채널에 대한 보수의 샘플분의 파형 데이터를 형성하는 제3 단계;
    상기 소정의 시간간격 내에 복수의 시점에서 연산개시 명령을 내리는 제4 단계를 포함하며, 상기 제3 단계는 상기 각각의 연산개시 명령에 응답하여 총괄적으로 복수의 샘플분의 상기 파형 데이터를 형성하는 것인, 기계로 판독가능한 매체.
  122. 악음을 발생하기 위해 프로세서가 실행할 수 있는 프로그램을 포함하는 기계로 판독가능한 매체에 있어서, 상기 프로그램은,
    하나 이상의 지정된 악음을 발생하도록 하나 이상의 발생명령을 수신하는 제1 단계;
    상기 발생명령에 따라, 상기 지정된 악음을 복수의 악음발생 채널 중 각각에 할당하고, 이 지정된 악음이 할당된 각각의 악음 발생 채널에 대응하는 채널 레지스터에 상기 지정된 악음용 제어 데이터를 기입하는 제2 단계;
    재생 시간간격에 대응하여 상기 채널 레지스터에 기억된 제어 데이터에 기초하여 상기 악음 발생 채널에 대한 보수의 샘플분의 파형 데이터를 형성하는 제3 단계;
    상기 재생 시간간격 내에 복수의 시점에서 연산개시 명령을 내리는 제4 단계를 포함하며, 상기 제3 단계는 상기 각각의 연산개시 명령에 응답하여 총괄적으로 복수의 샘플분의 상기 파형 데이터를 형성하는 것인, 기계로 판독가능한 매체.
KR1019960016767A 1995-05-19 1996-05-18 악음생성방법및장치 KR100421589B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP95-144159 1995-05-19
JP14415995 1995-05-19
JP26462995 1995-09-20
JP95-264629 1995-09-20
JP96-23323 1996-01-17
JP02332396A JP3246312B2 (ja) 1995-09-20 1996-01-17 楽音発生方法および装置

Publications (2)

Publication Number Publication Date
KR960042327A KR960042327A (ko) 1996-12-21
KR100421589B1 true KR100421589B1 (ko) 2004-07-05

Family

ID=27284214

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960016767A KR100421589B1 (ko) 1995-05-19 1996-05-18 악음생성방법및장치

Country Status (5)

Country Link
US (2) US5895877A (ko)
EP (1) EP0743631B1 (ko)
KR (1) KR100421589B1 (ko)
CN (2) CN100495532C (ko)
DE (1) DE69619587T2 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3267106B2 (ja) * 1995-07-05 2002-03-18 ヤマハ株式会社 楽音波形生成方法
KR100253279B1 (ko) * 1997-03-12 2000-04-15 김영환 퍼스널컴퓨터의음악연주데이터페치회로
US6463390B1 (en) 1998-07-01 2002-10-08 Yamaha Corporation Setting method and device for waveform generator with a plurality of waveform generating modules
US6961631B1 (en) * 2000-04-12 2005-11-01 Microsoft Corporation Extensible kernel-mode audio processing architecture
US6646195B1 (en) * 2000-04-12 2003-11-11 Microsoft Corporation Kernel-mode audio processing modules
JP3781171B2 (ja) * 2000-06-22 2006-05-31 ヤマハ株式会社 楽音発生方法
EP1180896B1 (en) * 2000-08-17 2006-03-15 Sony Deutschland GmbH Sound generating device and method for a mobile terminal of a wireless telecommuniation system
JP3675362B2 (ja) * 2000-08-18 2005-07-27 ヤマハ株式会社 楽音生成装置および携帯端末装置
JP3687090B2 (ja) * 2000-12-19 2005-08-24 ヤマハ株式会社 音源付き記憶装置
JP3722015B2 (ja) * 2001-06-15 2005-11-30 ヤマハ株式会社 楽音生成装置
TWI222621B (en) * 2003-05-14 2004-10-21 Mediatek Inc Music playing/processing device and method for playing music file according to playing order of tones
WO2005069272A1 (fr) * 2003-12-15 2005-07-28 France Telecom Procede de synthese et de spatialisation sonores
JP2006030517A (ja) * 2004-07-15 2006-02-02 Yamaha Corp 発音割当装置
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 재생 장치 및 방법
JP4513625B2 (ja) * 2005-03-28 2010-07-28 カシオ計算機株式会社 楽音発生装置および楽音発生処理のプログラム
EP2456103B1 (en) * 2005-03-31 2016-12-28 Yamaha Corporation Digital mixer with user-friendly display control
SE528839C2 (sv) * 2006-02-06 2007-02-27 Mats Hillborg Melodigenerator
EP2015855B1 (en) * 2006-05-05 2016-10-05 The Stone Family Trust Of 1992 System and method for dynamic note assignment for musical synthesizers
WO2008094415A2 (en) * 2007-01-18 2008-08-07 The Stone Family Trust Of 1992 Real time divisi with path priority, defined note ranges and forced octave transposition
US7893343B2 (en) 2007-03-22 2011-02-22 Qualcomm Incorporated Musical instrument digital interface parameter storage
WO2008121650A1 (en) * 2007-03-30 2008-10-09 William Henderson Audio signal processing system for live music performance
CN101923860B (zh) * 2009-06-11 2012-07-04 英华达(南京)科技有限公司 音讯柔化系统、装置与方法
EP2884485B1 (en) * 2012-08-09 2018-11-07 Yamaha Corporation Device and method for pronunciation allocation
JP2014092722A (ja) * 2012-11-05 2014-05-19 Yamaha Corp 音発生装置
US9418641B2 (en) 2013-07-26 2016-08-16 Audio Impressions Swap Divisi process
CN105869614B (zh) * 2016-03-29 2019-07-19 北京精奇互动科技有限公司 音频文件导出方法和装置
CN107863093B (zh) * 2017-11-03 2022-01-07 得理电子(上海)有限公司 发音管理方法、装置、电子乐器及存储介质

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4373416A (en) * 1976-12-29 1983-02-15 Nippon Gakki Seizo Kabushiki Kaisha Wave generator for electronic musical instrument
JPS55500959A (ko) * 1978-12-11 1980-11-13
DE3778401D1 (de) * 1986-01-31 1992-05-27 Casio Computer Co Ltd Wellenformerzeuger fuer ein elektronisches musikinstrument.
US4984497A (en) * 1986-11-28 1991-01-15 Yamaha Corporation Tone signal generation device having a tone element control function
US5007323A (en) * 1987-08-07 1991-04-16 Casio Computer Co., Ltd. Polyphonic electronic musical instrument
US5086475A (en) * 1988-11-19 1992-02-04 Sony Corporation Apparatus for generating, recording or reproducing sound source data
US5319151A (en) * 1988-12-29 1994-06-07 Casio Computer Co., Ltd. Data processing apparatus outputting waveform data in a certain interval
US5248842A (en) * 1988-12-30 1993-09-28 Kawai Musical Inst. Mfg. Co., Ltd. Device for generating a waveform of a musical tone
JP2655905B2 (ja) * 1989-02-22 1997-09-24 株式会社河合楽器製作所 電子楽器のチャンネル割り当て装置
JPH02254496A (ja) * 1989-03-29 1990-10-15 Yamaha Corp 楽音発生装置
US5300724A (en) * 1989-07-28 1994-04-05 Mark Medovich Real time programmable, time variant synthesizer
US5121667A (en) * 1989-11-06 1992-06-16 Emery Christopher L Electronic musical instrument with multiple voices responsive to mutually exclusive ram memory segments
JP2576647B2 (ja) * 1989-11-30 1997-01-29 ヤマハ株式会社 波形発生装置
US5218155A (en) * 1990-03-30 1993-06-08 Kabushiki Kaisha Kawai Gakki Seisakusho Tone signal processing apparatus for PCM waveform interpolation and filtering
US5200564A (en) * 1990-06-29 1993-04-06 Casio Computer Co., Ltd. Digital information processing apparatus with multiple CPUs
JP2545297B2 (ja) * 1990-07-18 1996-10-16 株式会社河合楽器製作所 電子楽器のパラメータ設定装置
US5054360A (en) * 1990-11-01 1991-10-08 International Business Machines Corporation Method and apparatus for simultaneous output of digital audio and midi synthesized music
US5522010A (en) * 1991-03-26 1996-05-28 Pioneer Electronic Corporation Pitch control apparatus for setting coefficients for cross-fading operation in accordance with intervals between write address and a number of read addresses in a sampling cycle
JPH0573046A (ja) * 1991-06-27 1993-03-26 Yamaha Corp 楽音信号演算処理装置
US5283386A (en) * 1991-08-30 1994-02-01 Casio Computer Co., Ltd. Musical-tone signal generating apparatus and musical-tone controlling apparatus including delay means and automatic reset means
JP2722907B2 (ja) * 1991-12-13 1998-03-09 ヤマハ株式会社 波形発生装置
JP3086315B2 (ja) * 1992-01-14 2000-09-11 ヤマハ株式会社 音源装置
JP2743726B2 (ja) * 1992-07-07 1998-04-22 ヤマハ株式会社 電子楽器
JP2768168B2 (ja) * 1992-09-18 1998-06-25 ヤマハ株式会社 楽音合成装置
US5331111A (en) * 1992-10-27 1994-07-19 Korg, Inc. Sound model generator and synthesizer with graphical programming engine
JPH07146679A (ja) * 1992-11-13 1995-06-06 Internatl Business Mach Corp <Ibm> 音声データを変換する方法及びシステム
JPH06195075A (ja) * 1992-12-24 1994-07-15 Kawai Musical Instr Mfg Co Ltd 楽音発生装置
US5613147A (en) * 1993-01-08 1997-03-18 Yamaha Corporation Signal processor having a delay ram for generating sound effects
US5376752A (en) * 1993-02-10 1994-12-27 Korg, Inc. Open architecture music synthesizer with dynamic voice allocation
JP2850707B2 (ja) * 1993-06-15 1999-01-27 ヤマハ株式会社 楽音制御装置
JP2921376B2 (ja) * 1993-12-22 1999-07-19 ヤマハ株式会社 楽音発生装置
JP3444947B2 (ja) * 1993-12-27 2003-09-08 ヤマハ株式会社 楽音信号発生装置
TW281745B (ko) * 1994-03-31 1996-07-21 Yamaha Corp
US5596159A (en) * 1995-11-22 1997-01-21 Invision Interactive, Inc. Software sound synthesis system
DE69704996T2 (de) * 1996-08-05 2002-04-04 Yamaha Corp., Hamamatsu Software-Tonerzeuger

Also Published As

Publication number Publication date
CN1129110C (zh) 2003-11-26
KR960042327A (ko) 1996-12-21
EP0743631B1 (en) 2002-03-06
DE69619587D1 (de) 2002-04-11
CN1516110A (zh) 2004-07-28
EP0743631A2 (en) 1996-11-20
CN100495532C (zh) 2009-06-03
US6184455B1 (en) 2001-02-06
CN1160904A (zh) 1997-10-01
US5895877A (en) 1999-04-20
EP0743631A3 (en) 1997-07-09
DE69619587T2 (de) 2002-10-31

Similar Documents

Publication Publication Date Title
KR100421589B1 (ko) 악음생성방법및장치
EP0750290B1 (en) Method and device for forming a tone waveform by combined use of different waveform sample forming resolutions
US6180863B1 (en) Music apparatus integrating tone generators through sampling frequency conversion
US6326537B1 (en) Method and apparatus for generating musical tone waveforms by user input of sample waveform frequency
US5770812A (en) Software sound source with advance synthesis of waveform
KR100392621B1 (ko) 악음파형생성방법및그장치
KR100302626B1 (ko) 악음생성장치 및 방법
JP3632744B2 (ja) 音生成方法
JP3003559B2 (ja) 楽音生成方法
JP3658826B2 (ja) 楽音生成方法
JP3637577B2 (ja) 楽音生成方法
JP3000894B2 (ja) 楽音発生方法
JP3627590B2 (ja) 音生成方法
JP3019755B2 (ja) 楽音発生方法および楽音発生装置
JP3799711B2 (ja) 楽音発生方法および楽音発生装置
JPH11288285A (ja) 楽音発生方法及び装置
CN1763838B (zh) 乐音发生方法与设备
JP3603638B2 (ja) 楽音発生方法
JP7159583B2 (ja) 楽音生成装置、楽音生成方法、楽音生成プログラム及び電子楽器
JP3269361B2 (ja) 楽音発生方法および装置
JPH1097258A (ja) 波形メモリ音源装置および楽音発生装置
JPH09160552A (ja) 楽音処理方法及び装置
JPH11282467A (ja) 楽音発生方法及び装置
JPH09146556A (ja) 楽音発生方法
JPH09152869A (ja) 楽音発生方法および装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120207

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20130117

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee