KR20060103131A - 신호처리장치 - Google Patents

신호처리장치 Download PDF

Info

Publication number
KR20060103131A
KR20060103131A KR1020060025978A KR20060025978A KR20060103131A KR 20060103131 A KR20060103131 A KR 20060103131A KR 1020060025978 A KR1020060025978 A KR 1020060025978A KR 20060025978 A KR20060025978 A KR 20060025978A KR 20060103131 A KR20060103131 A KR 20060103131A
Authority
KR
South Korea
Prior art keywords
signal processing
circuit configuration
plug
graph
configuration information
Prior art date
Application number
KR1020060025978A
Other languages
English (en)
Other versions
KR101260295B1 (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
Application filed by 소니 가부시끼 가이샤 filed Critical 소니 가부시끼 가이샤
Publication of KR20060103131A publication Critical patent/KR20060103131A/ko
Application granted granted Critical
Publication of KR101260295B1 publication Critical patent/KR101260295B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • DTEXTILES; PAPER
    • D05SEWING; EMBROIDERING; TUFTING
    • D05BSEWING
    • D05B59/00Applications of bobbin-winding or -changing devices; Indicating or control devices associated therewith
    • D05B59/02Devices for determining or indicating the length of thread still on the bobbin
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Textile Engineering (AREA)
  • Stored Programmes (AREA)
  • Logic Circuits (AREA)

Abstract

신호처리 지연을 방지하고, 효율이 좋은 신호처리를 가능하게 하는 신호처리장치를 제공한다. 복수의 신호처리 단위요소로 이루어지는 신호처리를 소프트웨어 처리에 의해 행하는 신호처리장치이다. 신호처리 단위요소를 소프트 웨어 처리에 의해 각각 행하는 신호처리 모듈의 복수개를 접속하여 회로를 구성하고, 그 회로 구성 정보를, 회로 구성 정보 격납 관리부에 유지하여 관리한다. 신호처리 순서 결정수단은, 초기 경로 탐색과 루프 탐색을 실행하여, 회로 구성 정보 격납 관리부에 격납되어 있는 상기 복수개의 신호처리 모듈의 각각의 신호처리 순서를, 루프를 구성하는 신호 모듈 군은, 신호처리 순서로서는, 국소화하여 한번에 모이도록 결정한다. 신호처리 실행수단은, 결정된 신호처리순서로, 상기 신호처리 모듈의 각각을 차차 실행시켜서 신호처리를 실행한다.
신호처리 순서 결정수단, 신호처리 실행수단, 신호처리 모듈

Description

신호처리장치{SIGNAL PROCESSING APPARATUS}
도 1은 본 발명에 의한 신호처리장치의 실시예의 주요부의 기능 블럭도.
도 2는 본 발명에 의한 신호처리장치의 실시예를 설명하기 위한 도면.
도 3은 본 발명에 의한 신호처리장치의 실시예를 설명하기 위한 도면.
도 4는 본 발명에 의한 신호처리장치의 실시예를 설명하기 위한 도면.
도 5는 본 발명에 의한 신호처리장치의 실시예를 설명하기 위한 도면.
도 6은 본 발명에 의한 신호처리장치의 실시예의 플러그인의 구성을 설명하기 위한 도면.
도 7은 본 발명에 의한 신호처리장치의 실시예의 그래프의 구성을 설명하기 위한 도면.
도 8은 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성의 일 예를 설명하기 위한 도면.
도 9는 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 순서의 예를 설명하기 위한 도면.
도 10은 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 순서의 예를 설명하기 위한 도면.
도 11은 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 순서의 예를 설명하기 위한 도면.
도 12는 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 순서의 예를 설명하기 위한 도면.
도 13은 본 발명에 의한 신호처리장치의 실시예에 있어서의 경로 탐색 알고리즘을 설명하기 위한 흐름도.
도 14는 본 발명에 의한 신호처리장치의 실시예에 있어서의 경로 탐색 알고리즘의 일부를 구성하는 초기 경로 탐색 알고리즘을 설명하기 위한 흐름도.
도 15는 본 발명에 의한 신호처리장치의 실시예에 있어서의 경로 탐색 알고리즘의 일부를 구성하는 초기 경로 알고리즘을 설명하기 위한 도면.
도 16은 본 발명에 의한 신호처리장치의 실시예에 있어서의 경로 탐색 알고리즘의 일부를 구성하는 초기 경로 탐색 알고리즘의 탐색 결과의 예를 도시하는 도면.
도 17은 본 발명에 의한 신호처리장치의 실시예에 있어서의 경로 탐색 알고리즘의 일부를 구성하는 루프서치 알고리즘을 설명하기 위한 흐름도.
도 18은 본 발명에 의한 신호처리장치의 실시예에 있어서의 경로 탐색 알고리즘의 일부를 구성하는 루프서치 알고리즘을 설명하기 위한 도면.
도 19는 본 발명에 의한 신호처리장치의 실시예에 있어서의 AV동기처리를 설명하기 위한 흐름도.
도 20은 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성의 동 적 변경 처리를 설명하기 위한 흐름도.
도 21은 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 변경예를 설명하기 위한 도면.
도 22는 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 변경예를 설명하기 위한 도면.
도 23은 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 변경예를 설명하기 위한 도면.
도 24는 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 변경예를 설명하기 위한 도면.
도 25는 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 변경예를 설명하기 위한 도면.
도 26은 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 변경예를 설명하기 위한 도면.
도 27은 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 변경예를 설명하는 도면.
도 28은 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 변경예를 설명하기 위한 도면.
도 29는 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 변경예를 설명하기 위한 도면.
도 30은 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 변경 예를 설명하기 위한 도면.
도 31은 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 변경예를 설명하기 위한 도면.
도 32는 본 발명에 의한 신호처리장치의 실시예에 있어서의 회로 구성 변경에 따른 처리의 예를 설명하기 위한 흐름도.
도 33은 본 발명에 의한 신호처리장치의 실시예에 있어서의 파라미터의 설정 방법의 예를 나타내는 도면.
도 34는 본 발명에 의한 신호처리장치의 실시예에 있어서의 파라미터의 설정 방법의 예를 나타내는 도면.
도 35는 도 34의 파라미터의 설정 방법의 다른 예를 설명하기 위한 흐름도.
도 36은 도 34의 파라미터의 설정 방법의 다른 예를 설명하기 위한 흐름도.
도 37은 본 발명에 의한 신호처리장치의 실시예에 있어서의 리얼타임 분산처리를 설명하기 위한 도면이다.
[도면의 주요부분에 대한 부호의 설명]
1 : 지시입력 접수 기능부 2 : 플러그인 생성 삭제 기능부
3 : 플러그인 간 결선처리 기능부 4 : 회로 구성 정보 격납 관리 기능부
5 : 경로 탐색 기능부 6 : 신호처리 순서 관리 기능부
7 : 신호처리 실행 기능부 8 : 신호처리 함수 격납부
9 : 회로 구성 변경 기능부
[기술분야]
본 발명은 복수의 신호처리 단위요소로 이루어지는 신호처리를 소프트 웨어 처리에 의해 행하는 신호처리장치에 관한 것이다.
[배경기술]
최근의 시판되고 있는 컴퓨터는 성능이 현저하게 향상하여, 종래에는 곤란했던 동영상이나 음악의 컴퓨터 상에서의 재생이 가능하게 되고 있다. 특히, 동영상이나 음성의 신호처리를 행하는 어플리케이션에 관해서는, 종래의 DSP(Digital Signal Processor)등의 전용 신호 처리 디바이스나 전용 하드웨어를 이용하지 않아도, 소프트 웨어 처리로 용이하게 실시간 신호 처리가 가능하게 되고 있다.
이들의 신호처리 어플리케이션을 유지하는 기술로서, 각종의 신호처리 미들웨어가 존재하고 있다. 예를 들면 Microsoft(등록상표)사 제품의 Direct Show(비특허 문헌 1참조)나, The MathWorks(등록상표)사 제품의 MATLAB(비특허 문헌 2참조), Cycling '74사 제품의 Max/MSP(비특허문헌 3 참조)등이 있다.
신호처리 어플리케이션은, 이들의 미들웨어를 이용함으로써, 정교한 기능을 용이하게 실현할 수 있다. 예를 들면 음성에 대해서 말하면, 녹음·재생, 입출력, 믹싱, 특수효과 등이, 신호처리 어플리케이션에 의해 실현되고 있다. 또한 동영상에 대해서 말하면, 비선형 편집 등의 고도의 편집기능을 가지는 신호처리 어플리케 이션이 실현되고 있다.
또 이런 종류의 미들웨어로서, 플러그인 구조를 가지는 것이 제안되고 있다(특허문헌 1(일본국 공개특허공보 특개평 2001-109628공보) 및 특허문헌 2(일본국 공개특허공보 특개평7-302195호 공보)참조). 여기에서, 플러그인이라 함은, 기능을 모듈화한 것이며, 소프트 웨어 어플리케이션이다. 또, 이 명세서에서는, 신호처리를 취급하므로, 플러그인은, 신호 처리 모듈을 구성하는 소프트 웨어 어플리케이션을 가리킨다.
이 플러그인을 이용함으로써, 사용자는, 필요할 때 필요한 신호처리 모듈을 애드 온하여 이용할 수 있다. 플러그인은, 단체로 사용되는 경우가 많지만, 최근 이들의 플러그인을 복수 조합하여, 복합적인 기능을 만들 수 있는 새로운 시스템이 몇가지 존재하고 있다. 이 복합 플러그인 시스템은, 새로운 부가가치를 만드는 시스템으로서 금후 주류로 되는 것을 예상할 수 있다.
상기의 특허문헌은 다음과 같다. 또한 비특허문헌은, 다음에 나타내는 어드레스 사이트에서 설명되고 있다.
[특허문헌 1]일본국 공개특허공보 특개 2001-109628호 공보
[특허문헌 2]일본국 공개특허공보 특개평 7-302195호 공보.
[비특허 문헌 1] http://masdn.microsoft.com/library/defalt.asp?url=libraryen_us/directx9_c/directX/htm/directshow.asp.
[비특허문헌 2] http://www.mathworks.com/
[비특허문헌 3] http"//www.cycling74.com/products/maxmsp.html
[발명의 개시]
그러나, 신호처리장치에 있어서, 신호처리를 중단하지 않고, 신호출력을 중단하지 않으며, 신호처리장치의 회로 구성을 유연하게 임의의 회로로 변경할 수 있으면 매우 편리하다. 예를 들면 라이브 연주 등에 있어서의 음성신호처리의 경우, 음성출력을 멈추지 않고 회로 구성을 변경할 수 있으면, 리버브나 일그러짐 등의 음성특수효과처리를, 특정한 파트에서 실행하거나 혹은 특정한 파트에서는 실행하지 않거나 하는 것을 용이하게 할 수 있게 된다.
하드웨어 구성의 신호처리장치에 있어서, 신호처리를 중단하지 않고, 회로 구성을 변경하고자 할 경우에는, 상정되는 모든 회로 구성을 미리 준비해 두어, 스위칭 등에 의해 회로 구성을 바꾸도록 하는 것을 생각할 수 있다. 이 경우에, 모든 회로 구성을 미리 준비해 둘 필요가 있기 때문에, 상황에 따라 상정 외의 임의의 회로로 변경하는 것은 불가능하여 자유도가 극히 부족하다. 또 미리 모든 회로 구성을 준비해 둘 필요가 있기 때문에 원가가 높아진다는 문제가 있다.
또 FPGA(Field Programmable Gate Array)와 같이, 회로 구성 정보를 다운로드하는 것으로 변환 가능한 하드웨어라도, 원리상, 회로 변환에 시간을 필요로 하는 것이나, 변환 전후의 회로의 정합성을 보증할 수 없는 것으로부터 회로 변환 시에 음이 짤리거나 노이즈가 발생하게 된다. 연속적으로 음성신호를 출력하면서 동 적으로 회로 구성을 바꾸는 것은 극히 곤란하다.
전술한 신호처리 모듈을 조합하여 신호처리장치를 구성할 경우에는, 하드웨어 구성과는 달리, 소프트웨어를 변경함으로써, 신호처리회로의 회로 구성을 변경하는 것이 가능하기 때문에, 하드웨어 구성의 스위치가 불필요하고, 유연하게 임의의 회로로 변경할 수 있는 데다가, 변환시 노이즈를 원리상, 제거하는 것이 가능하게 된다.
그러나 하나 주의해야 할 점이 있다. 소프트웨어 신호처리의 경우에는 처리부하를 경감하기 위해, 패킷 단위로 신호처리를 행하는 경우가 많다. 피드 포워드형의 회로 구성이면, 순방향으로 신호가 흐르기 때문에, 가령 패킷 처리 도중이거나, 동적으로 회로 구성을 바꾸어도 처리되는 음성 데이터에 어떠한 모순도 발생하지 않는다.
그러나, 회로 구성에 피드백 루프가 포함되어 있을 경우에는, 패킷 처리 중간에 회로 구성을 단순히 변경하면 신호 처리에 모순이 일어나게 된다. 이것은 디지털 신호 처리 이론에 있어서의 피드백 루프의 인과성에 기인하는 것이다. 인과성에 의해 피드백 루프 회로는, 가령 패킷 내라도, 1샘플 단위로 차차 처리할 필요가 있다. 그 때문에 피드 포워드형과 피드백 루프형의 2가지 형태가 혼재하는 회로 구성에서는, 피드 포워드형의 회로는 패킷 단위로, 피드백 루프형의 회로는 1샘플 단위로 신호처리를 행할 필요가 있고, 동일 패킷 시간내에 있어서 혼재한 두개의 제어 처리를 행할 필요가 있다.
문제가 되는 것은, 이러한 두개의 회로형이 혼재한 상황하에 있어서, 아무것 도 생각하지 않고 단순히 회로를 바꾸게 되면, 처리되는 음성 데이터에 모순이 발생하게 된다. 피드 포워드형의 회로와 피드백 루프형의 회로에서는, 변환 가능한 타이밍이 다르다. 이와 같이 함으로써, 단순한 회로 변환을 행하게 되면, 변환 전의 회로 구성에 있어서 처리된 음성 데이터와, 변환 후의 회로 구성에 있어서 처리된 음성 데이터가 동일 패킷 내에 혼재하게 되는 경우가 있으며, 그 결과, 처리되는 음성 데이터에 문제가 발생하고, 노이즈 발생 등의 문제가 발생하는 경우가 있다.
본 발명은 상기 문제점을 해결하기 위해, 신호처리를 중단하지 않고, 신호 출력을 중단하지 않으며, 신호처리장치의 회로 구성을 변경할 수 있도록 한 신호처리장치를 제공하는 것을 목적으로 한다.
[과제를 해결하기 위한 수단]
상기의 과제를 해결하기 위해서, 청구항 1의 발명은,
복수의 신호처리 단위 요소로 이루어지는 신호처리를, 미리 정해진 데이터 샘플수의 처리 데이터 단위로, 소프트웨어 신호처리에 의해 행하는 신호처리장치이며,
상기 신호처리 단위 요소를 소프트웨어 처리에 의해 각각 행하는 신호처리 모듈의 복수개와,
상기 복수개의 신호처리 모듈과, 상기 복수개의 신호처리 모듈의 입출력의 가상적인 접속상태에 의해 나타나는 회로 구성 정보를 기억하여 관리하는 회로 구성 정보 격납 관리부와,
경로 검색을 실행하여, 상기 회로 구성 정보 격납 관리부에 격납되어 있는 회로 구성 정보를 구성하는 상기 복수개의 신호처리 모듈의 각각의 신호처리순서를 결정하는 신호처리순서 결정수단과,
상기 신호처리순서 결정수단에서 결정된 신호처리순서로, 상기 신호처리 모듈의 각각을 차차 실행시켜서 상기 신호처리를 실행하는 신호처리 실행수단과,
상기 신호처리 실행수단에서 상기 신호처리를 실행중에 있어서, 회로 구성 변경 요구가 있는 지 여부를 판단하여, 상기 회로 구성 변경 요구가 있다고 판별되었을 때, 상기 처리 데이터 단위에서의 상기 소프트 웨어 신호 처리가 종료한 후, 다음의 처리 데이터 단위의 선두 까지, 변경후의 회로 구성 정보를 상기 회로 구성 정보 격납 관리부에 기억시킴과 동시에, 상기 신호처리순서 결정수단에 상기 경로 탐색을 재실행시키고, 변경후의 회로 구성 정보에 있어서의 상기 복수개의 신호처리 모듈의 각각의 신호처리순서를 결정하도록 하는 회로 구성 변경 수단를 구비하고,
상기 회로 구성 변경 수단에서 변경된 회로 구성에 의해, 상기 다음의 처리 데이터 단위의 선두부터, 소프트 웨어 신호처리가 행해지는 것을 특징으로 하는 신호처리장치를 제공한다.
이 청구항 1의 발명에 의하면, 신호처리순서를 정하여, 복수의 신호처리 모듈에 의한 소프트웨어 신호처리를 차차 행하므로, 각 신호처리 모듈에서는, 비동기 버퍼에 일단 격납하여 처리 하는 등의 장황한 지연처리를 방지할 수 있다.
그리고, 청구항 1의 발명에 의하면, 신호처리의 실행중에 있어서, 회로 구성 변경 요구가 있었을 때에는, 처리 데이터 단위에서의 소프트웨어 신호처리가 종료한 후, 다음의 처리 데이터 단위의 선두까지, 변경후의 회로 구성 정보를 회로 구성 정보 격납 관리부에 기억시킴과 동시에 신호처리 결정수단을 실행하여 새로운 신호처리순서를 탐색하고, 신호처리 실행수단은, 새로운 신호처리 순서로 상기 신호처리를 실행한다.
이 경우, 회로 구성의 변경 시점은, 어떤 처리 데이터 단위와, 다음의 처리 데이터 단위와의 사이이며, 변경 후의 회로 구성에 의한 신호처리는, 상기 다음의 처리 데이터 단위의 선두부터 개시되어, 처리 데이터 단위의 도중은 아니므로, 처리 데이터 단위의 신호에 있어서는, 변경 전의 회로 구성에 의한 처리 결과와, 변경 후의 회로 구성에 의한 처리 결과가 혼재하는 경우 없으며, 루프를 포함하는 구성이라도 어떠한 지장 없이 신호처리가 계속된다.
이상과 같이, 청구항 1의 발명에 의하면, 신호처리동작중이어도, 신호출력을 중단함 없이, 회로 구성을 변경할 수 있으며, 변경한 회로 구성에 의해, 신호처리 동작을 계속할 수 있다.
[발명의 실시하기 위한 최선의 형태]
이하, 본 발명에 의한 신호처리장치의 실시예를, 도면을 참조하면서 설명한다. 이하에 설명하는 실시예의 신호처리장치는, 복합 플러그인 시스템으로서 구성 되는 것이지만, 종래의 이런 종류의 것에 비해 뛰어난 특징을 가지는 것이다.
즉, 현재 존재하고 있는 복합 플러그인 시스템에는, 이하와 같은 몇가지의 결점이 있다.
(a) 플러그인을 다단으로 결선하면 처리 지연(레이텐시(latency))이 비례해서 증대한다.
(b) 플러그인 간의 결선에 제한이 있어, 피드백 루프의 결선을 할 수 없다.
(c)신호처리 동작 중에 플러그인 간의 결선 상태를 변경할 수 없다.
(d) 처리속도가 느리기 때문에 많은 기능을 리얼 타임으로 실행하는 것은 곤란하다.
(e)음성과 화상의 동기나 파라미터의 변경에 있어서 샘플 정밀도의 제어가 불가능하다.
(f) 한 대의 컴퓨터 상에서 폐회로의 형태에서만 신호 처리할 수 있다.
지금까지 상기 결점을 부분적으로 해결하는 미들웨어는 몇가지 존재하지만, 모든 결점을 동시에 해결할 수 있는. 미들웨어는 존재 하지 않는다. 왜냐하면, 상반하는 문제(어느 하나의 문제를 해결하면 다른 문제에 악영향을 주는 문제)를 포함하고 있기 때문이다. 예를 들면 상기 (b)와 (d)를 동시에 해결하는 것은 매우 어렵다.
이들의 결점이 존재함으로써, 종래의 미들웨어의 제품으로의 조립에 있어서 치명적인 장벽이 되는 경우도 적지 않다.
이하에 설명하는 신호처리장치는, 상기 결점을 해결 할 수 있는 것으로서 구 성되어 있다.
본 발명에 의한 신호처리장치의 실시예는, 범용신호 처리 미들웨어로서, 이하,이 미들웨어를 SSP(Software Signal Processor)라 부른다. 또, 이하의 실시예의 설명에 있어서는, 신호처리로서 음성신호처리의 경우를 예로 취한다.
SSP는, 도 2에 나타내는 바와 같이, 범용 OS(Operating System)와, 어플리케이션 소프트 웨어 사이에 위치하는 것으로, 어플리케이션은, SSP를 이용함으로써, 용이하게 고도한 신호처리기능을 실현할 수 있다. 또한 SSP는 GUI(그래픽컬 User Interface)를 가질 필요가 없는 미들웨어이므로, 표시 장치를 가지지 않는 조립기기용의 신호처리 엔진용으로서도 이용할 수 있다.
[실시예의 신호처리장치의 개요]
본 발명에 의한 신호처리장치의 실시예의 SSP는, 그래프 구조를 가지는 미들웨어이며, 기본적으로는 하나의 컴퓨터로 실현되지만, 나중에 설명한 바와 같이, 네트워크를 거쳐 접속된 복수대의 컴퓨터에 있어서, 실현할 수도 있다.
SSP로서의 실시예의 신호처리장치는, 이 예에 있어서는, 소프트 웨어로 구성되는 그래프 모듈(이하, 단순히 그래프라고 한다)과, 소프트 웨어로 구성되는 플러그인 모듈(이하, 단순히 플러그인이라고 한다)의 2대 요소에 의해 구성되어 있다.
플러그인 모듈은, 신호처리의 단위요소, 예를 들면 필터, 이퀄라이저, 게인 제어 등을 실행하는 신호처리 모듈(소프트 웨어)이다.
플러그인은, 이 예에서는, 복수의 입력 포트 및 복수의 출력 포트를 가지는 것이 가능하며, 입력 포트로부터 입력된 음성신호에 대하여, 이 플러그인 고유의 신호처리를 실시하여, 출력 포트로부터 출력하는 역할을 갖는다.
플러그인의 출력 포트를 다른 플러그인의 입력 포트에 접속(하드웨어적으로 결선 접속되는 것이 아닌, 어떤 플러그인의 출력 신호가, 다른 플러그인에 입력되는 것을 의미하는 가상적인 접속 상태가 되는 것. 이하, 단순히 접속이라고 기술함)함으로써, 복수개의 플러그인을 접속하고, 복합적인 신호처리기능을 실현하는 것이 가능하다. 여기에서, 플러그인은, 입력 포트와 출력 포트의 조합에 의해서만 접속할 수 있으며, 입력 포트 끼리나 출력 포트 끼리를 접속할 수는 없다.
그래프는, SSP의 시스템으로서의 역할을 담당하는 부분이며, 복수의 플러그인을 포함하는 역할을 갖는다. 그리고, 그래프는, 사용자로부터의 조작 입력을 받아, 플러그인의 생성, 삭제, 포트 간 결선을 행하고, 그 결과의 회로 구성 정보를 유지한다. 따라서, 그래프 내부에는, 플러그인으로 이루어지는 임의의 회로를 구성할 수 있다.
그리고, 그래프는 이 그래프의 신호처리함수가 콜 되면, 자기가 받은 시각정보가 있는 음성 데이터를 내포하는 플러그인에 순차적으로 건낸다. 플러그인에 음성 데이터나 부수 정보의 입출력을 행하는 것도 그래프의 역할이다.
또, 그래프는, 플러그인의 성질을 가지고 있다. 이 때문에, 그래프는, 플러그인과 마찬가지로 입출력 포트를 가지고, 다른 플러그인과 서로 접속할 수도 있다. 그리고, 그래프는 복수의 플러그인을 포함할 수 있기 때문에, 그래프를 작성함으로써, 복수의 플러그인으로 이루어지는 회로 블럭(그래프)을 하나의 플러그인으로서 취급할 수 있다. 이 경우의 플러그인으로서 취급되는 그래프는, 복수의 회 로를 정리하여 하나의 부품으로서 취급할 수 있는 역할을 담당하게 된다.
[그래프의 예]
도 3에, 내부에 복수개의 플러그인을 포함하는 그래프의 일 예를 도시한다. 또, 실시예의 신호처리장치에서는, PC로 구성할 수 있고, 사용자의 입출력을 접수하여, 이 PC의 표시부에, 사용자 지시에 따라, 그래프나 플러그인, 그것들의 접속 상태를 그래픽 표시할 수 있게 된다.
이 도 3의 예에서는, 사용자는, 우선, 최초에 기본이 되는 루트 그래프(200)를 만들고나서, 이 그래프(200)내에, 복수의 플러그인(201∼204)으로 이루어지는 회로를 작성하도록 한다. 플러그인(201∼204)의 각각은, 미리, PC에 격납되어 있는 것을 선택하여 사용할 수 있다. 여기에서 말하는 격납 상태라 함은 오브 젝 지향된 클래스라는 템플리트 상태로서, 아직 실제 오브젝은 생성되고 있지 않은 상태를 나타낸다.
사용자는, 예를 들면 플러그인(201∼204)의 각각을, PC의 격납부에 격납되어 있는 플러그인으로부터 선택하여, 그래프(200)내에 동적으로 생성(설치)한다. 여기에서 처음에 오브젝 지향된 오브젝이 생성된다. 그리고 사용자는, 플러그인(201∼204)의 출력 포트와 입력 포트와의 결선, 또한 그래프(200)와, 플러그인(201∼204)과의 결선 등의 지시를 하여, 도 3에 나타나 있는 바와 같은 회로를 구성한다.
그래프(200)는, 내부의 플러그인(201∼204)의 회로 구성 정보를 유지한다. 그리고, 사용자가, 루트 그래프(200)의 신호처리함수를 1회 콜 하는 것 만으로, 루트 그래프의 신호처리 함수 내에서, 순서대로, 내포하는 플러그인의 신호처리함수 가 재귀적으로 콜 되고, 신호처리에 관한 계산 처리가 수차 행해지게 된다. 이 재귀적인 신호처리함수 콜 전파는, SSP시스템 그 자체이다.
도 4는, 내부에 복수개의 플러그인을 포함하는 그래프의 다른 예를 도시한다. 전술한 바와 같이, 그래프는, 플러그인이기도 한다. 따라서, 그래프는, 내부에 그래프이외의 플러그인과, 그래프 자신(자(子)그래프)을 포함할 수 있는 재귀적인 구조를 취할 수 있다. 또한 다른 플러그인과 마찬가지로 입출력 포트도 가지고 있다. 그래프의 내부는, 그래프 외에서 보면 블랙 박스가 되고 있다. 그래프 내부에는, 복수의 플러그인으로 이루어지는 회로 블럭이 형성되고 있다.
도 4에 있어서, 그래프(400)가 친(親)그래프이다. 이 친그래프(400)의 내부에, 자그래프의 그래프(401)와 플러그인(405)을 유지하고 있다. 또한, 자그래프(401)는 내부에 플러그인(402), 플러그인(403), 플러그인(404)을 유지하고 있다. 친그래프(400)로부터는, 자그래프(401) 내부의 플러그인(402), 플러그인(403), 플러그인(404)은 보이지 않고, 자그래프(401)가 하나의 플러그인으로서 보이게 된다.
사용자는, 우선, 최초에, 루트가 되는 루트 그래프(친그래프(400))를 하나 만든다. 사용자는, 이 루트 그래프(400)의 플러그인 생성삭제함수를 호출하는 것으로, 루트 그래프 내부에 자그래프(401)나 플러그인(405)을 생성 할 수 있다.
또한, 사용자는, 자그래프(401)의 플러그인 생성삭제함수를 호출하는 것으로, 마찬가지로, 플러그인(402), 플러그인(403), 플러그인(404)을 생성할 수 있다.
신호처리실행을 행하기 위해서는, 사용자는, 우선, 이 루트 그래프(400)의 신호처리함수를 콜 한다. 그러면, 루트 그래프(400)의 신호처리함수 내에서 순서 대로 내포하는 플러그인으로서의 자그래프(401), 플러그인(405)의 신호처리함수가 재귀적으로 콜 되어, 계산 처리가 수차 행해지게 된다. 재귀적인 신호처리함수 콜의 순서를 결정하는 것도 그래프 기능이다.
자그래프(401)에서는, 이 자그래프(401)의 신호처리함수가 최초로 콜 된다. 그리고 상기 자그래프(401)의 신호처리함수 내에서, 순차적으로 내포하는 플러그인(402, 403, 404)의 신호처리 함수가 재귀적으로 콜되고, 계산 처리가 차차 행해지게 된다.
SSP시스템이라 함은, 이상과 같은 그래프의 역할 그 자체이다. 플러그인의 생성삭제 처리, 플러그인 간의 결선 처리, 플러그인 간의 데이터 교환 처리, 플러그인에 대한 시각 정보·음성 정보와 영상 정보와의 동기 부여 처리, 각 플러그인의 신호처리함수의 순차 호출과 그 호출 순의 결정 등, 시스템에 필요한 기능을 이 그래프라는 플러그인 자체가 처리하고 있다.
이하 설명에 있어서, 시스템이라는 단어를 사용할 경우에 있어서의 이 「시스템」이라는 말은, 그래프 그 자체 및 그래프가 가지는 기능을 가리킨다.
도 5는, 실시예로서의 SSP미들웨어의 전체 구조를 나타내는 UML(Unified Modeling Language) 클래스 도면이다. 오브젝 지향으로 표현하고 있고, 클래스와 인터페이스(API(Application Programming Interface))가 정의되고 있다.
플러그인 클래스(Cplugin)는, 플러그인 인터페이스(IPlugin)를 계승하고 있고, 플러그인 고유의 인터페이스를 실장하는 것이다. 플러그인 클래스는, 복수의 입력 포트 클래스(CInputPort) 및 출력 포트 클래스(COutputPort)를 유지하고 있 다.
또 플러그인 클래스는, 그 역할에 따라 복수의 종류가 존재하고 있다. 예를 들면, 덧셈을 행하는 플러그인 클래스는, 애더 플러그인(Adder Plugin) 클래스 이며, 곱셈을 행하는 플러그인 클래서는, 멀티플라이어 플러그인(Multiplier Plugin) 클래스이다. 이들의 클래스는 사용자 자신의 플러그인(CMyPlugin) 클래스로서 분류된다. 사용자 자신의 플러그인 클래스는 플러그인 클래스를 계승하고 있다. 이 예의 미들웨어 사용자는, 플러그인 템플리트를 사용함으로써, 용이하게 사용자 자신의 플러그인을 작성할 수 있다.
다음에 그래프 클래스에 관하여 설명한다. 그래프 클래스(CGraph)는, 복수의 플러그인 클래스를 포함하는 것이다. 그래프 클래스도 플러그인 클래스와 같이 플러그인 인터페이스(Plugin Interface(IPlugin))를 계승하고 있고, 그래프 클래스 자체도 플러그인 클래스의 하나이다.
그 때문에 그래프 내부에 또 다른 그래프, 플러그인을 포함한다는 재귀적인 계층 구조를 구성할 수 있다. 이것은, 일반적인 오브젝 지향 설계방법인「디자인 패턴」의 콤포지트 패턴(Composite Pattern)이라 불리는 구조에 상당한다.
또한, 그래프는 플러그인의 성질도 겸비하고 있기 때문에, 다른 플러그인과 같이 입축력 포트를 가지고, 다른 플러그인과 서로 결선할 수 있다. 그래프 오브젝을 구성함으로써, 복수의 플러그인 오브젝으로 이루어지는 회로 블럭을 하나의 부품 오브젝으로서 취급할 수 있다.
그래프 클래스, 플러그인 클래스와 함께, 인터페이스(API)가 정의되고 있으 며, SSP미들웨어의 클라이언트가 되는 어플리케이션으로부터는, 이 API를 콜 함으로써, 이 오브젝을 제어 할 수 있다. 사용자가 SSP시스템에 대하여 행하는 조작이라 함은, 이 2개의 오브젝에 대한 조작을 말한다.
[플러그인의 구성에 대하여]
도 6은, 플러그인의 구성의 일례를 도시한 도면이다. 상기한 바와 같이, 플러그인은, 소프트 웨어 신호처리 모듈이므로, 이 도 6의 구성의 각부는, 하드웨어로서 구비되는 것이 아닌, 소프트 웨어의 기능으로서 구비하는 것이다.
도 6에 나타내는 것과 같이, 플러그인(600)은, 신호처리부(601)를 구비함과 동시에, 0개 이상의 입력 포트(602)와, 0개 이상의 출력 포트(603)를 갖는 것이 가능하며, 이 입력 포트(602) 및 출력 포트(603)를 지나, 다른 플러그인과 신호의 주고 받음, 이 예에서는 음성 데이터의 주고 받음을 할 수 있다. 이 예에 있어서는, 1포트 당 1채널 분의 음성 신호를 입출력한다.
플러그인(600)에 대하여 입력 포트(602) 및 출력 포트(603)의 추가·삭제를, 사용자가 지시함으로써, 플러그인(600)이 가지는 입력 포트(602) 및 출력 포트(603)의 수를 신호 처리중이라도 동적으로 변경할 수 있도록 구성되어 있다. 입력 포트(602) 및 출력 포트(603)에는, 추가한 순서에 의해 0∼N(N은 임의인 자연수) 및 0∼M(M은 임의의 자연수)의 식별 번호가 부여되고, 사용자는, 이 식별 번호에 의해, 입력 포트(602)의 하나 및 출력 포트(603)의 하나를 지정할 수 있다.
또한, 플러그인(600)은, 내부에 0개 이상의 파라미터 지지부(파라미터 버퍼)(604)를 구비하고, 이 파라미터 지지부(604)에 0개 이상의 파라미터를 가지는 것 이 가능하다. 여기에서, 파라미터라 함은, 신호처리에 있어서의 효과량 등을 설정하는 가변값이며, 사용자에 의해 입력 설정된다. 예를 들면 플러그인(600)가 앰프인 경우를 예로 들면, 증폭 게인 값 등이 그것에 상당한다. 플러그인(600)을 사용하는 사용자는, 플러그인(600)의 파라미터 값을 변경함으로써, 신호처리의 효과를 바꿀 수 있다.
이 예에서는, 파라미터에는, 0∼K(K는 임의의 자연수)의 식별 번호가 할당되어 있다. 사용자는, 임의의 파라미터의 식별 번호를 지정함으로써, 임의의 타이밍으로 파라미터 버퍼의 내용을 변경할 수 있다. 플러그인(600)의 기구로서, 사용자로부터 부여된 파라미터는, 일단, 플러그인(600) 내부의 파라미터 버퍼(604)에 유지된다. 그리고, 시스템(그래프)으로부터 부여되는 샘플 데이터에 동기한 시각 정보에 의거하여 파라미터가 판독되고, 신호처리부(601)에 보내져, 그 신호처리에 이용된다.
또, 플러그인(600)에는, 시각 정보의 레지스터부(605)를 구비하고, 이 레지스터부(605)에는, SSP시스템(그래프를 말한다)으로부터, 항상, 시각 정보가 입력되어 있다. 이 시각 정보라 함은, SSP시스템을 개시한 시점(그래프의 신호처리함수를 개시한 시점)을 기점으로 하는 음성 입출력 데이터 샘플의 적산 카운터수이다. 이 적산 카운터수가 SSP시스템에서 가장 기본이 되는 시각 정보이다.
이 실시예의 SSP시스템에서는, 시각 정보와 음성 입출력 데이터는 완전히 동기하고 있다. 즉, SSP시스템은, 플러그인(600)에 대하여 음성 데이터와 동시에 시간 정보를 부여한다. 따라서, 시각 정보는, 플러그인(600)에 입력되는 음성 데이 터의 데이터 샘플의 타임 스탬프의 역할을 담당하고 있다. 이 때문에, 플러그인(600) 자체는, 이제부터 신호처리의 대상이 되는 입력 데이터가, 절대 시각에서 몇번 째 샘플인가라는 상세한 시각 정보를 알 수 있다. SSP시스템 내에 존재하는 모든 플러그인은, 이 절대 시각을 참조하여 동기하고 있기 때문에, SSP시스템 내의 회로전체로서, 샘플 정밀도의 동기신호 처리를 실현할 수 있다.
플러그인(600)은, 내부에 신호처리부(601)를 가지고 있다. 다른 플러그인으로부터 입력된 음성 데이터는, 입력 포트(602)를 통해서 신호처리부(601)로 보내진다. 신호처리부(601)에서는, 입력 포트(602)로부터 얻은 음성 데이터에 대하여, 시각 정보나 신호처리부(601)로 보내져 온 파라미터 값을 참조하면서, 그 플러그인 고유의 신호처리를 실시한다. 신호처리부(601)에서 처리된 음성 데이터는, 출력 포트(603)를 거쳐 다른 플러그인에 송신된다.
플러그인(600)에서의 신호처리는, 시각 정보에 동기함으로써, 1샘플 단위 뿐만아니라, 복수 샘플 단위, 예를 들면 복수 샘플로 이루어지는 패킷 단위로 행할 수 있다. 플러그인에서는, 처리데이터 단위 마다, 신호처리함수의 콜을 행한다. 따라서, 패킷 단위로 신초 처리를 할 경우에는, 신호처리함수의 콜이 1패킷에서 1회가 되고, 함수 콜이 적어지는 분 만큼, 신호처리속도가 빨라진다.
또 본 실시예에서는, 음성 데이터와 함께 영상 데이터를 처리하는 경우에 있어서, 음성 데이터의 처리를, 영상 데이터의 영상 프레임에 동기(이하, AV동기라고 한다) 시킬 수 있도록 되어 있다. 이 AV동기처리에 대해서는, 나중에 상세한 설명하지만, 음성 데이터의 처리를, 영상 데이터의 영상 프레임에 동기시키도록 할 경우에는, 시스템으로부터, 시각 정보와 함께, 영상 데이터의 수직동기정보 Vs를 플러그인(600)에 보내도록 한다.
그리고, 플러그인(600)에서는, 시스템으로부터의 시각 정보에 동기하는 수직동기정보 Vs를 체크하여, 수직동기정보 Vs의 타이밍이라고 판별했을 때, 영상과 음성 사이에 동기를 취하는 처리, 예를 들면 파라미터 버퍼(604)로부터 신호처리부(601)에 보내는 파라미터의 변경처리를, 이 수직동기정보 Vs의 타이밍에 동기하여 행한다. 이 구조에 의해, 그래프내에 구성된 회로 내의 모든 플러그인의 모든 파라미터가, 수직동기정보 Vs에 동기하여 동시에 갱신되고, AV동기가 취해진다.
[그래프의 구성예]
도 7은, 그래프의 일 예를 도시하는 구성도이다. 상기한 것과 같이, 그래프는, 소프트 웨어 처리 모듈이므로, 이 도 7에 있어서의 그래프(700)의 구성의 각 부는, 하드웨어로서 구비하는 것이 아닌, 소프트 웨어의 기능으로서 구비하는 것이다.
상술과 같이, 그래프는 플러그인으로서의 성질도 가지는 것이며, 신호처리부(701)와, 입력 포트(702)와, 출력 포트(703)와, 파라미터 버퍼(704)와, 시각 정보의 레지스터부(705)를 구비하고 있다. 신호처리부(701)는, 이 그래프내에 포함되는 플러그인을 판독하는 처리를 행하는 것이다. 입력 포트(702)와, 출력 포트(703)와, 파라미터 버퍼(704)와, 시각 정보의 레지스터부(705)의 기능은, 도 6을 이용하여 설명한 플러그인(600)의, 대응하는 부위와 같으므로, 여기에서는, 그 설명은 생략한다. 또, 파라미터 버퍼(704)의 파라미터는, 그래프(700)에 대한 파라 미터인 것은 말할 필요도 없다.
다음에 그래프 특유의 기능에 관하여 설명한다.
그래프(700)는, 내부에 플러그인 생성·유지부(706)를 구비하고 있다. 그래프(700)는, 0개 이상의 플러그인을 내부에 포함할 수 있다. 사용자는, 그래프에 대하여 플러그인의 추가·삭제를 지시함으로써, 신호처리 중에도 동적으로 플러그인의 생성·삭제할 수 있다. 신호처리 중 동적인 플러그인의 생성·삭제에 관해서는 나중에, 상세히 설명한다.
그래프(700)에 있어서는, 생성한 플러그인에는 추가한 순서에 의해 0∼J(J는 임의의 자연수)의 식별 번호가 부여된다. 이 때문에, 사용자는, 이 식별 번호에 의해 플러그인을 식별 할 수 있다. 단, 그래프(700)는, 플러그인 생성·유지부(706)에는, 이 식별 번호의 순서로 플러그인을 유지하고 있는 것은 아니다. 그래프(700)내의 플러그인은, 후술하는 순차 계산 순서로 소트된 상태에서, 플러그인 생성·유지부(706)에 유지하고 있다.
사용자는, 그래프(700)에 대하여, 이 그래프(700)가 내포하는 플러그인 간의 결선도 지시할 수 있다. 임의의 플러그인의 출력 포트와 임의의 플러그인의 입력 포트의 결선 상태를, 신호처리 중에도 동적으로 변경하는 것이 가능하다. 이들은, 사용자가 그래프(700)에 대하여 플러그인의 식별 번호와 포트의 식별 번호를 지정함으로써 실행 할 수 있다. 그래프(700)는, 사용자로부터의 결선 변경 지시에 의해, 플러그인의 결선 상태를 변경하는 처리를 행한다.
사용자는, 그래프(700)에 대하여, 신호처리의 개시를 지시한다. 사용자가, 그래프(700)의 신호처리함수를 콜 하면, 그래프(700)의 신호처리함수 내에서 순서대로, 이 그래프(700)가 내포하는 플러그인의 신호처리함수가 재귀적으로 콜 된다. 신호처리함수가 콜되면, 플러그인 생성·유지부(706)에, 순차 계산 순서의 순서로 소트된 상태로 유지되고 있는, 그래프(700)가 내포하는 그래프나 플러그인의 신호처리부가, 상기 순차 계산 순서에 따라, 순차로 실행 처리된다. 그래프(700)가 내포하는 그래프나 플러그인의 계산처리가 차차 행해짐으로써, 그래프(700)내에 구성된 회로 전체의 복합적인 신호처리가 실현된다. 이 순차 계산 순서는, 플러그인 간의 결선 구조에 의해, 시스템(그래프(700))이 결정한다.
사용자의 지시에 의해 플러그인의 추가·삭제·입력 포트·출력 포트의 결선 상태의 변경 등, 회로 상태에 변경이 있을 경우, 그래프(700)는, 후술하는 경로 탐색을 실행함으로써, 자기가 내포하는 플러그인 및 자그래프에 대해서 최적인 순차 계산 순서를 자동적으로 구한다. 자그래프가 내포하는 플러그인에 대한 최적의 순차 계산 순서는, 이 자그래프가, 경로 탐색을 실행함으로써 자동적으로 구한다.
상기의 그래프에서 행해지는 경로 탐색의 결과, 플러그인 생성·유지부(706)의 플러그인 군(플러그인으로서의 자그래프를 포함한다)은, 이 최적인 순차 계산 순서의 순서로 소트된 상태로 유지되고 있다. 그래프가 구비하는 경로 탐색의 알고리즘에 대해서는, 나중에 상세하게 설명한다.
[그래프의 기능 블럭도]
도 1은, 그래프가 구비하는 기능을 블럭화하여 나타낸 그래프의 구성의 기능 블럭도이다. 즉, 그래프는, 지시 입력 접수 기능부(1)와, 플러그인 생성 삭제 기 능부(2)와, 플러그인 간 결선 처리 기능부(3)와, 회로구성 정보 격납 관리 기능부(4)와, 경로 탐색 기능부(5)와, 신호처리 순서 관리 기능부(6)와, 신호처리 실행 기능부(7)와, 신호처리 함수 격납부(8)와, 회로구성 변경 기능부(9)를 구비한다.
지시입력 접수 기능부(1)는, 사용자로부터의 플러그인 생성 혹은 삭제지시, 입출력 포트의 결선 지시, 파라미터 입력 지시 등을 접수, 플러그인 생성 또는 삭제 지시는 플러그인 삭제 기능부(2)에 넘기고, 입출력 포트의 결선 지시는, 플러그인 간 결선 처리 기능부(3)에 넘긴다. 또한 플러그인 생성 혹은 삭제지시, 또한 입출력 포트의 결선 지시가 있으면, 지시 입력 접수 기능부(1)는, 경로 탐색 기능부(5)를 기동시키고, 경로 탐색을 실행시키도록 한다. 또한 지시 입력 접수 기능부(1)는, 파라미터 입력 지시를 접수했을 때에는, 파라미터 버퍼에 입력된 파라미터를 유지하는 기능을 구비하고 있다.
플러그인 생성 삭제 기능부(2)는, 지시 입력 접수 기능부(1)로부터의 플러그인 생성 혹은 삭제 지시를 받아, 플러그인의 생성 혹은 삭제 처리를 행한다. 즉, 플러그인 생성시에는, 생성된 플러그인에 식별 번호를 부여하고, 회로 구성 정보 격납 관리부(4)에, 이 식별 정보를 포함하는 플러그인의 생성정보를 넘긴다. 또한 플러그인 삭제 시에는, 삭제된 플러그인의 식별 번호와, 그 삭제 의뢰를 포함하는 삭제정보를 회로 구성 정보 격납 관리 기능부(4)에 넘긴다.
플러그인 간 결선 처리 기능부(3)는, 지시 입력 접수 기능부(1)로부터의 플러그인 간 결선 지시를 받아, 상기 결선지시에 의해 지정된 플러그인의 출력 포트와 입력 포트와의 결선 정보를 회로 구성 정보 격납 관리 기능부(4)에 넘긴다.
회로 구성 정보 격납 관리 기능부(4)는, 플러그인 생성 삭제 기능부(2)나 플러그인 간 결선 처리 기능부(3)로부터의 플러그인의 생성 정보, 삭제정보, 결선정보로부터, 그래프내에 구성된 회로 정보를 기억하고, 관리한다.
경로 탐색 기능부(5)는, 지시 입력 접수 기능부(1)로부터의, 플러그인 생성 혹은 삭제 지시, 또는 입력 포트의 결선지시에 근거하는 기동 의뢰를 받아, 후술하는 경로 탐색의 알고리즘을 기동하여 실행한다. 이 경로 탐색의 알고리즘의 실행 결과, 정해진 플러그인의 순차 계산 순서(신호처리순서)의 정보를, 신호처리 순서 관리 기능부(6)에 보낸다.
신호처리 순서 관리 기능부(6)는, 전술한 바와 같이, 플러그인 생성·유지부에, 이 신호처리 순서의 순서로 플러그인의 식별 정보를 나열하여 유지하도록 한다.
신호처리 실행 기능부(7)는, 도 1에 나타나 있는 바와 같이 데이터 주고 받는 처리부(71)와, 신호처리함수 호출부(72)와, 신호처리 시각 관리부(73)와, 신호처리 동기 관리부(74)를 구비하고 있다.
신호처리 실행 기능부(7)는, 지시 입력 접수 기능부(1)를 통해 입력되는 신호처리 개시 지시에 의거하여, 그래프내에 구성된 회로에 의한 신호처리를 개시한다. 사용자가, 그래프(700)의 신호처리함수의 콜을 지시하면, 신호처리 함수 호출부(72)가, 신호처리 함수 격납부(8)로부터 지시된 그래프의 신호처리함수를 판독한다. 신호처리 함수 호출부(72)는, 그래프의 신호처리함수는, 사용자 지시에 의해 판독을 행하지만, 그래프 내의 각 플러그인의 신호처리함수는, 상기 그래프의 신호 처리함수 내에서 순서대로, 각각의 플러그인의 신호처리함수를 재귀적으로 호출한다.
그리고, 신호처리 실행 기능부(7)의 데이터 주고 받는 처리부(71)는, 회로 구성 정보 격납 관리 기능부(4)의 격납 회로 정보를 참조하여, 회로 구성에 따라, 이 예에서는, 음성 데이터를 순서대로 처리 데이터 단위마다(예를 들면 1샘플 단위 혹은 1패킷 단위) 플러그인에 넘기도록 한다.
신호처리 시각 관리부(73)는, 이 데이터 주고 받는 처리부(71)에 의한 데이터 샘플 단위의 시각을 관리한다. 신호처리 동기 관리부(74)는, 패킷 단위의 신호처리시의 패킷 동기처리(예를 들면 패킷의 선두 관리)나, 전술한 음성 데이터의 처리 타이밍을, 영상 데이터의 프레임에 동기시키는 AV동기 등을 관리한다.
회로 구성 변경 관리부(9)는, 신호처리 실행 기능부(7)에 있어서 신호처리를 실행하는 도중에 있어서, 지시 입력 접수 기능부(1)를 통한 사용자 조작에 근거하는 회로 구성 변경 요구를 검출하여, 회로 구성 변경 요구가 있을 때에는, 어떤 처리 데이터 단위의 신호처리 종료 시점부터, 다음의 처리 데이터 단위의 신호의 선두까지에 있어서, 변경후의 회로 구성 정보를, 회로 구성 정보 격납 관리부(4)에 기입하고, 회로 구성 정보를 변경후의 것으로 변경함과 동시에, 경로 탐색 기능부(5) 및 신호처리 순서 관리 기능부(6)를 기동한다.
경로 탐색 기능부(5)는, 신호처리 실행 기능부(7)에 의한 신호처리 중이라도, 회로 구성 변경 기능부(9)로부터의 그래프내의 회로 구성의 변경 요구 지시 및 지시 입력 접수부(1)로부터의 플러그인 생성 또는 삭제지시, 또한 입출력 포트의 결선지시에 의거한 기동 의뢰를 받아, 후술하는 경로 탐색의 알고리즘을 기동하고, 변경된 회로 구성에 관한 경로 탐색을 실행하여, 그 탐색 결과를 회로 구성 정보 격납 관리 기능부(4) 및 신호처리 순서 관리 기능부(6)에 전달한다. 이에 따라, 신호처리 실행 기능부(7)는, 그 후, 변경된 회로 구성에 있어서, 변경 후의 경로 탐색 결과에 의거한 신호처리순서로 신호처리가 실행된다.
이 실시예에서는, 회로구성 변경 관리부(9)는, 신호처리 실행 기능부(7)에 의해 신호처리의 실행 중에 있어서의 지시 입력 접수 기능부(1)를 통한 사용자로부터의 플러그인 생성 또는 삭제 지시 또는 입출력 포트의 결선 지시를, 회로 구성 변경 요구로서 검출한다. 이 회로 구성 변경 요구에 대응하여 실행되는 회로 변경 처리에 대해서는 후술한다.
[그래프 구조를 가지는 회로작성 처리]
다음에 본 발명의 실시예에 의한 신호처리회로의 작성 처리의 흐름을, 도 8의 회로 구성을 그래프 내에 작성하는 경우를 예로 들어서 설명한다. 이하의 설명에 있어서는, 그래프나 플러그인을 총칭해서 오브젝이라 부른다. 오브젝이라 함은, 오브젝 지향에 있어서의 인스턴스를 가리키며, 그래프나 플러그인의 실체 그 자체이다.
오브젝 생성시의 각 그래프나 각 플러그인의 디폴트 입출력 포트수(초기값)는 다음과 같다. 또, 사용자는, 오브젝 생성 후에 입력 포트 및/ 또는 출력 포트를 추가 또는 삭제하는 것이 가능하다.
친그래프 800 : 입력 포트수 0, 출력 포트수 0
플러그인 801 : 입력 포트수 0, 출력 포트수 1
플러그인 802 : 입력 포트수 1, 출력 포트수 0
자그래프 803 : 입력 포트수 1, 출력 포트수 1
플러그인 804 : 입력 포트수 1, 출력 포트수 1
플러그인 805 : 입력 포트수 2, 출력 포트수 2
플러그인 806 : 입력 포트수 1, 출력 포트수 1
또, 이하의 설명에 있어서, 입력 포트 및 출력 포트의 뒤의 숫자는, 포트 번호이며, 0, 1, 2가 사용되고 있다.
[회로작성순서]
다음에 도 8의 회로의 작성 순서를, 도 9 ∼ 도 12의 흐름도를 참조하면서 설명한다. 또, 도 9 ∼ 도 12는, 설명의 이해를 쉽게 하기 위해서, 사용자의 지시와, 실시예의 신호처리장치에 있어서의 처리를 대응하도록 하여 나타낸 것이다. 도시는 생략하고 있지만, 실시예의 신호처리장치는, 표시 화면에, 사용자의 지시 입력에 따른 표시를 행하는 것으로, 사용자는, 그 표시화면을 보면서 조작 입력을 할 수 있는 것이다.
우선, 사용자는, 그래프(800)(친그래프)의 오브젝의 작성 지시를 한다(사용자 지시(1)). 그러면 신호처리장치에서는, 루트 오브젝으로서, 친그래프(800)를 생성하고, 등록한다(스텝 S1O1).
다음에 사용자는, 그래프(800)의 오브젝에 대하여 플러그인(801) 오브젝의 작성을 지시한다(사용자 지시(2)). 그러면, 신호처리장치에서는, 작성된 그래프 (800)의 플러그인 생성 삭제 기능에 의해, 그래프(800)내에 플러그인(801)이 생성되어 등록된다(스텝 S102). 그래프(800)내의 경로 탐색 기능부는, 이 플러그인의 생성 지시에 의거하여, 경로 탐색을 실행한다(스텝 S103).
다음에 사용자는, 그래프(800)의 오브젝에 대하여 플러그인(802) 오브젝의 작성을 지시한다(사용자 지시(3)). 그러면, 신호처리장치에서는, 그래프(800)의 플러그인 생성 삭제 기능에 의해, 그래프(800)내에 플러그인(802)이 생성되어 등록된다 (스텝 S1O4). 그래프(800)내의 경로 탐색 기능부는, 이 플러그인의 생성 지시에 의거하여, 경로 탐색을 실행한다(스텝 S105).
다음에 사용자는, 그래프(800)의 오브젝에 대하여 그래프(803) 오브젝(자그래프)의 작성을 지시한다(사용자 지시(4)). 그러면, 그래프(800)에서는, 플러그인 생성 삭제 기능에 의해, 그래프(800)내에 자그래프(803)를 플러그인으로서 생성하여 등록한다(스텝 S106). 그래프(800)내의 경로 탐색 기능부는, 이 플러그인의 생성지시에 의거하여, 경로 탐색을 실행한다(스텝 S1O7).
다음에 사용자는, 그래프(803)의 오브젝에 대하여 입력 포트 0(외(外))의 구성을 지시한다(사용자 지시(5)). 그러면, 신호처리장치에서는, 생성된 자그래프(803)의 기능으로서, 입력 포트 0(외)이 생성되고, 자그래프(803)내에 등록된다(스텝 S111). 그리고, 자그래프(803)에서는, 입력 포트 0(외)에 대응하는 내부의 출력 포트 0(내)을 자동적으로 생성한다(스텝 S112). 그리고 자그래프(803)내의 경로 탐색 기능부는, 이 포트 작성 지시에 의거하여 경로 탐색을 실행한다(스텝 S113).
다음에 사용자는, 자그래프(803)의 오브젝에 대하여, 출력 포트 0(외)의 작성을 지시한다(사용자 지시(6)). 그러면, 신호처리장치에서는, 생성된 자그래프(803)의 기능으로서, 출력 포트 0(외)이 생성되고, 자그래프(803)내에 등록된다(스텝 S114). 그리고, 자그래프(803)에서는, 출력 포트 0(외)에 대응하는 내부의 입력 포트 0(내)를 자동적으로 생성한다(스텝 S115). 그리고, 자그래프(803)내의 경로 탐색 기능부는, 이 포트 작성 지시에 의거하여 경로 탐색을 실행한다(스텝 S116).
다음에 사용자는, 자그래프(803)의 오브젝에 대하여, 플러그인(804) 오브젝의 작성을 지시한다(사용자 지시(7)). 그러면, 자그래프(803)의 플러그인 생성 삭제 기능에 의해, 자그래프(803)내에 플러그인(804)이 생성되어 등록된다(스텝 S117). 자그래프(803)내의 경로 탐색 기능부는, 이 플러그인의 생성 지시에 의거하여 경로 탐색을 실행한다(스텝 S118).
다음에 사용자는, 자그래프(803)의 오브젝에 대하여, 플러그인(805) 오브젝의 작성을 지시한다(사용자 지시(8)). 그러면, 자그래프(803)의 플러그인 생성 삭제 기능에 의해, 자그래프(803)내에 플러그인(805)이 생성되어 등록된다(스텝 S119). 자그래프(803)내의 경로 탐색 기능부는, 이 플러그인의 생성 지시에 의거하여 경로 탐색을 실행한다(스텝 S120).
다음에 사용자는, 자그래프(803)의 오브젝에 대하여, 플러그인(806) 오브젝의 작성을 지시한다(사용자 지시(9)). 그러면, 자그래프(803)의 플러그인 생성 삭제 기능에 의해, 자그래프(803)내에 플러그인(806)이 생성되어 기록된다(스텝 S131). 자그래프(803)내의 경로 탐색 기능부는, 이 플러그인의 생성 지시에 의거하여 경로 탐색을 실행한다(스텝 S132).
다음에 사용자는, 그래프(800)의 오브젝에 대하여, 플러그인(801)의 출력 포트 0와 자그래프(803)의 입력 포트 0(외)의 결선을 지시한다(사용자 지시(10)). 그러면 그래프(800)에서는, 플러그인 간 접속 처리 기능부에 의해, 플러그인(801)의 출력 포트 0과, 자그래프(803)의 입력 포트 0(외)를 결선하여, 이 그래프(800)내에 등록한다(스텝S 133). 그래프(800)내의 경로 탐색 기능부는, 포트 접속 지시에 의거하여, 체결 탐색을 실행한다(스텝 S134).
다음에 사용자는, 그래프(800)의 오브젝에 대하여, 자그래프(803)의 출력 포트 0(외)와 플러그인(802)의 입력 포트 0의 결선을 지시한다 (사용자 지시(11)). 그러면 그래프(800)에서는, 플러그인 간 접속 처리 기능부에 의해, 자그래프(803)의 출력 포트 0(외)과, 플러그인(802)의 입력 포트 0를 결선하고, 이 그래프(800)내에 등록한다(스텝 S135). 그래프(800)내의 경로 탐색 기능부는, 포트 접속 지시에 근거하여, 경로 탐색을 실행한다(스텝 S136).
다음에 사용자는, 자그래프(803)의 오브젝에 대하여, 자그래프(803)의 내부의 출력 포트 0(내)와 플러그인(804)의 입력 포트 0의 결선을 지시한다(사용자 지시(12)) 해. 그러면, 자그래프(803)에서는, 플러그인 간 접속 처리 기능부에 의해, 자그래프(803)의 내부의 출력 포트 0(내)와, 플러그인(804)의 입력 포트 0를 결선하고, 이 자그래프(803)내에 등록한다(스텝 S137). 자그래프(803)내의 경로 탐색 기능부는, 포트 접속 지시에 의거하여 경로 탐색을 실행한다(스텝 S138).
다음에 사용자는, 자그래프(803)의 오브젝에 대하여, 플러그인(804)의 출력 포트 0과 플러그인(805)의 입력 포트 0의 결선을 지시한다(사용자 지시(13)). 그러면 자그래프(803)에서는, 플러그인 간 접속 처리 기능부에 의해, 플러그인(804)의 출력 포트 0과 플러그인(805)의 입력 포트 0를 결선하고, 이 자그래프(803)내에 등록한다(스텝 S141). 자그래프(803)내의 경로 탐색 기능부는, 포트 접속 지시에 의거하여, 경로 탐색을 실행한다(스텝 S142).
다음에 사용자는, 자그래프(803)의 오브젝에 대하여, 플러그인(805)의 출력 포트 1 플러그인(806)의 입력 포트 0과의 결선을 지시한다(사용자 지시(14)). 그러면, 자그래프(803)에서는, 플러그인 간 접속 처리 기능부에 의해, 플러그인(805)의 출력 포트 1과 플러그인(806)의 입력 포트 0을 결선하고, 이 자그래프(803)내에 등록한다(스텝 S143). 자그래프(803)내의 경로 탐색 기능부는, 포트 접속 지시에 의거하여, 경로 탐색을 실행한다(스텝 S144).
다음에 사용자는, 자그래프(803)의 오브젝에 대하여, 플러그인(806)의 출력 포트 0과 플러그인(805)의 입력 포트 1과의 결선을 지시한다(사용자 지시(15)). 그러면, 자그래프(803)에서는, 플러그인 간 접속 처리 기능부에 의해, 플러그인(806)의 출력 포트 0과 플러그인(805)의 입력 포트 1을 결선하고, 이 자그래프(803)내에 등록한다(스텝 S145). 자그래프(803)내의 경로 탐색 기능부는, 포트 접속 지시에 의거하여, 경로 탐색을 실행한다(스텝 S146).
마지막에, 사용자는, 자그래프(803)의 오브젝에 대하여, 플러그인(805)의 출력 포트 0과 자그래프(803)의 내부의 입력 포트 0(내)의 결선을 지시한다(사용자 지시(16)). 그러면, 자그래프(803)에서는, 플러그인 간 접속 처리 기능부에 의해, 플러그인(805)의 출력 포트 0과 자그래프(803)의 내부의 입력 포트 0(내)를 결선하여, 이 자그래프(803)내에 등록한다(스텝 S147). 자그래프(803)내의 경로 탐색 기능부는, 포트 접속 지시에 의거하여 경로 탐색을 실행한다(스텝 S148).
이상의 순서에 의해, 도 8의 회로가, 그래프(800)내에 구성된다. 그리고, 사용자가, 그래프(800)에 대하여, 신호처리 개시의 지시를 행하면, 전술과 같이, 경로 탐색에 의해 정해진 신호처리 순서에 따라, 각 플러그인에서의 신호처리가 순차로 실행된다.
전술한 것과 같이, 이 실시예의 신호처리장치에 있어서는, 사용자의, 상기의 예의 경우 총 16순서는, 그래프 오브젝에 대한 조작이므로, 이 조작시에 회로의 그래프 구조가 변화되므로, 각 순서마다 경로 탐색 알고리즘이, 시스템(그래프)에 의해 자동적으로 실행된다. 그리고, 회로 구성의 생성 처리가 완료되었을 때는, 경로 탐색도 완료하여 신호처리순서도 정해진 상태가 된다.
다음에 도 8의 예에서 작성한 회로의 신호장소실행의 흐름을 설명한다.
그래프(800)내의 플러그인 생성·유지부에는, 경로 탐색 알고리즘에 의해, 최적인 순차 계산 순서로 소트된 상태에서 플러그인이 유지되고 있다. 도 8의 예에 있어서, 미리 최적인 순서로 플러그인이 유지되고 있는 것으로 가정하여, 이하에 신호처리실행의 흐름을 설명한다.
(1)사용자는, 우선, 그래프(800)에 대하여 신호처리의 개시를 지시한다.
(2)그러면, 그래프(800)의 신호처리함수가 실행된다.
(3)다음에 그래프(800)의 신호처리함수 내에서 플러그인(801)의 신호처리함수가 실행된다.
(4)다음에 그래프(800)의 신호처리함수 내에서 자그래프(803)의 신호처리함수가 실행된다.
(4-1) 다음에 자그래프(803)의 신호처리함수 내에서 플러그인(806)의 신호처리함수가 실행된다.
(4-2) 다음에 자그래프(803)의 신호처리함수 내에서 플러그인(804)의 신호처리함수가 실행된다.
(4-3) 다음에 자그래프(803)의 신호처리함수 내에서 플러그인(805)의 신호처리함수가 실행된다.
(5) 다음에 그래프(800)의 신호처리함수 내에서 플러그인(802)의 신호처리함수가 실행된다.
상기의 순서에 있어서, 최초의 그래프(800)에 대한 신호처리의 개시 지시의 순서(1)만이, 사용자의 지시에 의한 것으로, 그 후의 순서(2)∼ (5)는, 그래프(800) 및 자그래프(803)에 의해 자동적으로 실행되는 것이다.
또, 각 플러그인의 신호처리함수 내에서는, 하기의 동작이 행해진다.
(1)입력 포트로부터 입력 데이터를 받는다.
(2)입력 데이터에 대하여 신호 처리를 실시한다.
(3)신호처리한 입력 데이터를 출력 포트에 출력한다.
[실시예의 경로 탐색 알고리즘]
다음에 이 실시예에 있어서, 그래프의 처리기능이 되는 경로 탐색 알고리즘에 대하여 설명한다.
이하에 설명하는 경로 탐색 알고리즘은, 실시예의 시스템의 요부를 구성하는 것으로, 이 경로 탐색 알고리즘에 의해 그래프가 내포하는 플러그인이, 최적인 순서로 소팅된다. 신호처리 시에는, 이 소팅된 순서로, 각 플러그인이 갖는 고유의 신호처리 함수가 순차적으로 호출되어 실행된다.
일반적으로, 신호처리를 DSP(Digital Signal Processor) 등의 신호처리 디바이스로 행할 경우, DSP내부의 ALU(Arithmetic Logical Unit) 등의 연산 회로부에 있어서, 순차적으로 계산 처리를 행함으로써, 원하는 신호 처리를 실현하고 있다. 이 DSP등에 의한 순차 처리 방법은, 이 실시예의 미들웨어의 CPU에 의한 연산에 대해서도 동일하다.
즉, 본 실시예에서는, 부여된 회로를 시그널 플로우 그래프로 간주하고, 그 그래프로부터 순차 계산 순서를 탐색하여, 탐색 결과를 기초로 한 순서로, 순차적으로 계산 처리를 행하도록 한다. 이 실시예의 미들웨어인 SSP는, 이 독자의 경로 탐색 알고리즘을 가지고 있는 것도 특징으로 한다.
이 경로 탐색 알고리즘을 이용함으로써, 피드백 루프를 포함하는 임의의 디지털 회로구성을, 완전히 이뮬레이트 할 수 있다. 또 현실의 하드웨어 회로의 세계에서는 불가능한 동적인 회로 구성의 변경이 실현가능하다.
이 실시예에 있어서, 이 경로 탐색 알고리즘은, 그래프 모양으로 결선된 플러그인으로 이루어지는 회로의 신호처리를 실현하기 위해서, 어느 플러그인으로부 터 순서대로 신호처리 하면 좋을 까 하는 순차 계산 순서를 정하는 알고리즘이다. 여기에서, 경로 탐색의 대상이 되는, 그래프 내에 구성되는 회로는, 피드백 루프 모양의 회로 구성을 포함하고 있어도 좋다
이 경로 탐색 알고리즘은, 그래프가 유지하고 있고, 그래프 안의 플러그인 생성·유지부는 이 경로 탐색 알고리즘을 실행한다.
사용자로부터, 그래프에 대하여, 그래프 구조를 변경하는 조작이 행해진 경우, 그래프 자체가 자동적으로 경로 탐색을 실행하고, 새로운 순차 계산 순서를 구한다. 회로 내에 복수의 그래프가 존재하고 있는 경우에는, 경로 탐색은, 각 그래프 단위로 독립하여 행해지고, 변경이 있었던 그래프만 경로 탐색이 실행된다. 이 경로 탐색은, 매우 단순하기 때문에, 단시간에 완료된다.
이 실시예의 경로 탐색 알고리즘의 상세를 이하에 설명한다.
이 실시예의 경로 탐색 알고리즘에서는, 그래프 모양으로 형성되어 있는 회로의 요소인 플러그인을 노드로 간주한다. 노드라 함은, 그래프 이론에 있어서의 절이 되는 요소를 말한다. 이 실시예에서는, 회로는, 노드 사이가 방향을 가지는 화살표로 결합되는 유향 성분 그래프로 표현할 수 있다. 노드를 향하는 화살표를 노드로의 입력, 노드로부터 밖을 향하는 화살표를 노드로부터의 출력으로 정의한다. 이 실시예의 경로 탐색 알고리즘은, 그래프 모양으로 결선된 노드를 순서대로 둘러싸고, 신호순서를 정해 간다. 이하, 이 실시예의 경로 탐색 알고리즘을 노드 스캔 알고리즘으로 칭한다.
이 노드 스캔 알고리즘은, 경로 탐색의 베이스가 되는 초기 경로 탐색 알고 리즘(프라이머리 노드 스캔 알고리즘)과, 경로의 루프 정보를 가미하는 탐색을 행하는 루프 서치 알고리즘으로 이루어진다.
그리고, 이 실시예에 있어서는, 도 13에 나타나 있는 바와 같이 노드 스캔 알고리즘에 있어서는, 우선, 초기 경로 탐색 알고리즘을 행한다(스텝 S 151). 그리고, 초기 경로 탐색 알고리즘을 종료하면(스텝 S152), 루프 서치 알고리즘을 실행하도록 한다(스텝 S153).
[초기 경로 탐색 알고리즘에 대하여]
이 초기 경로 탐색 알고리즘은, 다음과 같은 「해결해야 할 명제」를 설정하고, 후술과 같은 「탐색조건」하에서 행하는 것이다.
「해결해야 할 명제」
그래프모양으로 결선된 노드를 순서대로 더듬어 가는 것을 상정한다. 1회의 순회 또한 하기 조건하에서, 모든 노드를 한번에 통과하고 자 한다. 그것이 가능하게 되는 순회 순서를 구해보자. 단, 순회하는 노드 사이가 그래프에서 직접 결선되고 있을 필요는 없고, 노드를 띄엄 띄엄 순회해도 상관없다.
「탐색 조건」
(a)입력이 없는 노드는 무조건으로 통과 할 수 있다.
(b)지연 소자가 되는 플러그인의 노드는, 무조건으로 통과 할 수 있다.
(c)통과한 노드는 출력이 확정된다.
(d)노드 A의 입력에 접속되어 있는 전단의 노드 B의 출력이 확정되면, 노드 A의 입력이 확정된다.
(e)노드의 전 입력이 확정되면 그 노드를 통과할 수 있다.
또, 노드의 식별자로서 이미 순서대로 고유번호가 할당되어 있다. 이 번호를 노드 넘버(노드 No.)라 부른다. 이것은 임의의 번호이어도 좋고, 예를 들면 플러그인의 오브젝의 생성 순으로 노드 넘버를 할당해 두면 된다. 또, 플러그인에는, LTP(Latency Type Plugin)과, NLTP(Non Latency Type Plugin) 종류의 타입이 있다. LTP는, 지연 소자가 되는 플러그인이며, 1샘플 이상의 지연이 발생한다. NLTP는 게이트 소자가 되는 플러그인 이며, 지연은 발생하지 않는다.
이상의 초기 경로 탐색 알고리즘은, 도 14의 흐름도에 의해 실행할 수 있다.
우선, 최초의 노드를 체크하고(스텝 S161), 이 노드에 대하여 노드 순서 번호(이하, 노드 인덱스라 부른다)가 부여되었는 지 판별한다(스텝 S162). 부여되었으면 모든 노드에 노드 인덱스가 부여되었는 지를 판별하여(스텝 S169), 모든 노드에 노드 인덱스가 부여되어 있다고 판별했을 때에는, 이 처리 루틴을 종료한다.
또, 스텝 S169에서, 모든 노드에는, 노드 인덱스를 부여하지 않았다고 판별했을 때에는, 다음의 노드를 체크하여(스텝 S165), 그 후 스텝 S162로 되 돌아 가고, 스텝 S162이후를 반복한다.
스텝 S162에서, 노드 인덱스가 부여되지 않았다고 판별했을 때에는, 무조건으로 통과할 수 있는 노드인지 여부 즉, 플러그인이 LTP인지 여부를 판별한다(스텝 S163).
스텝 S163에서 무조건으로 통과할 수 있는 노드가 아니라고 판별했을 때에는, 그 노드의 모든 입력이 확정되었는 지를 판별한다(스텝 S164). 이 스텝 S164 에서, 모든 입력은 확정되지 않았다고 판별했을 때에는, 다음의 노드를 체크하고(스텝 S165), 그 후 스텝 S162로 되 돌아가 스텝 S162이후를 반복한다.
스텝 S163에서 무조건으로 통과할 수 있는 노드라고 판별했을 때, 또는 스텝 S164에서, 그 노드의 전 입력이 확정되었다고 판별했을 때에는, 이 노드를 통과하여 이 노드의 출력을 확정한다(스텝 S166). 그리고, 이 노드가 접속되어 있는 노드의 입력을 확정한다(스텝 S167). 그리고, 이 노드에, 노드 인덱스를 부여한다(스텝 S168).
다음에 모든 노드에 노드 인덱스가 부여되어 있는 지를 판별하여(스텝 S169), 모든 노드에 노드 인덱스가 부여되어 있다고 판별했을 때에는, 이 처리 루틴을 종료한다.
이상과 같은, 초기 경로 탐색 알고리즘에 의한 노드 인덱스 부여의 구체예를 도 15의 그래프의 회로 구성의 경우를 예로 설명한다. 도 15에 있어서는, 대상이 되는 노드는, 노드 No.0 ∼No.6의 7개이다. 노드 No.4와 노드 No.6은 LTP로 한다. 이 경우의 초기 경로 탐색 알고리즘은, 아래와 같이 된다. 즉, 노드 No. 0부터 노드 No. 6까지, 순서대로 하기의 체크를 행한다. 노드 No.0부터 노드 No. 6까지를 1순으로 하고, 전 노드가 통과할 때 까지 다음의 체크를 몇 순이라도 반복한다.
(1) 노드 No.0은 입력이 없기 때문에 통과 OK. 따라서 노드 No. 0의 출력(0) 확정.
(2) 노드 No.1은 입력(1)이 확정되지 않았기 때문에 패스.
(3) 노드 No.2는 입력이 없기 때문에 통과 OK. 따라서 노드 No.2의 출력(0) 확정.
(4) 노드 No.3은 모든 입력(0,1,2)이 확정되지 않았기 때문에 패스.
(5) 노드 No.4는 LTP이므로 통과 OK. 따라서, 노드 No. 4의 출력(0) 확정.
(6) 노드 No.5는 입력(0)이 확정되지 않았기 때문에 패스.
(7) 노드 No.6은 LTP이므로 통과 OK. 따라서 노드 No.6의 출력(0) 확정.
이상으로 1순째를 종료한다. 다음에 통과할 수 없고 출력이 확정되지 않은 노드에 대하여, 다음과 같이 하여, 2순째의 탐색을 행한다.
(1) 노드 No.1은, 모든 입력(0, 1)이 확정되었으므로 통과 OK. 따라서, 노드 N o.1의 출력(0) 확정.
(2) 노드 No.3은 모든 입력(0,1,2)이 확정되었으므로, 통과 OK. 따라서, No.3의 출력(0,1,2)확정.
(3) 노드 No.5는 입력(0)이 확정되었으므로 통과 OK. 따라서 확정.
이상과 같이 하여, 모든 노드를 통과하여 출력이 확정되었으므로, 이상으로 탐색이 완료되게 된다. 이 경우 2순째의 탐색이 완료되게 된다.
[초기 경로 탐색 알고리즘에 의한 탐색결과]
상기의 초기 경로 탐색 알고리즘의 탐색 순서에 의해, 출력이 확정된 순으로 노드에 번호를 붙여 가면, 경로 탐색 결과가 구해진다. 이 새로운 노드의 순서번호가 노드 인덱스이다. 도 15의 그래프의 회로 구성예인 경우, 탐색 결과를 도 16에 나타낸다.
그래프내에서는, 플러그인은 노드 인덱스 순으로, 플러그인 작성·유지부에 격납되어 있다. 경로 탐색 알고리즘이 실행될 때 마다, 플러그인 작성·유지부에 있어서의 이 플러그인의 격납 순이 갱신된다. 신호처리시는, 그래프가 노드 인덱스 순으로 각 플러그인의 신호처리함수를 콜 함으로써, 원하는 신호 처리를 실현하고 있다.
이상 설명한 바와 같이, 초기 경로 탐색 알고리즘에 있어서는, 2순째, 3순째로 반복하면서, 상기 명제의 답이 구해질 때 까지, 노드의 체크를 행하지만, 1순의 탐색에 있어서, 통과가능한 노드가 반드시 하나는 발견되는 성질이 있다.
단 하나의 예외가 있다. 피드백 루프내에 지연 소자인 LTP가 포함되어 있지 않은 경우는, 1순의 탐색에 있어서, 통과가능한 노드를 단 하나도 발견할 수 없다. 이는 회로 구성상 이상한 케이스이다.
일반적인 디지털 신호 처리 논리에서는, 인과율을 만족시키기 위해, 피드백 루프내에 반드시 하나 이상의 지연 소자를 포함시킬 필요가 있다. 이 실시예에 있어서의 초기 경로 탐색 알고리즘에서는, 사용자가 이 기본 원칙을 지키지 않는 회로를 작성한 경우는, 상기 예외가 발생한다는 성질이 있다.
그래서, 이 실시예의 초기 경로 탐색 알고리즘에 있어서는, 이 예외 발생을 에러 경보에 이용할 수 있다. 즉, 사용자가 지연 소자를 포함하는 피드백 회로를 작성하는 경우에는, 초기 경로 탐색 알고리즘에 있어서, 상술한 경로 탐색의 예외 발생을 나타내므로, 그 경우를 검출했을 때에는 회로를 재구성하도록, 시스템으로부터 사용자에 경고를 발하도록 한다.
[루프 서치 알고리즘에 대하여]
다음에 루프 서치 알고리즘에 대해 설명한다. 이는 신호 처리 발행시에 있어서의 CPU부하의 개선을 제공하는 알고리즘이다. 신호처리의 리얼 타임 성을 확보하기 위해서는 중요한 기술이다.
상기 초기 경로 탐색 알고리즘에서 구한 검색 결과에 의해서도, 원하는 회로의 신호 처리는 실현가능하다. 그러나 초기 경로 탐색 알고리즘에서 구한 탐색 결과에서는 피드 백 루프를 포함하는 회로 구성에 있어서는 반드시 속도성능적으로는 유리하다고는 할 수 없는 문제가 있다.
피드백 루프를 포함하는 각 구성요소에 있어서는, 「입력이 확정되지 않은 상태에서 출력을 확정할 수는 없다」라는 디지털 신호 처리 이론에 있어서의 인과율을 만족시킬 필요가 있다. 그 때문에 피드백 루프를 포함하는 회로에 있어서는, 1샘플 단위로 순차적으로 각 플러그인의 신호 처리를 행할 필요가 있다. 즉, 1샘플 단위로 플러그인에 대하여 음성 데이터의 입출력 및 신호처리를 행할 필요가 있다는 것이다.
여기에서, 문제가 되는 것은, 신호 처리할 때 마다 발생하는 함수 콜이다. 일반적으로 소프트웨어 처리에 있어서, 함수 콜은 CPU부하가 높다는(원가가 높다) 성질이 있다. 소프트 웨어의 리얼타임 신호 처리에 있어서는, 이 함수 콜 회수가 1회라도 적게 하는 것이, 처리 속도 성능의 향상에 이어진다. 그래서, 함수 콜 회수를 삭감하는 방법이 처리 속도 성능의 향상을 생각할 경우에 바람직하다.
함수 콜 회수를 줄이지 않는 일반적인 방법으로서는, 복수 데이터 샘플을 1단위로 하는, 예를 들면 패킷 단위의 처리를 들 수 있다. 1샘플 씩 처리하는 것이 아닌, 소정 수의 복수 데이터 샘플을 블럭화 하여 정리하여 일괄처리하는 방법이다. 예를들면 패킷 사이즈가 1024샘플인 경우는, 1024샘플의 음성 데이터를 한데 모아 블럭화 하고, 1회의 함수 콜로 처리한다. 이렇게 함으로써, 함수 콜의 회수를 줄일 수 있다.
그러나, 회로에 피드 백 루프가 포함될 경우에는, 상술과 같이, 1샘플 단위로 함수 콜할 필요가 있다. 이 때문에, 패킷 처리가 행해지지 않는다.
그래서, 본 실시예의 경로 탐색 알고리즘에서는, 초기 경로 탐색 알고리즘 후에, 다음에 설명하는 루프 서치 알고리즘을 행함으로써, 이 문제를 해결하는 것이다.
일반적으로, 피드 백 루프를 포함하는 회로에 있어서, 루프를 형성하는 노드는, 회로 전체의 일부인 경우가 많다. 이 실시예에 있어서의 루프 서치 알고리즘은, 이 점을 이용하여 루프를 구성하는 노드의 군과, 루프를 구성하지 않는 노드의 군을, 신호처리 순서 후 구분하여 루프를 구성하지 않는 노드의 군에서는, 패킷 처리를 가능하게 함으로써, 신호처리 전체로서 고속화를 도모할 수 있다.
예를 들면 도 15에 도시한 회로 구성의 경우, 루프를 구성하는 노드는, 노드 No.3, 노드 No.4, 노드 No.6의 3개이며, 전체의 노드 수 7개에 대해 절반 이하이다.
그래서, 루프를 형성하는 노드만 1샘플 단위로 처리하고, 그 이외의 노드를 패킷 단위로 처리함으로써, 속도 열화를 필요 최소한으로 억제할 수 있다. 전체의 회로 구성에 있어서, 루프를 형성하는 노드의 비율이 작으면 작을 수록, 보다 효과 적으로 속도 열화를 억제할 수 있다.
도 17에, 이 루프 서치 알고리즘의 처리의 흐름도를 나타낸다. 우선, 폐로 탐색 알고리즘을 이용하여, 루프를 구성하는 노드를 구한다(스텝 S171). 폐로 탐색 알고리즘은, 일반적인 그래프 이론의 폐로 탐색 알고리즘을 이용할 수 있다. 이 일반적인 그래프 이론의 폐로탐색 알고리즘은 주지이므로, 여기에서는, 그 상세한 설명은 생략한다.
다음에 초기 경로 탐색 알고리즘에서 정해진 신호처리순서에서는, 루프를 구성하는 노드 사이에, 신초처리 순서로서, 루프를 구성하지 않는 노드가 들어 있는 지 여부를 체크한다(스텝 S172).
그리고, 루프를 구성하는 노드 사이에, 신호처리순서로서, 루프를 구성하지 않는 노드가 들어 있다고 판별했을 때에는(스텝 S173), 루프를 구성하지 않는 노드를, 루프를 구성하는 노드의 앞이 되도록, 신호처리순서를 교체한다(스텝 S174). 즉, 노드 인덱스의 수정을 행한다.
스텝 S173에서 루프를 구성하는 노드 사이에, 신호처리 순서로서, 루프를 구성하지 않는 노드가 들어있지 않다고 판별했을 때에는, 그 대로, 이 루프 서치 알고리즘을 종료한다.
이 루프 서치 알고리즘을, 도 15에 나타낸 회로 구성의 경우에 적용했을 경우를 예로, 구체예를 다음에 설명한다.
도 15에 도시한 회로 구성에 대해서, 초기 경로 탐색 알고리즘을 실행한 결과는, 도 16에 도시한 바와 같다. 도 16의 탐색 결과에 대해서, 폐로탐색 알고리 즘의 탐색 결과인, 루프를 구성하는 노드, 즉, 노드 No.3, 노드 No.4, 노드 No.6를, 사선으로 그어 나타내면, 도 18의 좌측과 같이 된다.
이 도 18의 좌측의 도면에서 알 수 있는 바와 같이, 초기 경로 탐색 알고리즘의 탐색 결과에서는, 신호처리 순서로서 루프를 구성하는 노드 사이에, 루프를 구성하지 않는 노드인 No.1이 존재하는 것을 알 수 있다. 그 때문에 이 대로 신호처리순서에서는, 본래 1샘플 단위로 처리를 행할 필요가 없는 노드 No.1도, 1샘플 단위로 처리를 행할 필요가 있다.
그러나, 루프 서치 알고리즘을 적용했을 때에는, 상기 스텝 S174에 있어서, 루 프를 구성하지 않는 노드는, 루프를 구성하는 노드 앞이 되도록, 신호처리 순서를 변경한다.
이 경우에, 신호처리 순서가 변경되어도, 초기 경로 탐색 알고리즘의 해결 명제를 만족시킬 필요가 있다. 거기서, 루프 서치 알고리즘에 있어서는, 신호처리 순서를 변경할 때에는, 변경 후도 초기 경로 탐색 알고리즘의 해결 명제를 만족시킬 지 여부의 체크를 행하도록 해도 되지만, 이 예에서는, 루프의 선두의 노드보다도, 루프를 구성하지 않는 노드를 앞의 신호처리 순서가 되도록 변경함으로써, 이러한 체크를 필요로 하지 않는다. 즉, 상기의 순서 변경 방법은 신호처리의 순서성을 바르게 유지하는 성질이 있다.
도 15의 예의 경우이면, 노드 No.4와 노드 No.6은, LTP이므로, 입력이 확정되지 않아도 출력이 확정되는 성질을 가지고 있다. 이 성질을 이용하면, 노드 No.4와 노드No.6은, 노드 No.1보다 후 처리가 되어도 상관없다.
이 예에서는, 루프 서치 알고리즘에 의해, 도 18의 우측에 나타나 있는 바와 같이 루프를 구성하지 않는 노드인 노드 No.1은, 신호처리 순서를 3번으로 하여, 루프를 구성하는 노드의 선두의 노드 No.4보다도 앞이 되도록 신호처리 순서가 변경된다.
이와 같이 되면, 루프를 구성하는 노드는, 도 18의 우측에 있어서 사선을 그어 나타내는 바와 같이, 한데 모은다. 즉, 루프를 구성하는 노드 군은, 신호처리 순서로서 국소화 되게 된다.
이 도 18의 우측에 나타내는 것 같은 신호처리 순서로 신호 처리를, 다음과 같이 하여, 실행함으로써, 함수 콜을 필요 최소한으로 억제할 수 있게 된다.
즉,
(1) 노드 인덱스가 1번부터 3번의 노드는, 루프 외이므로, 패킷 단위로 처리한다.
(2) 노드 인덱스가 4번부터 6번의 노드는, 루프 내이므로, 1샘플 단위로 처리한다.
(3) 노드 인덱스가 7번의 노드는, 루프 외이므로 패킷 단위로 처리한다.
이상과 같이 하여 신호 처리를 실행하면, 함수 콜을 적게 하여, 신호처리 속도의 열화를 방지할 수 있다. 다음에 패킷 사이즈를 1024샘플로 한 경우의 예를 하기에 예로 든다.
(1) 노드 No.0에, 1024샘플의 데이터를 넘겨 처리를 실행한다.(함수 콜 1회).
(2) 노드 No.2에, 1024샘플의 데이터를 넘겨 처리를 실행한다.(함수 콜 1회).
(3) 노드 No.1에, 1024샘플의 데이터를 넘겨 처리를 실행한다.(함수 콜 1회).
(4) 하기 조작 (4-1)∼(4-3)을 1024회 반복한다.(함수 콜 3 X 1024회).
(4-1) 노드 No.4에, 1샘플의 데이터를 넘겨 처리를 실행한다.(함수 콜 1회)
(4-2) 노드 No.6에, 1샘플의 데이터를 넘겨 처리를 실행한다.(함수 콜 1회)
(4-3) 노드 No.3에, 1샘플의 데이터를 넘겨 처리를 실행한다.(함수 콜 1회)
(5) 노드 No.5에 1024샘플의 데이터를 넘겨 처리를 실행한다(함수 콜 1회).
따라서 이상의 (1)∼ (5)의 신호처리에 의해, 1024샘플 신호 처리하기 위해 필요한 함수 콜 회수의 합계는, 3076회가 된다.
가령, 상술한 예에 있어서, 모든 노드를 1샘플씩 처리한 경우의 함수 콜 회수의 합계는, 7168회가 된다. 따라서, 이 실시예의 노드 스캔 알고리즘을 실행하고, 루프를 구성하는 노드 군을 국소화시켜, 이 노드 군 만은 1샘플 마다 함수 콜을 실행하고, 그 밖의 루프를 구성하지 않는 노드는, 패킷 단위로 1회 함수 콜하도록 함으로써, 상기 예의 경우에는, 약 57%의 함수 콜수가 삭감되게 된다.
또, 이 실시예의 시스템에서는, 패킷 사이즈는, 고정값이 아닌, 동적으로 그 사이즈를 변경하는 것이 가능하다.
[AV동기에 대하여]
상술한 바와 같이, 본 실시예의 신호처리장치는, 샘플 정밀도로 산출할 수 있다. 또, 샘플 정밀도로 AV동기를 취할 수 있다. 종래의 미들웨어에 있어서는, 매수의 플러그인을 다단접속하면 접속수에 비례한 지연이 발생하므로, 모든 플러그인을 동기하여 처리하는 것은 곤란하다.
이에 대하여, 본 실시예에서는, 어떤 접속에 있어서도 지연의 증가가 발생하지 않기 때문에, 샘플 정밀도로 각 플러그인이 동기하여 동작하는 것이 가능하고, 샘플 정밀도로 AV동기를 취할 수 있다.
이 AV동기를 위해서는, 이 실시예에서는 시각 정보에 부수하는 형태로, 영상 데이터의 수직 동기 정보 Vs로서, 시스템(그래프)으로부터, V동기 플래그가 부가되고 있다. 시각 정보가 샘플 단위로 갱신되므로, 이 V동기 플래그는, 모든 샘플에 대해서 부가되는 것이다. 그리고, V동기 플래그는, 프레임 선두의 시간 타이밍에서만, 예를 들면 「1」이 되고, 다른 것은 모두 「0」이 되고 있다.
V동기 플래그는, 영상의 프레임과, 음성 데이터의 샘플을 대응시키는 동기 펄스 정보이다. 예를 들면 영상 정보가 30프레임/초, 음성 데이터의 샘플링 주파수가 48kHz인 경우, 영상 신호의 프레임 당 음성 샘플 수는, 48000/30 = 1600[샘플/프레임]이다. 음성 데이터를 패킷 단위로 처리할 경우에, 1패킷 당 샘플 수는 상술과 같이 예를 들면 1024인 경우에는, 패킷과 프레임은 일치하지 않는다. 그래서 이 예에서는, V동기 플래그를 이용하여 AV동기를 취하도록 한다.
시스템(그래프)은, 영상정보의 1프레임 당 음성 데이터 샘플수를, 미리 산출해 둔다. 시스템(그래프)은, 음성 데이터를 플러그인에 대하여 부여할 때, 그 음성 데이터의 샘플 시각 정보와, 이 샘플 시각이 영상 프레임의 선두인지 여부의 정 보로서 상기 V동기 플래그를 플러그인에 동시에 부여한다.
각 플래그인은, 입력된 음성 데이터가 영상 정보의 1프레임의 선두임을 V동기에서 검출한 경우에, 내부 유지 파라미터를, 이 영상 프레임의 선두에 동기하여 변경함으로써, AV동기처리를 실현한다.
단, 전제 조건으로서, 시스템(그래프)으로부터의 샘플 단위의 시각 정보와, 영상 프레임의 V동기 플래그가 어떤 방법에 의해 대응되고 있는 지가 필요하다. 그래서, 이 예에서는, 이 실시예의 신호처리장치에서, 신호처리가 개시된 기점 시각을 영상 프레임의 선두로 정의하고, 시스템(그래프)이 미리 산출하고 있는 영상 정보의 1프레임 당 음성 데이터 샘플수를 이용하여, 기점 시각 이후의 시각 정보와, V동기 플래그를 대응시키고 있다.
도 19에, 이 AV동기를 위한 플러그인에서도 처리의 흐름도를 나타낸다.
우선, 음성 데이터 샘플의 플러그인으로의 입력에 동기하여, 이 플러그인에 시스템(그래프)으로부터 입력되는 시각 정보로서의 절대 시각 카운트 값 t을 취득한다(스텝S181). 즉, 시스템으로부터의 샘플 단위의 시각 정보를 읽어 들인다. 이 때, 시스템으로부터는, 시각 정보에 부가되고 있는 V동기 플래그도 취득한다.
플러그인에서는, 샘플 단위의 V동기 플래그가 「1」인지에 따라, V동기 플래그가「참」, 즉, 영상 프레임의 선두인 지 여부를 체크한다(스텝 S182). V동기 플래그가 「참」이라고 판별했을 때에는, AV동기 처리로서 이 예에서는, 파라마터의 갱신을 행한다(스텝 S183). 그리고 이 시각 t에 있어서의 신호 처리를 실행한다(스텝 S184).
그리고 다음의 음성 데이터 샘플의 플래그인으로의 입력에 동기하여 변경되는 다음의 절대 시각 카운트 값(t+1)을 취득하여(스텝 S185), 상술한 스텝 S182∼S184와 동일한 처리 동작을 반복한다(스텝 S186∼188). 이하 순차적으로 샘플 입력에 동기하여 이상의 처리를 반복한다.
[동적인 회로 구성의 변경 처리; 제1의 예]
이 실시예의 신호처리장치에서는, 전술한 것과 같이, 신호 처리중이라도, 사용자로부터의 그래프로의 변경 지시(회로 구성 변경 지시)에 따라, 그래프 구조를 동적으로 변경할 수 있다. 그리고, 신호 처리중이어도, 다시, 이 실시예의 경로 탐색 알고리즘(노드 스캔 알고리즘)을 실행하는 것으로, 회로 구성의 변경에 대응할 수 있다.
또, 이 회로 구성의 변경 처리를, 처리 데이터 단위의 신호 처리 종료 시점부터 다음의 처리 데이터 단위의 신호의 선두 앞 사이에서 행하는 것으로, 변경된 회로 구성에 의한 신호 처리가, 처리 데이터 단위의 중간부터가 아닌, 처리 데이터 단위의 선두부터 되도록 하여, 회로구성 변경에 따르는 불량을 방지하고 있다.
이 기능에 의해, 예를 들면, 실시예의 신호처리장치에서 처리되어 출력된 음성을 사용자가 들으면서도, 실시예의 신호처리장치를 새로운 회로 구성으로 변경할 수 있다. 이 때문에, 용도로서 라이브 연주 장치 등에, 이 실시예를 활용할 수 있다는 장점이 있다.
도 20에, 이 동적인 회로 구성 변경 처리의 흐름도를 도시한다. 이 흐름도 의 실행 주체는, 그래프이다. 또한, 도 21에, 이 때의 타이밍 차트를 도시한다. 이 실시예에서는, 샘플링 주파수가 예를 들면 48kHz의 디지털 음성 데이터를, 예를 들면 1024샘플을 1패킷으로서, 패킷 단위로 처리를 하도록 하고 있다. 그리고, 도 21에 있어서, 시각 t, t+1, t+2, t+3···은, 이 1024샘플마다의 시각이며, 어떤 시간 t+i(i는 정수)와, 다음의 시간 t + (i+1)과의 사이의 시간 Pd은, 이 예에서는 20밀리초이다.
여기서, 신호처리장치에 있어서의 패킷 단위의 디지털 음성 데이터의 처리는, 고속의 클락이 이용되고, 시간 Pd보다도 짧은 시간으로 종료한다. 회로 구성상, 루프가 있는 곳에는, 패킷을 분해하여 샘플 단위로 신호 처리되지만, 그래도, 시간 Pd보다도 짧은 시간에, 신호 처리는 종료한다.
신호 처리가 종료한 패킷 단위의 데이터는, 예를 들면 FIFO(First-In First-Out)메모리로 이루어지는 버퍼 메모리에 기입되며, 통상은, 도 21에 나타내는 바와 같이, 이 패킷 단위의 신호 처리 종료 후의, 다음의 패킷 단위의 처리 개시 시각부터 재생된다. 이에 따라, 패킷 단위의 음성 데이터가 연속적으로 재생된다.
패킷 단위의 디지털 음성 데이터의 처리는, 시간 Pd보다도 짧은 시간에 종료하므로, 도 21로부터 알 수 있는 바와 같이, 패킷 단위의 데이터 처리의 종료 시점부터 다음의 패킷 단위의 데이터의 선두까지는, 신호 처리적으로는 아이들 시간이 되고 있다. 그래서, 이 실시예에서는, 이 아이들 시간을, 회로 구성 동적 변경 처리 가능기간에 할당되도록 하고 있다.
그리고, 이와 같이, 패킷 단위의 데이터 처리의 종료 시점부터 다음의 패킷 단위의 데이터의 선두 사이에서 회로 구성을 동적으로 변경하고, 변경후의 회로 구성에 의해, 다음의 패키지의 선두 데이터부터 처리가 개시되므로, 패킷 도중에 회로 구성이 변경되지 않아, 첫머리에 말한 것 같은 불량은 발생하지 않는다.
우선, 시각 t에서의 신호 처리를 행한다(스텝 S191). 즉, 회로 구성 정보 격납 관리 기능부(4)에 격납되고 있는 회로 구성 정보를 채용함과 동시에, 신호 처리 순서 관리 기능부(6)에 유지되고 있는 신호 처리 순서에 따라, 신호 처리 실행 기능부(7)가 패킷 단위의 데이터 처리를 실행한다.
그리고, 패킷 단위의 데이터의 처리가 종료하고, 회로 구성 동적 변경 처리 가능기간이 되면, 그래프는, 신호 처리중이어도, 이 실시예에서는, 지시 입력 접수 기능부(1)를 거쳐 플러그인 생성 혹은 삭제 지시나, 입력 포트, 출력 포트의 생성 혹은 결선 지시 등이 행해졌는 지 여부에 따라, 회로 구성 변경 기능부(9)는, 그래프 변경 요구(회로 구성 변경 요구)가 있는 지 여부를 판별한다(스텝 S192).
그리고, 스텝 S192에서, 그래프 변경 요구가 있다고 판별했을 때에는, 그래프는, 회로 구성 정보 격납 관리 기능부(4)에 변경 후의 회로 구성 정보를 유지하도록 함과 동시에, 경로 탐색의 재실행을 행하고, 그래프의 회로 구성의 재구성을 행한다(스텝 S193). 이 때 경로 탐색 결과의 새로운 신호 처리 순서의 정보는, 신호 처리 순서 관리 기능부(6)에 유지된다.
그리고, 다음의 시각(t+1)에서의 신호 처리로 이행한다(스텝 S194). 그러면, 이 시각(t+1)에서의 패킷은, 그 선두의 데이터로부터, 변경후의 회로 구성에 의해 신호처리된다.
스텝 S192에서, 그래프 변경 요구가 없다고 판별했을 때에는, 회로 구성 동적변경 처리를 행하지 않고, 그대로, 다음의 시각(t+1)에서의 신호 처리로 이행한다(스텝 S 194).
이 스텝 S194이후는, 스텝 S192∼스텝 S193와 동일한 처리를 반복한다(스텝 S195∼196).
이 때의 회로 구성 변경 지시 조작의 일례를 도 22에 도시한다. 이 도 22의 예에서는, PC등의 그래픽컬·사용자·인터페이스의 화면에 있어서, 상술한 그래프 및 플러그인을, 블럭 등에 의해 시각적으로 표시하고, 이들 블럭 간의 결선을, 마우스 등의 포인팅 디바이스를 이용하여 지시하도록 하는 것이다.
도 22에 있어서, 그래픽컬·사용자·인터페이스 화면의 좌측의 리스트(1001)는, 플러그인 후보 리스트이다. 사용자는, 예를 들면 플러그인을 추가하고 싶을 경우에는 , 이 리스트(1001)로부터 추가하는 플러그인을 선택한다. 그러면, 그래픽컬·사용자· 인터페이스 화면에, 선택된 플러그인이 표시된다.
다음에, 사용자는, 플러그인과 플러그인과의 결선을 행한다. 즉, 결선을 하고자 하는 플러그인의 출력단에 커서(1002)를 맞추어, 그대로 드래그하여 결선하려고 하고자 하는 상대의 플러그인의 입력단 방향으로 이동하면, 도 22에 나타내는 바와 같이, 결선의 선분이 표시된다.
그리고, 커서의 드래그를, 결선하고자 하는 상대의 플러그인의 입력단으로부터 떼어놓음으로써(릴리스(release)), 플러그인간의 결선이 생긴다. 또한, 플러그인의 입력단 혹은 출력단이 있는 곳에 커서를 가져 와, 클릭하면, 결선이 희미하 게 표시되고, 또한, 점선이 되며, 실행하면 삭제할 수 있다.
이상과 같은 사용자 지시 조작에 의해, 회로 구성의 변경 지시를 할 수 있다. 예를 들면, 도 23은, 3개 플러그인(901,902,903)이 순차로 접속되어 있는 회로 구성이기 때문에, 플러그인(901)과, 플러그인(902) 사이에 새로운 플러그인(904)을 삽입한 회로 구성으로 변경한 경우이다. 이 경우, 플러그인901과 902과의 사이의 결선을 삭제하고, 그 대신에, 플러그인(901)과 플러그인(904)을 결선함과 동시에, 플러그인(904)과 플러그인(902)을 결선하도록 한다.
또, 도 24는, 4개 플러그인(911,912,913,914)이 순차로 접속되고 있는 회로 구성으로부터, 플러그인(912)을 삭제한 회로 구성으로 변경했을 경우이다. 이 경우, 플러그인(912)을 삭제함과 동시에, 플러그인(912)과 플러그인(913)과의 사이의 결선 및 플러그인(911)과 플러그인(912)과의 사이의 결선을 삭제하고, 그 대신에, 플러그인(911)과 플러그인(913)을 결선한다.
또, 도 25는, 4개 플러그인(921,922,923,924)이 순차로 접속되고 있는 회로 구성에 있어서, 플러그인(922)을 플러그인(925)으로 변경한 회로 구성으로 변경했을 경우이다.
이 경우, 플러그인(922)을 삭제함과 동시에, 플러그인(921)과 플러그인(922) 과의 사이의 결선 및 플러그인(922)과 플러그인(923)과의 사이의 결선을 삭제하고, 그 대신에 플러그인(925)을 삽입하고, 플러그인(921)과 플러그인(925)을 결선함과 동시에, 플러그인(925)과 플러그인(923)을 결선 한다.
도 26은, 4개 플러그인(931,932,933,934)이 수차로 접속되어 있는 회로 구성 을, 플러그인(932)과 플러그인(933)과의 사이에 결선을 증가시켜 변경한 경우이다.
또한, 도 27의 예는, 4개 플러그인(941,942,943,944)이 순차로 접속되고 있을 뿐인 회로 구성을, 2개의 플러그인(945,946)을, 플러그인(943)과 플러그인(942)과의 사이의 피드백 루프 안에 추가한 회로 구성으로 변경한 경우이다.
이 도 27의 예의 경우에는, 루프가 형성됨으로써, 데이터는, 샘플 단위로 앞의 데이터와 가산하는 등, 이 앞의 데이터와 믹스 되는 처리로 변화된다. 그러나, 이 실시예에서는, 패킷 단위의 데이터의 중간에 회로 구성이 변환되는 경우가 없기 때문에 문제는 발생하지 않는다.
[동적인 회로 구성의 변경 처리; 제2의 예]
이상의 제1의 예에서는, 사용자가, 신호 처리중에, 그래픽컬·사용자·인터페이스를 통해서 회로 구성의 동적 변경 조작을 했을 때, 이 변경 조작을 회로 구성의 동적변경 요구로서 처리하도록 했지만, 회로 구성의 동적 변경 요구를 발생시키는 방법으로서는, 사용자가 그래픽컬·사용자·인터페이스를 통한 회로 구성의 변경 조작을 하는 경우에 한정되지 않는다.
이 제2의 예에 있어서는, 미리, 신호 처리 중에, 변환 변경하여 사용하고자 하는 1개 또는 복수개의 회로 구성을 프리셋 정보로서 유지해 두도록 한다. 이 프리셋 정보의 일례 도 28에 도시한다. 이 도28의 예는, 도 27(a)에 나타낸 회로 구성 변경전의 회로구성을 프리셋 1(도28 (a))로 하고, 도 27(b)에 나타낸 회로 구성 변경후의 회로 구성을 프리셋 2(도 28(b))로 하는 것이다.
이 프리셋 1 및 프리셋 2의 회로 정보는, 그래프의 회로 구성 정보 격납 관 리 기능부(4)에 미리 등록해 두거나 혹은 프리셋 회로 정보기억부를 그래프내에 설정하여, 회로 구성 변경 요구가 있었을 때, 이 프리셋 회로 정보기억부로부터, 지시된 프리셋의 회로 정보를 읽어 내어, 회로 구성 정보 격납 관리 기능부(4)에 등록하도록 해도 좋다.
또, 이 경우, 프리셋 2의 회로 정보는, 도 28(b)에 도시한 회로 정보의 전부를 기억해 두도록 해도 좋고, 도 28(b)에 있어서, 「추가」로서 도시한 차분 부분의 회로 정보를 기억하여, 도 28(a)의 회로 구성에 추가함으로써, 변경 후의 회로 구성을 얻도록 해도 좋다.
이상과 같이 하여, 1 또는 복수의 회로 정보를 프리셋 한 것 중에서, 이 예에서는, 사용자의 지시 조작에 의해 지정된 프리셋의 회로 정보에, 그래프의 구성이 동적 변경된다.
예를 들면, 도 29의 예는, 풋 스위치(foot switch)(2000)가 이용되는 경우이다. 이 풋 스위치는, 사용자의 발에 의한 누름 조작부(2001,2002,2003,2004)가 설치되어 이다. 그리고, 이 예에서는, 각 누름 조작부(2001,2002,2003,2004)의 각각에, 프리셋 회로 정보가 대응되고 있다. 도 29의 예에서는, 누름 조작부(2001)에는, 프리셋 1의 회로 정보가 대응되고, 누름 조작부(2002)에는, 프리셋 2의 회로 정보가 대응된다.
그리고, 신호 처리중에, 예를 들면 풋 스위치(2000)의 누름 조작부(2001)가 누름 조작되면, 그 조작 정보가 그래프에 보내진다. 그래프는, 누름 조작부(2001)의 누름 조작을, 프리셋 1의 회로 정보로의 변경 요구로서 판단하고, 그래프내에 보유하고 있는 프리셋 1의 회로 정보를 이용하여, 상술과 마찬가지로, 동적 회로 변경 처리를 하도록 한다.
이 경우에 있어서도, 누름 조작부(2001)의 누름 조작을, 프리셋 1의 회로 정보로의 변경 요구로서 판단하고, 회로 변경 처리를 하는 것은, 도 21을 이용하여 전술한 회로 구성 동적 변경 처리 가능기간에 있어서 라는 것은, 전술한 실시예와 같다.
도 29의 예는, 프리셋 된 회로 정보를 지정하는 데, 풋 스위치를 이용한 예 이지만, 프리셋 된 회로 정보의 지정을, 사용자의 발생 음성에 의해 행하도록 할 수도 있다. 사용자의 발생 음성에 의해 행하도록 했을 때에는, 예를 들면, 연주자가, 연주를 하면서, 특정한 음성을 발생함으로써, 회로 구성을 변경할 수 있다는 이점이 있다.
즉, 도 30은, 이 경우의 회로 구성 변경 요구의 방법을 설명하기 위한 도면이다. 이 예에서는, 미리, 프리셋 회로 정보와, 사용자의 발생 음성을 대응시켜 두도록 한다. 도 30의 예에서는, 프리셋 1의 회로 정보에는,「ah∼ (아)」라는 발생 음성을할당하고, 프리셋 2의 회로 정보에는, 「e∼ (에)」라는 발생 음성을 할당하도록 해 둔다.
그리고, 마이크로폰(3001)에 의해 사용자의 발생 음성을 받아 들이고, 받아들임을써 얻어지는 음성신호를, 음성인식 회로(3002)에 공급한다. 음성인식 회로(3002)에서는, 사용자가「ah∼ (아)」라는 발생 음성을 냈는지,「e∼ (에)」라는 발생 음성 을 냈는 지를 인식한다. 그리고, 그 인식 결과를 회로 구성 변경 기능 부(3003)에 보낸다. 회로 구성 변경 기능부(3003)는, 사용자가 「ah∼ (아)」라는 발생 음성을 냈다는 인식 결과를 받았을 때에는, 프리셋 1의 회로 정보로의 변경 요구를 발생한다. 또한, 회로 구성 변경 기능부(3003)는, 사용자가 「e∼ (에)」라는 발생 음성을 냈다는 인식 결과를 받았을 때에는, 프리셋 2의 회로 정보로의 변경 요구를 발생한다.
이 도 30의 예의 경우에는, 음성인식 회로(3002) 및 회로 구성 변경 기능부 (3003)는, 그래프내의 플러그인으로서 구성할 수 있다.
[동적인 회로 구성의 변경 처리; 제3의 예]
상술의 제1의 예 및 제2의 예는, 동적인 회로 구성의 변경 요구를 사용자 지시를 통해서 발생하도록 한 경우이지만, 사용자 지시가 아닌, 미리, 회로 구성을 동적으로 변경하는 타이밍과, 변경하는 회로 구성 정보를 정해 두고, 그 정한 제어 데이터 대로 동적으로 회로 구성을 변경하도록 할 수도 있다.
즉, 이것은, 소위 시퀀서의 경우의 예로, 예를 들면, 도 31에 나타내는 바와 같이, 어느 곡의 음악 데이터를 재생할 때, 재생 개시시(ST)부터 제1의 변경 타이밍 시점 CHG1까지는 회로 구성 A에 의해 신호 처리를 행하고, 제1의 변경 타이밍 시점 CHG1부터 제2의 변경 타이밍 시점CHG2까지는 회로 구성 B에 의해 신호 처리를 행하며, 제2의 변경 타이밍 시점 CHG2부터 재생 종료 시점(ED)까지는 회로 구성 C에 의해 신호 처리를 행하도록 한다.
이 경우의 시퀀스 제어 데이터는, 재생 시작시(ST)에서는, 회로 구성 A로의 회로 구성 요구를 의미하는 것이 되고, 제1의 변경 타이밍 시점 CHG1에서는, 회로 구성 B로의 회로 구성 요구를 의미하는 것이 되며, 제2의 변경 타이밍 시점 CHG2에서는, 회로 구성 C으로의 회로 구성 요구를 의미하는 것이 되고 있다.
이 경우, 전술한 제2의 예와 같이, 그래프내에 미리 회로 구성 A, 회로 구성 B, 회로 구성 C의 정보를 준비해 두고, 시퀀스 제어 데이터에는, 단지 회로 구성 A, 회로 구성 B, 회로 구성 C로의 회로 구성 요구를 포함시키도록 할 수도 있고, 시퀀스 제어 데이터에는, 회로 구성 A, 회로 구성 B, 회로 구성 C의 회로 구성 정보를 등록해 두어, 그래프가 시퀀스 제어 데이터로부터, 이들의 회로 구성 A, 회로 구성 B 혹은 회로 구성 C의 회로 구성 정보를 취득하여, 회로 구성 변경하도록 해도 좋다.
그래프는, 전술한 것 같이, 신호 처리 시간을 관리하고 있으므로, 시퀀스 제어 데이터에 포함되는 변경 타이밍 시점의 정보(개시 시점을 포함한다)를 감시하여, 변경 타이밍 시점이 되면, 이 변경 타이밍 시점부터 뒤의 회로 구성에, 회로 구성을 변경하도록 한다.
이 제3의 예에 따르면, 시퀀스 제어 데이터에 의해, 미리 정한 순서로, 신호 처리 회로를 순차적으로 동적으로 변경하면서, 신호 처리를 하는 것이 가능하게 된다.
[동적회로 변경에 따라, 고려해야 할 처리의 예]
전술한 것 같이, 이 실시예에서는, 패킷 단위로 데이터 처리를 하도록 하고 있지만, 이 때, 오버 헤드가 될 수 있는 한 작아지도록, 패킷 사이즈를 정하고 있다.
여기서 말하는 패킷 사이즈라 함은 FIFO의 깊이(단수)의 개념과 거의 등가이다. 일반적으로 패킷 사이즈를 작게 하면, 신호 처리 지연(레이텐시)이 적어진다는 이점이 있지만, 역으로, 신호 처리의 오버헤드가 차지하는 비율이 커져, 리얼 타임성이 확보되지 않으며, 신호 처리 그 자체가 제때 되지 않는 다는 결점이 있다. 복잡한 신 호처리이면 일수록, 신호 처리에 요하는 시간이 많이 걸리게 되므로, 리얼타임성을 확보할 수 없게 될 가능성이 높아진다. 그래도 라이브 연주와 같이 지연이 염려되는 경우에는, 신호 처리가 제때 이루어지는 범위에서, 가능한 한 패킷 사이즈를 작게 할 필요가 있다.
그러나, 이상과 같은 동적 회로 변경시에, 변경후의 회로 구성에 있어서는, 미리 정한 패킷 사이즈로는, 패킷 사이즈가 너무 작아, 처리 속도가 따라 붙지 않는 경우가 일어날 가능성이 있다.
이러한 경우에는, 신호 처리로서 파탄(破綻)될 가능성이 있다. 그래서, 이 실시예에서는, 다음과 같은 처리를 행하도록 한다.
도 32는, 이 경우의 처리를 설명하기 위한 흐름도이다. 이 도 32의 흐름도에 나탄는 처리도, 그래프가 행하는 것이다.
즉, 우선, 동적회로 구성 변경이 되었는 지 여부를 판별하여(스텝 S1001), 동적 회로 구성 변경이 되지 않았다고 판별했을 때에는, 이 처리 루틴을 수행하지 않는다.
스텝 S1001에서, 동적 회로 구성 변경이 되었다고 판별했을 때에는, 신호 처리 속도가 따라 붙고 있는 지 여부를 판별하여(스텝 S1002), 속도가 붙지 않았을 때에는 그대로 처리루틴을 뺀다.
또, 스텝 S1002에서, 신호 처리 속도가 따라 붙지 않았다고 판별했을 때에는, 패킷 사이즈를 현재의 것보다도 큰 사이즈로 변경한다 (스텝 S1003).
또한, 패킷 사이즈를 큰 사이즈로 변경하는 것이 아닌, 경고를 사용자에 알려서, 사용자의 패킷 사이즈 지정의 변경을 접수하도록 해도 좋다.
또, 스텝 S1003에서 변경하는 패킷 사이즈는, 미리 사용자가 우선 순위 등을 가지고 등록해 두어, 그 등록되어 있는 패킷 사이즈를 우선 순위에 따라 사용하도록 해도 좋다.
[플러그인에서의 파라미터 설정의 다른 방법]
전술한 것 같이, 이 실시예의 신호처리장치에 있어서의 신호 처리에 있어서는, 파라미터 속성을 갖게 하는 것이 가능하다. 여기에서, 파라미터라 함은, 예를 들면 승산기의 경우에는, 승산 계수에 상당하는 것이다.
통상의 미들웨어에서는, 이 파라미터는, 사용자로부터의 파라미터 설정 함수에 의해 단속적으로 설정 변경하는 구조로 되어 있다. 이 실시예의 신호처리장치에 있어서도, 전술한 예에서는, 도 33에 나타내는 바와 같이, 종래와 같은 구성이 되고 있다. 즉, 도 6에 나타내는 바와 같이, 플러그인(600)은 파라미터 유지부(604)를 구비하고 있지만, 이 파라미터 유지부(604)에는, 사용자로부터의 파라미터 설정 함수에 의해 단속적으로 설정 변경하는 구조가 되고 있다. 도 33의 예는, 신호 처리부(6010)가 게인 컨트롤 앰프이며, 이 앰프(6010)의 게인이, 파라미터 유지부(604)에 유지되고 있는 파라미터에 의해 제어되는 것이다.
이 도 33의 구성의 경우에는, 예를 들면 1샘플 단위로 연속적 동시에 정확하게 파라미터를 변화시킬 수는 없다. 이것은, 음성 데이터 샘플의 1샘플 시간(약 20마이크로 초)에 대하여, 일반적인 0S에서는, 리얼타임성의 확보가 어렵고, 함수 콜의 간격이, 수십 밀리초로 상당히 커져버리기 때문이다. 통상의 OS상에서는 리얼타임 성을 확보했다고 해도, 수 밀리 초∼수십 밀리 초의 정밀도가 한계이다. 또한, 소프트웨어 적인 시간 격차가 있기 때문에, 샘플 정밀도의 마이크로 초 오더로, 파라미터 변경 함수의 호출 타이밍을 제어할 수는 없다.
그래서, 이 실시예에서는, 이하에 설명하는 것 같이, 파라미터의 설정 방법을 연구하는 것으로, 파라미터를 1샘플 정밀도로 정확하게 변화시킬 수 있도록 한다. 즉, 이 예에 있어서는, 플러그인 내부에 보유하는 파라미터를, 사용자가 함수 콜로 설정하는 것이 아닌, 플러그인의 입력 포트에 할당하여 설정하는 기능을, 그래프에 설정함으로써, 새로운 파라미터의 설정 방법을 실현하는 것이다. 이하, 새로운 파라미터의 설정 방법을 파라미터 바인드라 부른다.
도 34에, 이 파라미터 바인드 예를 도시한다. 즉, 플러그인에 새로운 입력 포트 1을 설정하여, 이 입력 포트 1을 파라미터 유지부(604)가 접속한다. 그리고, 새로운 설정한 입력 포트 1에 음성 데이터 값을 할당한다.
이에 따라, 플러그인 내부의 파라미터는, 사용자로부터의 설정 함수 콜에 의해 갱신되는 것이 아니고, 입력 포트 1에 입력되는 음성 데이터 값에 의해 갱신된다. 음성 데이터 값이, 그대로 파라미터 값이 되고, 샘플 단위로 갱신된다.
이 경우, 파라미터와 음성 데이터는 특별히 구별이 없다. 이 실시예에서는, 음성 데이터는, 모두 샘플 정밀도로 동기하고 있기 때문에, 파라미터 변경과 음성 데이터의 동기성을 유지할 수 있다. 예를 들면, 사용자는, 음성 데이터에 동기하는 파라미터 신호를 동시에 생성하여, 원하는 플러그인의 파라미터 유지부에 접속된 입력 포트에 입력하는 것으로, 음성 데이터와 샘플 정밀도로 동기하는 파라미터 변경을 실현할 수 있다.
다음에, 그래프에 대한 파라미터 바인드의 등록 순서를 도 35에 도시한다. 즉 우선, 파라미터 바인드를 행하는 플러그인에, 파라미터 바인드를 위한 입력 포트를 추가한다(스텝 S201). 다음에, 지정한 파라미터가 보유되어야 할 파라미터 유지부를, 스텝 S201에서 추가한 입력 포트에 접속한다(스텝 S202).
그리고, 추가한 입력 포트에, 파라미터로서 기능하는 음성 데이터를 입력한다(스텝 S203). 이상으로, 파라미터 바인드의 그래프로의 등록을 종료한다.
다음에, 등록되어 있는 파라미터 바인드의 해제 순서를, 도 36에 도시한다. 우선, 소정의 플러그인에 추가한 파라미터 바인드를 위한 입력 포트로의 데이터 입력을 정지한다(스텝 S211). 그리고, 데이터 입력을 정지한 입력 포트를, 지정한 파라미터가 보유되어야 할 파라미터 유지부로부터 분리 한다(스텝 S212). 그 후, 데이터 입력을 정지한 입력 포트를 삭제한다(스텝 S213). 이상으로, 등록되었던 파라미터 바인드의 그래프로부터의 해제 처리 순서를 종료한다.
또한, 파라미터 바인드의 등록 및 해제는, 신호 처리중이어도, 임의의 타이밍으로 행할 수 있다.
[리얼타임 분산 처리]
이상 설명한 실시예의 신호처리장치는, 통상은, 한 대의 컴퓨터에 의해 실현되고, 신호 처리는, 이 한 대의 컴퓨터 상에서 처리된다. 이 처리를, 네트워크를 통하여 접속되는 복수대 컴퓨터에 확장하는 것으로, 리얼타임으로 CPU부하의 분산 처리를 행할 수 있다.
이 분산 처리는, 일반적인 컴퓨팅 기술인 분산 오브젝 기술을 이용하는 것으로 , 실현가능하다. COM/DCOM(Component Object Model/Distributed Component Object Model) , CORBA(Common Object Request Broker Arch itecture)라고 하는 기술이 그것에 해당한다.
이하, 주로 Windows(등록상표)계의 OS에서 이용되는 COM/DCOM이라는 기술을 이용했을 경우의 예를 도시한다. 우선, 이 실시예의 미들웨어의 플러그인의 오브젝을, 모든 COM오브젝트으로서 실장한다. 여기에서, COM오브젝트이라 함은 오브젝트 지향에 있어서의 컴포넌트 모델이며, 위치 투과성을 특징으로 한다. 위치 투과성이라 함은, 마치, 예를 들면 로컬 컴퓨터 위에, COM오브젝을 생성하는 것과 같이, 리모트 컴퓨터 위에 COM오브젝트을 생성할 수 있다는 기능이다.
따라서, 위치 투과성을 이용함으로써, 로컬 컴퓨터상, 리모트 콘트롤 상의 어느 것에 상관없이, 같은 조작으로, 오브젝트의 생성이 행해진다. 이는 COM오브젝트인 플러그인의 오브젝트을, 네트워크를 의식하지 않고도, 복수의 컴퓨터 상에 통일적으로 생성할 수 있는 것이다. 플러그인의 생성에 한하지 않고, 그 밖의 조작도 로컬 컴퓨터상, 리모트 컴퓨터상을 막론하고, 통일된 조작성으로 실현가능하다.
예를 들면, 로컬 컴퓨터 위에, 음성 입출력 플러그인 오브젝트을 배치하고, 리모트 컨트롤러 상에, 에코 플러그인 오브젝을 배치하여, 전체적으로 하나의 회로를 구성할 수도 있다.
도 37에, 리얼타임 분산 처리될 경우의 그래프의 구성예를 도시한다. 이 도 37의 예는, 네트워크(3000)를 통해 로컬 컴퓨터(1000)와 리모트 컴퓨터(200)가 접속되고 있는 상황에 있어서, 루트 그래프(2500)가 정의되고 회로가 작성되는 경우이다.
이 도 37를 참조하여, 이 예의 회로 작성의 흐름을 설명한다. 사용자는, 로컬 컴퓨터(1000)만으로, 회로 작성하는 경우와 거의 마찬가지로 하여, 회로 작성을 행한다.
리모트 컴퓨터(2000)를 의식하는 것은, 일부 만이다.
(1)사용자가, 그래프(2500)의 오브젝을 작성한다. 이 그래프(2500) 오브젝은, 로컬 컴퓨터(1000)에 생성된다.
(2)사용자가, 그래프(2500)의 오브젝에 대하여, 플러그인(2501) 오브젝의 작성을 지시한다.
(3)사용자가, 그래프(2500)의 오브젝에 대하여, 플러그인(2502) 오브젝의 작성을 지시한다.
(4)사용자가, 그래프(2500)의 오브젝에 대하여, 플러그인(2503) 오브젝의 작 성을 지시한다. 이 경우, 플러그인 생성 함수에, 리모트 컴퓨터(2000)의 식별자를 부여한다.
(5)사용자가, 그래프(2500)의 오브젝에 대하여, 플러그인(2504) 오브젝의 작성을 지시한다.
(6)사용자가, 그래프(2500)의 오브젝에 대하여, 플러그인(2501)의 출력 포트 0과 플러그인(2502)의 입력 포트 0의 결선을 지시한다.
(7)사용자가, 그래프(2500)의 오브젝에 대하여, 플러그인(2502)의 출력 포트 0과 플러그인(2503)의 입력 포트0의 결선을 지시한다.
(8)사용자가, 그래프(2500)의 오브젝에 대하여, 플러그인(2503)의 출력 포트 0과 플러그인(2504)의 입력 포트 0의 결선을 지시한다.
(9)사용자가, 그래프(2500)의 오브젝에 대하여, 플러그인(2504)의 출력 포트 0과 플러그인(2502)의 입력 포트 1의 결선을 지시한다.
이상으로 회로가 완성된다. 리모트 컴퓨터를 의식하는 부분은 순서(4)뿐이다. 한편, 신호 처리의 실행에 관해서도 로컬 컴퓨터(1000)만의 경우와 특별히 차이는 없다.
이상 설명한 실시예에 따르면, 이하와 같은 효과를 얻을 수 있다.
즉, 상기의 실시예에 따르면, 소프트웨어 디지털 신호 처리에 있어서, 신호 처리 회로를 다단으로 결선해도 처리 지연이 증가하지 않는 회로를 작성할 수 있다. 또한, 피드백 구조를 포함하는 임의의 디지털 신호 처리 회로를 작성할 수 있다.
또, 디지털 신호 처리 회로의 회로 구성을 동적으로 변경할 수 있다. 이 경우에, 동적으로 갱신가능한 회로 요소는,
·플러그인의 추가·삭제
·플러그인 간의 결선상태
·플러그인의 입출력 포트의 추가·삭제
·플러그인의 파라미터 변경 및 파라미터 바인드
·신호 처리시의 패킷 사이즈·샘플링 주파수 등, 신호 처리에 관련되는 파라미터이다.
또, 이 실시예의 신호처리장치의 미들웨어를 짜 넣는 것에 의해, 회로 구성을 동적으로 변경가능한 제품을 만들 수 있다.
또, 작성한 신호 처리 회로를 화일에 보존함으로써, 나중에, 신호 처리 회로를 복원할 수 있다. 또한, 그 화일을 주고받음으로써, 회로의 교환이나 재이용이 용이하게 행해진다.
또, 신호 처리 회로 안에 피드백 루프를 포함하는 회로 구성을 포함하고 있어도, 신호 처리 함수의 호출 회수를 필요 최소한으로 억제할 수 있다. 그 결과, 리얼타임 신호처리 실행에 필요한 CPU부하를 경감할 수 있다.
또, 회로의 파라미터의 갱신이나 음성 데이터와의 동기성을 샘플 정밀도로 제어할 수 있다. 또한, 음성 데이터를 이용하여 파라미터 값을 갱신할 수 있다(파라미터 바인드 기능).
또, 네트워크를 사용하여, 리얼타임으로 분산 처리를 행할 수 있다. 네트 워크 상에 존재하는 복수의 회로를 리얼타임으로 동기해서 동작시킬 수 있다.
본 발명에 의하면, 신호처리동작 중이어도, 회로 구성을 동적으로 변경할 수 있다. 또한 신호철 모듈을 다단으로 결선해도 신호처리지연이 증가하지 않는 신호처리장치를 실현할 수 있다. 또한, 폐 루프를 포함하는 신호처리라도, 회로 구성을 동적으로 변경할 때, 모순의 발생을 방지할 수 있다.

Claims (7)

  1. 복수의 신호 처리 단위요소로 이루어지는 신호 처리를, 미리 정해진 데이터 샘플 수의 처리 데이터 단위로, 소프트웨어 신호 처리에 의해 행하는 신호처리장치로서,
    상기 신호 처리 단위요소를 소프트웨어 처리에 의해 각각 행하는 신호 처리 모듈의 복수개와,
    상기 복수개의 신호 처리 모듈과, 상기 복수개의 신호 처리 모듈의 입출력의 가상적인 접속 상태에 의해 나타나는 회로 구성 정보를 기억하여 관리하는 회로 구성 정보 격납 관리부와,
    경로 탐색을 실행하여, 상기 회로 구성 정보 격납 관리부에 격납되어 있는 회로 구성 정보를 구성하는 상기 복수개의 신호 처리 모듈의 각각의 신호 처리 순서를 결정하는 신호 처리 순서 결정 수단과,
    상기 신호 처리 순서 결정 수단에서 결정된 신호 처리 순서로, 상기 신호 처리 모듈의 각각을 순차적으로 실행시켜 상기 신호 처리를 실행하는 신호 처리 실행 수단과,
    상기 신호 처리 실행 수단에서 상기 신호 처리를 실행중에 있어서, 회로 구성 변경 요구가 있는지 여부를 판별하여, 상기 회로 구성 변경 요구가 있다고 판별되었을 때, 상기 처리 데이터 단위의 상기 소프트웨어 신호 처리가 종료한 후, 다음의 처리 데이터 단위의 선두 사이에, 변경 후의 회로 구성 정보를 상기 회로 구 성 정보 격납 관리부에 기억시킴과 동시에, 상기 신호 처리 순서 결정 수단에 상기 경로 탐색을 재실행시키고, 변경후의 회로 구성 정보에 있어서의 상기 복수개의 신호 처리 모듈의 각각의 신호 처리 순서를 결정하도록 하는 회로 구성 변경 수단을 구비하고,
    상기 회로 구성 변경 수단에서 변경된 회로 구성에 의해, 상기 다음의 처리 데이터 단위의 선두부터, 소프트 웨어 신호 처리가 행해지도록 하는 것을 특징으로 하는 신호처리장치.
  2. 제 1항에 있어서,
    사용자로부터의 상기 신호 처리 모듈의 생성 또는 삭제 지시 및 상기 사용자로부터의 상기 신호 처리 모듈의 입출력의 접속 지시를 접수하는 지시 입력 접수 수단과,
    상기 지시 입력 접수수단에서 접수된 상기 사용자로부터의 지시에 따라 복수개의 상기 신호처리 모듈의 입출력의 가상적인 접속 상태를 설정하는 신호 처리 모듈간 접속 수단을 구비하고,
    상기 회로 구성 변경 수단은, 상기 신호 처리 실행 수단에서 상기 신호 처리를 실행중에 있어서, 사용자로부터의 상기 신호 처리 모듈의 생성 또는 삭제 지시 및/또는 상기 사용자로부터의 상기 복수개의 신호 처리 모듈의 입출력의 접속 지시를, 상기 회로 구성 변경 요구라고 판별하는 것을 특징으로 하는 신호처리장치.
  3. 제 1항에 있어서,
    상기 신호 처리 실행 수단에서 실행중인 회로 구성 정보와는 다른 회로 구성 정보가, 미리 준비되고 있고,
    상기 회로 구성 변경 수단은, 상기 신호 처리 실행 수단에서 상기 신호 처리를 실행중에 있어서, 사용자로부터의 회로 구성의 변환 지시가 있었을 때, 이 변환 지시를 상기 회로 구성 변경 요구라고 판별하고, 상기 회로 구성 정보 격납 관리부의 회로 구성 정보를, 상기 서로 다른 회로 구성 정보로 변경함과 동시에, 상기 신호 처리 순서 결정 수단에 상기 경로 탐색을 재실행시켜, 변경후의 회로 구성 정보에 있어서의 상기 복수개의 신호 처리 모듈의 각각의 신호 처리 순서를 결정하도록 하는 것을 특징으로 하는 신호처리장치.
  4. 제 3항에 있어서,
    상기 실행중인 회로 구성 정보와는 서로 다른 회로 구성 정보는, 복수개 준비되고 있고, 상기 사용자로부터의 변환 지시에는, 상기 복수개의 회로 구성 정보 중, 어느 한 회로 구성 정보로 변환할 지의 정보를 포함하는 것을 특징으로 하는 신호처리장치.
  5. 제 1항에 있어서,
    상기 회로 구성 정보의 1 또는 복수개를 기억함과 동시에, 상기 기억하는 회로 구성 정보의 각각을, 신호 처리의 어느 한 타이밍에서 이용할 지의 지시 정보를 기억하는 기억부와,
    상기 신호 처리를 실행하면서, 상기 기억부에 기억되어 있는 상기 지시 정보를 감시하고, 상기 회로 구성 정보를 이용하는 타이밍이 되었을 때, 상기 회로 구성 변경 요구를 상기 이용하는 회로 구성 정보로 나타내는 정보와 함께 상기 회로 구성 변경 수단에 넘겨주는 수단을 구비하고,
    상기 회로 구성 변경 수단은, 상기 회로 구성 변경 요구를 판별했을 때에는, 상기 처리 데이터 단위의 상기 소프트웨어 신호 처리가 종료된 후, 다음의 처리 데이터 단위의 선두 사이에, 변경 후의 회로 구성 정보를 상기 기억부로부터 얻어, 상기 회로 구성 정보 격납 관리부에 기억시킴과 동시에, 상기 신호 처리 순서 결정 수단에 상기 경로 탐색을 재실행시키고, 변경후의 회로 구성 정보에 있어서의 상기 복수개의 신호 처리 모듈의 각각의 신호 처리 순서를 결정하도록 하는 것을 특징으로 하는 신호처리장치.
  6. 제 3항 또는 제 4항에 있어서,
    상기 사용자로부터의 변환 지시는, 사용자의 풋 스위치 조작에 의한 것임을 특징으로 신호처리장치.
  7. 제 3항 또는 제 4항에 있어서,
    상기 사용자로부터의 변환 지시는, 사용자의 음성에 의한 것임을 특징으로 하는 신호처리장치.
KR1020060025978A 2005-03-24 2006-03-22 신호처리장치 KR101260295B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2005-00085348 2005-03-24
JP2005085348A JP4622611B2 (ja) 2005-03-24 2005-03-24 信号処理装置

Publications (2)

Publication Number Publication Date
KR20060103131A true KR20060103131A (ko) 2006-09-28
KR101260295B1 KR101260295B1 (ko) 2013-05-03

Family

ID=36616887

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060025978A KR101260295B1 (ko) 2005-03-24 2006-03-22 신호처리장치

Country Status (5)

Country Link
US (1) US8555251B2 (ko)
EP (1) EP1705569A3 (ko)
JP (1) JP4622611B2 (ko)
KR (1) KR101260295B1 (ko)
CN (1) CN100444111C (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8132148B2 (en) * 2005-04-29 2012-03-06 Microsoft Corporation XML application framework
US8799857B2 (en) 2005-04-29 2014-08-05 Microsoft Corporation XML application framework
KR101338980B1 (ko) * 2006-07-12 2014-01-03 삼성전자주식회사 통합 플러그인 기능을 가지는 호스트 장치 및 그의 통합플러그인 생성 방법
JP4872759B2 (ja) * 2007-03-30 2012-02-08 ヤマハ株式会社 ミキシング装置
JP4903092B2 (ja) 2007-07-05 2012-03-21 株式会社リコー 画像処理装置、画像処理制御方法、及び画像処理制御プログラム
FI120857B (fi) * 2007-12-19 2010-03-31 Teliasonera Ab Päätelaite, tallennusmedia, palvelukeskus ja menetelmä
US8488951B2 (en) * 2009-07-09 2013-07-16 Nvidia Corporation Multimedia framework to provide ultra-low power multimedia playback
JP5391889B2 (ja) 2009-07-13 2014-01-15 株式会社リコー 画像形成装置、画像処理装置、画像処理システム、画像処理方法、プログラム、及び記録媒体
US9413854B1 (en) * 2013-07-15 2016-08-09 Amazon Technologies, Inc. Network-accessible signal processing service
CA2932763C (en) 2013-12-05 2022-07-12 Ab Initio Technology Llc Managing interfaces for dataflow graphs composed of sub-graphs
JP6152964B2 (ja) 2014-04-09 2017-06-28 三菱電機株式会社 エレベータ装置
WO2017112654A2 (en) 2015-12-21 2017-06-29 Ab Initio Technology Llc Sub-graph interface generation
JP6586118B2 (ja) * 2017-03-08 2019-10-02 株式会社三共 遊技機
JP6586120B2 (ja) * 2017-03-08 2019-10-02 株式会社三共 遊技機
JP6586121B2 (ja) * 2017-03-08 2019-10-02 株式会社三共 遊技機
JP6586119B2 (ja) * 2017-03-08 2019-10-02 株式会社三共 遊技機
JP2018175617A (ja) * 2017-04-19 2018-11-15 株式会社三共 遊技機
JP6943652B2 (ja) * 2017-07-10 2021-10-06 株式会社三共 遊技機
JP6943653B2 (ja) * 2017-07-10 2021-10-06 株式会社三共 遊技機
US11327802B2 (en) * 2019-07-31 2022-05-10 Microsoft Technology Licensing, Llc System and method for exporting logical object metadata
CN111324470B (zh) * 2020-01-20 2023-11-07 北京百度网讯科技有限公司 用于生成信息的方法及装置

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4378577A (en) * 1980-08-15 1983-03-29 Dictaphone Corporation Method and apparatus for recording and detecting indicating signals in a recording and/or reproducing device
US4796179A (en) * 1986-08-20 1989-01-03 Integrated Systems, Inc. Multirate real time control system code generator
US5249274A (en) 1990-10-24 1993-09-28 Vanderbilt University Simultaneous data-driven and demand-driven computational model for dynamically configured systems
US5331111A (en) * 1992-10-27 1994-07-19 Korg, Inc. Sound model generator and synthesizer with graphical programming engine
JPH0736858A (ja) * 1993-07-21 1995-02-07 Hitachi Ltd 信号処理プロセッサ
CA2153964A1 (en) * 1993-09-13 1995-03-23 Steven H. Milne Object-oriented audio record/playback system
US5793440A (en) * 1994-03-18 1998-08-11 Sony Corporation Key signal processing apparatus for video signal processing
US5883804A (en) * 1995-06-14 1999-03-16 Telex Communications, Inc. Modular digital audio system having individualized functional modules
JPH09106388A (ja) * 1995-10-11 1997-04-22 Oki Electric Ind Co Ltd 信号処理用並列型計算機
JPH10149281A (ja) * 1996-11-15 1998-06-02 Casio Comput Co Ltd 信号処理装置
US5913038A (en) * 1996-12-13 1999-06-15 Microsoft Corporation System and method for processing multimedia data streams using filter graphs
US5999906A (en) * 1997-09-24 1999-12-07 Sony Corporation Sample accurate audio state update
JP4158232B2 (ja) * 1998-07-23 2008-10-01 ソニー株式会社 画像情報変換装置および画像表示装置
US6185535B1 (en) * 1998-10-16 2001-02-06 Telefonaktiebolaget Lm Ericsson (Publ) Voice control of a user interface to service applications
US6937969B1 (en) * 1999-06-10 2005-08-30 Interuniversitair Microelektronica Centrum (Imec) Method for determining signals in mixed signal systems
GB2354105A (en) * 1999-09-08 2001-03-14 Sony Uk Ltd System and method for navigating source content
US6370682B1 (en) * 1999-09-15 2002-04-09 Siemens Atkiengesellschaft System and method for developing reusable flexible and platform independent software using components
US6829290B1 (en) * 1999-09-28 2004-12-07 Texas Instruments Incorporated Wireless communications system with combining of multiple paths selected from correlation to the primary synchronization channel
EP1186997A2 (en) 1999-11-30 2002-03-13 Texas Instruments Incorporated Graphical development system and method
US7080386B2 (en) * 2000-01-25 2006-07-18 Texas Instruments Incorporated Architecture with digital signal processor plug-ins for general purpose processor media frameworks
US6983464B1 (en) * 2000-07-31 2006-01-03 Microsoft Corporation Dynamic reconfiguration of multimedia stream processing modules
JP2002073439A (ja) * 2000-08-31 2002-03-12 Sony Corp 情報処理装置、情報処理方法及びプログラム格納媒体並びに情報処理システム
US20020065568A1 (en) * 2000-11-30 2002-05-30 Silfvast Robert Denton Plug-in modules for digital signal processor functionalities
GB2373975B (en) * 2001-03-30 2005-04-13 Sony Uk Ltd Digital audio signal processing
WO2003024137A1 (en) * 2001-09-13 2003-03-20 Nokia Corporation Signal processing device and signal processing method
US7742609B2 (en) * 2002-04-08 2010-06-22 Gibson Guitar Corp. Live performance audio mixing system with simplified user interface
AU2003256938A1 (en) 2002-07-31 2004-02-16 Thomson Licensing S.A. Packet processing architecture
US20040045007A1 (en) * 2002-08-30 2004-03-04 Bae Systems Information Electronic Systems Integration, Inc. Object oriented component and framework architecture for signal processing
US20040045009A1 (en) * 2002-08-29 2004-03-04 Bae Systems Information Electronic Systems Integration, Inc. Observation tool for signal processing components
JP3694005B2 (ja) * 2003-05-21 2005-09-14 沖電気工業株式会社 デジタル信号処理装置及びデジタル信号処理方法
US7441020B2 (en) * 2003-06-27 2008-10-21 Microsoft Corporation Media plug-in registration and dynamic loading
US7577940B2 (en) * 2004-03-08 2009-08-18 Microsoft Corporation Managing topology changes in media applications
US7609653B2 (en) * 2004-03-08 2009-10-27 Microsoft Corporation Resolving partial media topologies
JP4296421B2 (ja) * 2004-06-09 2009-07-15 ソニー株式会社 信号処理装置
JP4348546B2 (ja) * 2005-01-20 2009-10-21 ソニー株式会社 信号処理装置、信号処理プログラムおよび記録媒体

Also Published As

Publication number Publication date
CN100444111C (zh) 2008-12-17
KR101260295B1 (ko) 2013-05-03
EP1705569A3 (en) 2007-10-31
JP4622611B2 (ja) 2011-02-02
JP2006268409A (ja) 2006-10-05
US20060218525A1 (en) 2006-09-28
EP1705569A2 (en) 2006-09-27
CN1862490A (zh) 2006-11-15
US8555251B2 (en) 2013-10-08

Similar Documents

Publication Publication Date Title
KR101260295B1 (ko) 신호처리장치
KR101126255B1 (ko) 신호처리장치
US7275026B2 (en) Implicit frame-based processing for block-diagram simulation
JP2007510223A (ja) ダイアグラミング環境言語のための単純化データ信号サポート
JP2004021841A (ja) ハードウェア動作記述変換方法及びそのためのプログラム
KR101182262B1 (ko) 신호처리장치, 신호처리방법 및 기록 매체
Lauwereins et al. Geometric parallelism and cyclo-static data flow in GRAPE-II
US8120610B1 (en) Methods and apparatus for using aliases to display logic
JPH10228372A (ja) Gui自動作成システム
JP5275087B2 (ja) プログラム生成装置およびブロック線図生成装置
US20020143511A1 (en) Method and computer program product for system design support
US8694293B2 (en) Simulation support method, computer-readable storage medium storing simulation support program, and simulation support apparatus
Schacher et al. The SpatDIF library–Concepts and Practical Applications in Audio Software
CN113821204B (zh) 一种组件生成方法、装置、电子设备及可读存储介质
JP2005258917A (ja) 集積回路の設計支援システムおよび設計支援プログラム
KR20020072969A (ko) 멀티미디어 동기화 언어 편집기 및 그 편집방법
Townsend et al. Hardware in Haskell: Implementing memories in a stream-based world
JP2007122265A (ja) アニメーション編集システム
Peachey et al. FAUSTMapper: Facilitating Complex Mappings for Smart Musical Instruments.
JPH04274518A (ja) Dspの画像信号処理用プログラム作成装置
US8635055B1 (en) Composite signal configuration element for modeling environments
JP6052892B2 (ja) Guiスタブの自動生成装置、その方法およびプログラム
JPH1139307A (ja) 有向グラフ編集装置、有向グラフ編集方法及び有向グラフ編集プログラムを格納した記録媒体
KR20110014864A (ko) 데이터 플로우 프레임워크에 기반한 비디오 데이터의 3차원 재구성 시스템
Piché et al. Cecilia and TclCsound

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
LAPS Lapse due to unpaid annual fee