USRE41297E1 - Tone waveform generating method and apparatus based on software - Google Patents

Tone waveform generating method and apparatus based on software Download PDF

Info

Publication number
USRE41297E1
USRE41297E1 US09/456,877 US45687799A USRE41297E US RE41297 E1 USRE41297 E1 US RE41297E1 US 45687799 A US45687799 A US 45687799A US RE41297 E USRE41297 E US RE41297E
Authority
US
United States
Prior art keywords
tone waveform
tone
performance information
calculating
generating
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
US09/456,877
Inventor
Masahiro Shimizu
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yamaha Corp
Original Assignee
Yamaha Corp
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 Yamaha Corp filed Critical Yamaha Corp
Priority to US09/456,877 priority Critical patent/USRE41297E1/en
Application granted granted Critical
Publication of USRE41297E1 publication Critical patent/USRE41297E1/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H1/00Details of electrophonic musical instruments
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H7/00Instruments in which the tones are synthesised from a data store, e.g. computer organs
    • G10H7/002Instruments in which the tones are synthesised from a data store, e.g. computer organs using a common processing for different operations or calculations, and a set of microinstructions (programme) to control the sequence thereof
    • G10H7/006Instruments in which the tones are synthesised from a data store, e.g. computer organs using a common processing for different operations or calculations, and a set of microinstructions (programme) to control the sequence thereof using two or more algorithms of different types to generate tones, e.g. according to tone color or to processor workload
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H7/00Instruments in which the tones are synthesised from a data store, e.g. computer organs
    • G10H7/002Instruments in which the tones are synthesised from a data store, e.g. computer organs using a common processing for different operations or calculations, and a set of microinstructions (programme) to control the sequence thereof
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • 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/041Processor load management, i.e. adaptation or optimization of computational load or data throughput in computationally intensive musical processes to avoid overload artifacts, e.g. by deliberately suppressing less audible or less relevant tones or decreasing their complexity
    • 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
    • G10H2240/00Data organisation or data communication aspects, specifically adapted for electrophonic musical tools or instruments
    • G10H2240/171Transmission of musical instrument data, control or status information; Transmission, remote access or control of music data for electrophonic musical instruments
    • G10H2240/201Physical layer or hardware aspects of transmission to or from an electrophonic musical instrument, e.g. voltage levels, bit streams, code words or symbols over a physical link connecting network nodes or instruments
    • G10H2240/241Telephone transmission, i.e. using twisted pair telephone lines or any type of telephone network
    • 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
    • G10H2240/00Data organisation or data communication aspects, specifically adapted for electrophonic musical tools or instruments
    • G10H2240/171Transmission of musical instrument data, control or status information; Transmission, remote access or control of music data for electrophonic musical instruments
    • G10H2240/281Protocol or standard connector for transmission of analog or digital data to or from an electrophonic musical instrument
    • G10H2240/295Packet switched network, e.g. token ring
    • G10H2240/305Internet or TCP/IP protocol use for any electrophonic musical instrument data or musical parameter transmission purposes
    • 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
    • G10H2250/00Aspects of algorithms or signal processing methods without intrinsic musical character, yet specifically adapted for or used in electrophonic musical processing
    • G10H2250/541Details of musical waveform synthesis, i.e. audio waveshape processing from individual wavetable samples, independently of their origin or of the sound they represent

Definitions

  • the present invention relates to a method of and apparatus for generating a tone waveform by a computer executing a software program to calculate tone waveform sample values, to thereby allow a CPU or processor of a micro computer system to function as a tone generator.
  • Electronic musical instruments are conventionally known which implement a tone generator circuit by a tone generating software program executed by a CPU.
  • DAC digital-to-analog converter
  • the conventionally-known electronic musical instruments are designed to generate tone waveform samples by performing tone Generating calculation in response to Generation of each clock pulse. But, calculating a tone waveform sample value in response to each such clock pulse would undesirably result in inefficient operation of the CPU because preparing for and ending each tone waveform sample value calculation require a considerable overhead.
  • the present invention provides a method of generating a tone waveform based on automatic performance information, which includes executing a waveform calculating process for calculating tone waveform samples by sharing an arithmetic processing section with another process, and which is characterized by comprising the steps of detecting a portion of processing capability of the arithmetic processing section that is not currently occupied by the other process as available processing capability for the waveform calculating process, calculating a plurality of tone waveform samples based on the performance information in advance of predetermined generation timing thereof by executing the waveform calculating process using the available processing capability detected by the step of detecting, this step of calculating including a step of storing the calculated tone waveform samples in a memory, and generating a tone waveform by reading out the tone waveform samples from the memory.
  • the present invention is characterized in that a portion of processing capability of the arithmetic processing section that is not currently occupied by the other process is detected as available processing capability for the waveform calculating process and in that the waveform calculating process is executed using the thus-detected available processing capability so as to calculate tone waveform samples corresponding to the detected available processing capability.
  • the calculated tone waveform samples are stored in a memory and then output from the memory at a predetermined sampling frequency.
  • the calculation of the tone waveform samples is always executed in advance of predetermined generation timing when these samples are to be output. According to the present invention, tone waveform samples are calculated only to the amount corresponding to the detected available processing capability.
  • this arrangement of the invention permits extra tone waveform samples to be calculated and saved when sufficient processing capability of the arithmetic processing section is available for the waveform sample calculation, thus providing increased operational efficiency of the arithmetic processing section. Also, even when the arithmetic processing section is busy with another application program, i.e., even when the arithmetic processing section is used for the other application program with priority over the waveform sample calculation, tone waveform samples can continue to be output without a break by just reading out the tone waveform samples calculated and saved previously when sufficient processing capability of the arithmetic processing section was available for the waveform sample calculation, with the result that the other application program can be executed with increased efficiency.
  • the step of calculating a plurality of tone waveform samples may calculate one or more predetermined units of the tone waveform samples collectively depending on the detected available processing capability, with each of the units being a predetermined number of the tone waveform samples.
  • This arrangement of the invention can substantially reduce the overhead spent in preparing for the waveform sample value calculating process and the like.
  • the step of calculating starts calculating the tone waveform samples in advance of the step of generating, and the step of generating starts reading the tone waveform samples from the memory only after a plurality of the tone waveform samples are stored in the memory.
  • the step of calculating may calculate a predetermined number of tone waveform samples irrespective of the detected available processing capability.
  • the step of calculating may calculate a predetermined number of tone waveform samples irrespective of the detected available processing capability.
  • the present invention provides a method of generating a tone waveform based on performance information, which includes executing a waveform calculating process for calculating tone waveform samples by sharing an arithmetic processing section with another process, and which is characterized by comprising the steps of detecting an amount of calculation necessary for the other process when the waveform calculating process is to be executed, and calculating tone waveform samples by selectively executing the waveform calculating process that involves s different calculation amount depending on the amount of calculation necessary for the other process detected by the step of detecting.
  • This arrangement achieves efficient processing by permitting selective switching in the calculation amount of the waveform calculating process. For example, the calculation amount is made relatively small when the amount of calculation necessary for the other process is relatively great; otherwise the calculation amount is made relatively great.
  • tone waveform samples may be calculated with different precision depending on the calculation amount involved in the waveform calculating process. Namely, by selectively switching the calculating precision of the waveform calculating process depending on the amount of calculation necessary for the other process, tone waveform samples can be calculated with relatively low (coarse) precision when the amount of calculation necessary for the other process is relatively great, while tone waveform samples can be calculated with relatively high (fine) precision when the amount of calculation necessary for the other process is relatively small. This allows tone waveform samples to be generated without involving increased burdens on the arithmetic processing section and influencing the other process and without causing an unwanted break.
  • the present invention provides a method of generating tone waveforms corresponding to first performance information based on a real-time performance and second performance information based on an automatic performance, which includes executing a waveform calculating process for calculating tone waveform samples on the basis of the first and second performance information, respectively, by use of a common arithmetic processing section, and which is characterized by comprising the steps of calculating a predetermined number of first tone waveform samples for each predetermined period on the basis of the first performance information supplied in response to a real-time performance, detecting a portion of processing capability of the arithmetic processing section which is not currently occupied by a process for calculating the first tone waveform samples as available processing capability for generation of a tone waveform based on the second performance information, calculating second tone waveform samples based on the second performance information in advance of predetermined generation timing thereof using the available processing capability detected by the step of detecting, storing in a memory the first and second tone waveform samples calculated by the steps of calculating, and generating
  • the second tone waveform samples based on the second performance information are calculated and saved in advance of predetermined generation timing thereof, when sufficient processing capability of the arithmetic processing section is available.
  • the process for calculating the first tone waveform samples on the basis of the first performance information can be executed with priority over the process for calculating the second tone waveform samples.
  • the burdens on the arithmetic processing section are effectively distributed timewise, which achieves increased operational efficiency of the processing section.
  • FIG. 1 is a block diagram illustrating an exemplary hardware structure of a microcomputer system which has a tone generating function based on the principle of the present invention
  • FIGS. 2A to 2 D are diagrams illustrating exemplary configurations of various software programs stored in the microcomputer system of FIG. 1 ;
  • FIG. 3 is a timing chart explanatory of reproduction processing carried out in the microcomputer system
  • FIG. 4 is a flowchart illustrating exemplary operation of the microcomputer system
  • FIG. 5 is a flowchart illustrating a part of a detailed control flow of the reproduction processing.
  • FIG. 6 is a flowchart illustrating the remaining part of the control flow of the reproduction processing.
  • FIG. 1 is a block diagram illustrating an exemplary hardware structure of a microcomputer system 21 which has a tone generating function based on the principle of the present invention.
  • the microcomputer system 21 comprises a CPU 10 as an arithmetic processing section, to which are connected, via a bus 22 , a ROM 11 , a RAM 12 , a hard disk device 13 , a timer 14 , a serial interface 15 , a keyboard 16 , a display 17 and a reproduction section 18 .
  • the ROM 11 has prestored therein a basic operating program that is essential to the operation of the microcomputer system 21 .
  • the RAM 12 buffers data and a program to be executed, as well as various data occurring during execution of a program by the CPU 10 .
  • the hard disk device 13 has prestored therein a multimedia application software set as shown in FIG. 2 , etc. and the multimedia application software set is read into the RAM 12 prior to its execution.
  • the timer 14 outputs an interrupt signal to the CPU 10 and sends sampling clock pulses to the reproduction section 18 .
  • the serial interface 15 is provided for transmitting and receiving data and control signals to and from various external peripherals connected to the microcomputer system 21 .
  • the keyboard 16 and display 17 may both be of any suitable type depending on a particular application of the microcomputer system 21 .
  • the keyboard 16 may be the one conventional with an electronic piano keyboard or the like, and the display 17 may be a conventional LCD (Liquid Crystal Display).
  • the keyboard 16 may be one specialized to permit a selection from among pre-recorded music pieces and desired tempo control, and the display 17 may be a large-size CRT monitor.
  • the reproduction section 18 is a so-call sound board, which stores in its internal buffer waveform data for a plurality of samples received from the CPU 10 and outputs the waveform data to the D/A converter 19 in response to each sampling clock generated by the timer 14 .
  • the internal buffer of the reproduction section 18 is of a type where data can be additionally written, so that each group (i.e., block) of waveform data received from the CPU 10 is stored in the buffer immediately after another waveform data group being currently read out from the buffer.
  • the buffer may be constructed as a FIFO, dual-port or other suitable memory structure.
  • the D/A converter 19 converts each waveform data supplied from the reproduction section 18 into an analog tone signal, which is then audibly reproduced through a sound system 20 comprised of amplifiers and speakers.
  • a CD-ROM (compact disk) 23 may be used as a removably-attachable external recording medium for recording various data such as automatic performance data, chord progression data and tone waveform data and an optional operating program similarly to the above-mentioned.
  • Such an operating program and data stored in the CD-ROM 23 can be read out by a CD-ROM drive 24 to be transferred for storage into the hard disk 13 . This facilitates installation and version-up of the operating program.
  • the removably-attachable external recording medium may of course be other than the CD-ROM, such as a floppy disk and magneto optical disk (MO).
  • a communication interface 25 may be connected to the bus 22 so that the microcomputer system 21 can be connected via the interface 25 to a communication network 26 such as a LAN (Local Area Network), internet and telephone line network and can also be connected to an appropriate sever computer 27 via the communication network 26 .
  • a communication network 26 such as a LAN (Local Area Network), internet and telephone line network and can also be connected to an appropriate sever computer 27 via the communication network 26 .
  • these operating program and data can be received from the server computer 27 and downloaded into the hard disk 13 .
  • the microcomputer system 21 a “client”, sends a command requesting the server computer 27 to download the operating program and various data by way of the communication interface 25 and communication network 26 .
  • the server computer 27 delivers the requested operating program and data to the microcomputer system 21 via the communication network 26 .
  • the microcomputer system 21 completes the necessary downloading by receiving the operating program and data via the communication network 25 and storing these into the hard disk 13 .
  • the microcomputer system 21 may be implemented by installing the operating program and various data corresponding to the present invention in any commercially available personal computer.
  • the operating program and various data corresponding to the present invention may be provided to users in a recorded form on a recording medium, such as a CD-ROM or floppy disk, which is readable by the personal computer.
  • a recording medium such as a CD-ROM or floppy disk
  • the personal computer is connected to a communication network such as a LAN
  • the operating program and various data may be supplied to the personal computer via the communication network similarly to the above-mentioned.
  • FIG. 2 shows an exemplary configuration of the multimedia-type application software set stored in the RAM 12 of FIG. 1 .
  • this multimedia-type application software set which may for example be for karaoke performance or for game playing, comprises a header, overall control software, image control software, music control software and other control software.
  • the header contains various data indicative of a version, memory size, etc. of the multimedia-type application software set.
  • the overall control software controls the concurrent or parallel operation of the above-mentioned software in such a manner that all these software operates smoothly, and the image control software controls various images to be presented on the display 17 .
  • the music control software controls automatic performance based on automatic musical performance data and generation of a tone waveform based on performance data supplied on a real-time basis.
  • the other control software controls input by a user and other operations.
  • FIG. 2B shows a detail of the music control software, which includes reproduction processing software, a tone color data section, an automatic performance data section and a working area.
  • the reproduction processing software performs various operations, as flowcharted in FIGS. 4 , 5 and 6 , to simulate the function of a hardware tone generator.
  • the tone color data section contains various data to actually drive the reproduction processing software, including parameters for calculating waveform sample values and controlling envelopes, filter controlling parameters, etc.
  • the reproduction processing software is designed to simulate a PCM (Pulse Code Modulation) tone generator
  • the tone color data section contains waveform data themselves.
  • the automatic performance data section contains sequence data for automatically performing background and karaoke music.
  • the working area provides various registers to store data that become necessary as the reproduction processing software runs as well as data produced during various processes, and the working area corresponds to internal registers of a conventional hardware tone generator and registers of various peripherals (e.g., of an interface) connected thereto.
  • FIG. 2C shows a detail of the working area
  • FIG. 2D shows a detail of a sample buffer contained in the working area
  • FIG. 3 is a timing chart explanatory of tone waveform generating operations of the microcomputer system 21 .
  • the sample buffer is a ring buffer comprising “n” blocks BLK( 0 ) to BLK(n ⁇ 1), and according to the present invention, waveform data for 128 samples (128 waveform sample values) are written in each of the blocks.
  • the reproduction processing software is activated by a calculation triggering clock pulse BC generated every 128 sampling clock pulses.
  • the reproduction processing software sends stored waveform data of each of the blocks of the sample buffer to the reproduction section 18 , and also, while checking for the operational availability of the CPU 10 , writes waveform data into the block so far as the data writing does not adversely influence other operations.
  • Real-time performance data entered by the user or player via the keyboard 16 are input in response to a first calculation triggering clock pulse BC generated after the entry, so that corresponding waveform sample values are calculated.
  • the reproduction section 18 buffers the waveform data that are input via the CPU 10 in response to the calculation triggering clock pulse BC, and the buffered waveform data are then read out, one sample for each sampling clock, and supplied to the D/A converter 19 .
  • each of the blocks in the sample buffer in which waveform data are to be written is pointed to by a writing block pointer WP, while each of the blocks in the sample buffer from which waveform data are to be read out is pointed to by a reading block pointer RP.
  • reference character WF represents a write-enable flag
  • reference character RF represents a read-enable flag.
  • the read-enable flag RF is kept set throughout a period from the start to end of an automatic performance, and the write-enable flag WF is kept set throughout a period from writing of first data to writing of last data of an automatic performance.
  • the data writing and reading periods i.e., the periods during which the write-enable flag WF and the read-enable flag RF are set, do not conform to each other.
  • instructing data and instructing flag sections of the working area are written various instructions given from the overall control software, and these sections correspond to an instruction register within a conventional hardware tone generator.
  • data written in the instructing data and instructing flag sections are for example:
  • Part control data section of the working area contains tone color selecting data, tone volume level controlling data, etc. for each performance part in a case where multipart automatic performance data are to be reproduced.
  • Channel control data section contains control data on a per-channel basis since the reproduction processing software is designed to deal with simultaneous sounding of tones in a plurality of tone generating channels.
  • the channel control data include various data necessary for each of the channels to generate a tone signal, such as data designating a musical scale, a current address counter value, data determining a shape and current value of an envelope.
  • this channel control data section corresponds to registers within a conventional hardware tone generator.
  • FIG. 4 is a flowchart illustrating an example of a main routine of the reproduction processing software used in the microcomputer system 21 , in which reproduction processing is executed in a repetitive manner at step S 2 after initialization of step S 1 .
  • FIGS. 5 and 6 illustrate a detailed control flow of the reproduction processing.
  • the reproduction processing waits for a calculation triggering clock pulse BC to be generated. Assume that during this wait period, another process is being executed with the control returned to the overall control software.
  • the reproduction processing proceeds from step S 10 to step S 11 , where a determination is made as to whether the read-enable flag RF is currently set to a value of “1” or not. If answered in the affirmative at step S 11 , this means that an automatic performance is currently in progress, so that the reproduction processing goes to step S 12 to calculate waveform data for the automatic performance.
  • step S 13 the writing block pointer WP is incremented or advanced by one; however, because the sample buffer is a ring buffer as mentioned earlier, it is reset to “0” upon reaching its maximum value (this is true with incrementing operations of the writing and reading block pointers WP and RP as will be described later).
  • Automatic performance data corresponding to one block are reproduced at next step S 14 .
  • step S 15 it is determined whether there is sufficient time for calculating waveform data corresponding to the automatic performance data.
  • step S 16 calculation of waveform sample data is effected at step S 16 with relatively high precision (for example, 48 kHz in calculating frequency and 32 bits in data size), If, however, there is no sufficient time for such high-precision waveform data calculation as determined at step S 15 , the calculation is effected at step S 17 with the calculating precision lowered by a degree corresponding to the shortage of the calculating time.
  • the lowering of the calculating precision may be effected by lengthening the sampling clock period and/or reducing the number of bits to be calculated at a time.
  • step S 12 If the value of the writing block pointer WP is greater than that of the reading block pointer RP as determined at step S 12 , this means that waveform data of the block to be read out this time have already calculated, and thus the reproduction processing goes from step S 12 to step S 18 directly.
  • step S 18 a determination is made as to whether the automatic performance has come to an end, by ascertaining whether the block to be read out this time is a last block (i.e., a block containing an end point). If the block to be read out this time is the last block, generation and readout of waveform data based on the automatic performance data are no longer necessary, so that the write-enable flag WF and read-enable flag RF are both reset to “0” at step S 19 . After the resetting of the write-enable and read-enable flags WF and RF, the reproduction processing proceeds to step S 20 for calculation of a waveform corresponding to a real-time performance and transmission of the waveform data to the reproduction section 18 .
  • a last block i.e., a block containing an end point
  • step S 11 When an automatic performance is not under way and hence the read-enable flag RF is at a value of “0”, the reproduction processing goes directly from step S 11 to step S 20 in order to increment the reading block pointer RP.
  • Waveform data of the block specified by the reading block pointer RP (BLK(RP)) are transmitted to the reproduction section 18 at step S 23 as will be later described.
  • a tone waveform is calculated in response to the player's real-time performance data input at step S 21 , and the calculated waveform data are added into the block specified by the reading block pointer RP at step S 22 .
  • the waveform data are then supplied from the block to the reproduction section 18 at step S 23 .
  • the block is cleared at step S 24 now that the data of the block BLK(RP) are no longer necessary due to the data supply to the reproduction section 18 . Namely, “0” is written into every location of that block.
  • step S 30 the reproduction processing performs operations at and after step S 30 to effect data writing in advance of data reading.
  • step S 31 a determination is made as to whether there is time available for the “advanced” data writing, i.e., whether the CPU 10 is not busy with any other software concurrently run with the reproduction processing software. If there is time available for the data writing, the writing block pointer WP is incremented by one at step S 32 so as to point to a block in which data are to be written after this, and performance data corresponding to one block are read out for reproduction at step S 33 . Then, waveform data for one block are calculated on the basis of the read-out performance data at step S 34 , and the calculated waveform data are written into a block pointed to by the writing block pointer WP. In this case, the waveform data calculation is executed with high precision for all the tone generating channels because sufficient time can be spent on the calculation.
  • step S 35 the reproduction processing goes to step S 35 to make a determination as to whether the block for which the data writing has been executed this time is the last block, or to step S 36 to make a determination as to whether the sample buffer is now full of unread waveform data. If the block is the last block as determined at step S 35 , the write-enable flag WF is reset to “0” at step S 37 because it is no longer necessary to write waveform data, and then the reproduction processing is brought to an end.
  • step S 36 Writing new data when the sample buffer is full of unread data will result in overwriting unread data, and thus the reproduction processing is brought to an end after the affirmative determination at step S 36 . If the sample buffer is not full of unread data, i.e., has any other block available for writing data, as determined at step S 36 , the reproduction processing loops from step S 36 back to step S 31 . If it is determined at step S 31 that there is still time left, then the data writing is performed for a next block.
  • the reading block pointer RP is constructed as a so-called “free-running” counter because the sample buffer may be used for real-time performance data input when an automatic performance is not executed and the pointer RP is incremented whenever the reproduction processing steps through steps S 20 to S 24 .
  • the automatic performance is started (i.e., the read-enable flag RF is set to “1”) and the waveform data are read out properly from the beginning.
  • the data writing is executed (i.e., the write-enable flag WF is set to “1”) prior to the start of the automatic performance (i.e., the read-enable flag RF is set to “1”)
  • the function of executing the data writing (calculation) in advance of the data reading can be utilized effectively from the starting point of the automatic performance.
  • waveform data generating operations to be performed at that time can be skipped without any trouble since waveform data to be supplied to the reproduction section 18 at that timing have been generated and saved previously. This prevents operational delays in the other software processing. Because generation and supply to the reproduction section 18 of waveform data are conducted on a block-by-block basis, a determination as to whether there is time available is greatly facilitated and a plurality of waveform data can be generated collectively, which provide increased operating efficiency.
  • each of the blocks of the sample buffer has been described as storing 128 waveform samples, but, where the system is designed to no accept real-time performance data input, each of the blocks may be designed to store a greater number of samples, e.g., 1,024 or 4,096 samples, so as to permit the CPU 10 to operate more efficiently.
  • designing each of the blocks to store such a greater number of samples is not preferable in that intervals between the calculation triggering clock pulses BC become longer and hence greater time lags will occur from the real-time performance data input to actual sounding of a tone corresponding thereto.
  • a detection is made of calculating capability of the CPU 10 or arithmetic processing section that is unoccupied by other software processing and hence available for the reproduction processing and a specific number of tone waveform sample values corresponding to the unoccupied or available calculating capability are generated prior to predetermined readout timing of the sample values.
  • tone waveform sample values are set as a basic calculating unit and tone waveform sample values are actually calculated on a unit-by-unit basis, it is possible to reduce the overhead spent in preparing for the waveform value calculating processing etc. Furthermore, because a predetermined number of tone waveform sample values are already prepared and stored in memory at a starting point of an automatic performance, additional adjusting functions by the advanced calculation can be performed efficiently from the starting point of an automatic performance.
  • the present invention can prevent an unwanted break in generated sounds because the waveform calculating steps are always taken to prepare tone waveform sample values.
  • the present invention is characterized in that when calculating tone waveform sample values, a detection is made of an amount of calculation necessary for the arithmetic processing section to conduct other processing and the waveform sample value calculation is executed with different calculating precision which is selectable in accordance with the detected calculation amount for the other processing. Even when the arithmetic processing section is busy with the other processing, loads on the arithmetic processing section can be effectively lessened by selecting low calculating precision to reduce the amount of tone waveform sample calculation. As a result, generation of tone waveform data can be continued with no break and without influencing the other processing.
  • tone generating processing based on an automatic performance is executed in advance during a period when tone generating processing based on a real-time performance is not placing heavy burdens on the arithmetic processing section.
  • the burdens on the arithmetic processing section can be distributed timewise, which achieves greatly increased operational efficiency of the arithmetic processing section.

Landscapes

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

Abstract

A method of generating a tone waveform using a CPU is provided which prevents or minimizes operational delays of other software processing that is executed concurrently with tone waveform generating processing on a multitask basis. The CPU collectively calculates 128 (one block of) tone waveform sample values each corresponding to a sampling clock pulse, and transmits the calculated tone waveform sample values to a reproduction section in response to a predetermined calculation triggering clock pulse generated every 128 samples. When sufficient processing capability of the CPU performing the multitask is available for the waveform sample calculation, tone waveform sample values for one or more following blocks are also calculated and stored in a sample buffer in advance. When the CPU is too busy with the other software processing to execute the waveform sample calculation, it is just sufficient that the previously stored tone waveform sample values be read out to be transmitted to the reproduction section. This prevents operational delays of the other software processing.

Description

BACKGROUND OF THE INVENTION
The present invention relates to a method of and apparatus for generating a tone waveform by a computer executing a software program to calculate tone waveform sample values, to thereby allow a CPU or processor of a micro computer system to function as a tone generator.
Electronic musical instruments are conventionally known which implement a tone generator circuit by a tone generating software program executed by a CPU. In order to reproduce a tone waveform with such known electronic musical instruments, it is necessary to supply tone waveform sample values to a digital-to-analog converter (DAC) regularly in response to clock pulses corresponding to a predetermined sampling frequency. The conventionally-known electronic musical instruments are designed to generate tone waveform samples by performing tone Generating calculation in response to Generation of each clock pulse. But, calculating a tone waveform sample value in response to each such clock pulse would undesirably result in inefficient operation of the CPU because preparing for and ending each tone waveform sample value calculation require a considerable overhead.
To provide a solution to the problem, it has been proposed to calculate a plurality of tone waveform sample values together for each relatively long, optional calculating clock pulse that is generated once every predetermined plurality of sampling clock pulses. However, in cases where the tone generating software program is run concurrently with other software, such as business or game software, burdens on the CPU tend to be significantly great because tone waveform sample values for a plurality of samples have to be calculated in response to each calculating clock pulse, thus resulting in operational delays of the other software.
SUMMARY OF THE INVENTION
It is therefore an object of the present invention to provide a method of and apparatus for generating tone waveform samples by executing tone generating software, which can prevent or minimize operational delays of other software program executed concurrently with the tone generating software.
In order to accomplish the above-mentioned object, the present invention provides a method of generating a tone waveform based on automatic performance information, which includes executing a waveform calculating process for calculating tone waveform samples by sharing an arithmetic processing section with another process, and which is characterized by comprising the steps of detecting a portion of processing capability of the arithmetic processing section that is not currently occupied by the other process as available processing capability for the waveform calculating process, calculating a plurality of tone waveform samples based on the performance information in advance of predetermined generation timing thereof by executing the waveform calculating process using the available processing capability detected by the step of detecting, this step of calculating including a step of storing the calculated tone waveform samples in a memory, and generating a tone waveform by reading out the tone waveform samples from the memory.
The present invention is characterized in that a portion of processing capability of the arithmetic processing section that is not currently occupied by the other process is detected as available processing capability for the waveform calculating process and in that the waveform calculating process is executed using the thus-detected available processing capability so as to calculate tone waveform samples corresponding to the detected available processing capability. The calculated tone waveform samples are stored in a memory and then output from the memory at a predetermined sampling frequency. The calculation of the tone waveform samples is always executed in advance of predetermined generation timing when these samples are to be output. According to the present invention, tone waveform samples are calculated only to the amount corresponding to the detected available processing capability. In cases where a plurality of application programs are concurrently run on a multitask basis, this arrangement of the invention permits extra tone waveform samples to be calculated and saved when sufficient processing capability of the arithmetic processing section is available for the waveform sample calculation, thus providing increased operational efficiency of the arithmetic processing section. Also, even when the arithmetic processing section is busy with another application program, i.e., even when the arithmetic processing section is used for the other application program with priority over the waveform sample calculation, tone waveform samples can continue to be output without a break by just reading out the tone waveform samples calculated and saved previously when sufficient processing capability of the arithmetic processing section was available for the waveform sample calculation, with the result that the other application program can be executed with increased efficiency.
The step of calculating a plurality of tone waveform samples may calculate one or more predetermined units of the tone waveform samples collectively depending on the detected available processing capability, with each of the units being a predetermined number of the tone waveform samples. This arrangement of the invention can substantially reduce the overhead spent in preparing for the waveform sample value calculating process and the like.
Further, in a preferred embodiment, the step of calculating starts calculating the tone waveform samples in advance of the step of generating, and the step of generating starts reading the tone waveform samples from the memory only after a plurality of the tone waveform samples are stored in the memory.
When more than a predetermined number of unread tone waveform samples are not resident in the memory, the step of calculating may calculate a predetermined number of tone waveform samples irrespective of the detected available processing capability. Thus, even when more than a predetermined number of unread tone waveform samples are not resident in the memory (e.g., when no tone waveform sample is contained in the memory at all) due to the fact that the arithmetic processing section is too busy with another process to execute the advanced calculation of tone waveform samples, calculation of tone waveform samples can always be guaranteed to provide a predetermined number of tone waveform samples, which reliably prevents an unwanted break in generated tones.
According to another aspect, the present invention provides a method of generating a tone waveform based on performance information, which includes executing a waveform calculating process for calculating tone waveform samples by sharing an arithmetic processing section with another process, and which is characterized by comprising the steps of detecting an amount of calculation necessary for the other process when the waveform calculating process is to be executed, and calculating tone waveform samples by selectively executing the waveform calculating process that involves s different calculation amount depending on the amount of calculation necessary for the other process detected by the step of detecting.
This arrangement achieves efficient processing by permitting selective switching in the calculation amount of the waveform calculating process. For example, the calculation amount is made relatively small when the amount of calculation necessary for the other process is relatively great; otherwise the calculation amount is made relatively great.
Preferably, tone waveform samples may be calculated with different precision depending on the calculation amount involved in the waveform calculating process. Namely, by selectively switching the calculating precision of the waveform calculating process depending on the amount of calculation necessary for the other process, tone waveform samples can be calculated with relatively low (coarse) precision when the amount of calculation necessary for the other process is relatively great, while tone waveform samples can be calculated with relatively high (fine) precision when the amount of calculation necessary for the other process is relatively small. This allows tone waveform samples to be generated without involving increased burdens on the arithmetic processing section and influencing the other process and without causing an unwanted break.
According to still another aspect, the present invention provides a method of generating tone waveforms corresponding to first performance information based on a real-time performance and second performance information based on an automatic performance, which includes executing a waveform calculating process for calculating tone waveform samples on the basis of the first and second performance information, respectively, by use of a common arithmetic processing section, and which is characterized by comprising the steps of calculating a predetermined number of first tone waveform samples for each predetermined period on the basis of the first performance information supplied in response to a real-time performance, detecting a portion of processing capability of the arithmetic processing section which is not currently occupied by a process for calculating the first tone waveform samples as available processing capability for generation of a tone waveform based on the second performance information, calculating second tone waveform samples based on the second performance information in advance of predetermined generation timing thereof using the available processing capability detected by the step of detecting, storing in a memory the first and second tone waveform samples calculated by the steps of calculating, and generating tone waveforms corresponding to the real-time performance and automatic performance by synchronously reading the first and second tone waveform samples from the memory.
According to this arrangement, the second tone waveform samples based on the second performance information are calculated and saved in advance of predetermined generation timing thereof, when sufficient processing capability of the arithmetic processing section is available. Thus, when the first performance information is supplied in response to a real-time performance, the process for calculating the first tone waveform samples on the basis of the first performance information can be executed with priority over the process for calculating the second tone waveform samples. The burdens on the arithmetic processing section are effectively distributed timewise, which achieves increased operational efficiency of the processing section.
BRIEF DESCRIPTION OF THE DRAWINGS
For better understanding of various features of the present invention, the preferred embodiments of the invention will be described in detail hereinbelow with reference to the accompanying drawings, in which:
FIG. 1 is a block diagram illustrating an exemplary hardware structure of a microcomputer system which has a tone generating function based on the principle of the present invention;
FIGS. 2A to 2D are diagrams illustrating exemplary configurations of various software programs stored in the microcomputer system of FIG. 1;
FIG. 3 is a timing chart explanatory of reproduction processing carried out in the microcomputer system;
FIG. 4 is a flowchart illustrating exemplary operation of the microcomputer system;
FIG. 5 is a flowchart illustrating a part of a detailed control flow of the reproduction processing; and
FIG. 6 is a flowchart illustrating the remaining part of the control flow of the reproduction processing.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
FIG. 1 is a block diagram illustrating an exemplary hardware structure of a microcomputer system 21 which has a tone generating function based on the principle of the present invention. The microcomputer system 21 comprises a CPU 10 as an arithmetic processing section, to which are connected, via a bus 22, a ROM 11, a RAM 12, a hard disk device 13, a timer 14, a serial interface 15, a keyboard 16, a display 17 and a reproduction section 18. The ROM 11 has prestored therein a basic operating program that is essential to the operation of the microcomputer system 21. The RAM 12 buffers data and a program to be executed, as well as various data occurring during execution of a program by the CPU 10. The hard disk device 13 has prestored therein a multimedia application software set as shown in FIG. 2, etc. and the multimedia application software set is read into the RAM 12 prior to its execution. At predetermined regular intervals, the timer 14 outputs an interrupt signal to the CPU 10 and sends sampling clock pulses to the reproduction section 18. The serial interface 15 is provided for transmitting and receiving data and control signals to and from various external peripherals connected to the microcomputer system 21.
The keyboard 16 and display 17 may both be of any suitable type depending on a particular application of the microcomputer system 21. Where the system 21 is applied for example as an electronic musical instrument, the keyboard 16 may be the one conventional with an electronic piano keyboard or the like, and the display 17 may be a conventional LCD (Liquid Crystal Display). Where the system 21 is applied as a karaoke device, the keyboard 16 may be one specialized to permit a selection from among pre-recorded music pieces and desired tempo control, and the display 17 may be a large-size CRT monitor.
The reproduction section 18 is a so-call sound board, which stores in its internal buffer waveform data for a plurality of samples received from the CPU 10 and outputs the waveform data to the D/A converter 19 in response to each sampling clock generated by the timer 14. The internal buffer of the reproduction section 18 is of a type where data can be additionally written, so that each group (i.e., block) of waveform data received from the CPU 10 is stored in the buffer immediately after another waveform data group being currently read out from the buffer. The buffer may be constructed as a FIFO, dual-port or other suitable memory structure. The D/A converter 19 converts each waveform data supplied from the reproduction section 18 into an analog tone signal, which is then audibly reproduced through a sound system 20 comprised of amplifiers and speakers.
In the above-mentioned hard disk 13, there may be stored various other data such as automatic performance data and chord progression data and the above-mentioned operating program. By prestoring the operating program in the hard disk 13 rather than in the ROM 11 and loading the operating program into the RAM 12, the CPU 10 can operate in exactly the same way as where the operating program is stored in the ROM 11. This greatly facilitates version-up of the operation program, addition of an operating program, etc. A CD-ROM (compact disk) 23 may be used as a removably-attachable external recording medium for recording various data such as automatic performance data, chord progression data and tone waveform data and an optional operating program similarly to the above-mentioned. Such an operating program and data stored in the CD-ROM 23 can be read out by a CD-ROM drive 24 to be transferred for storage into the hard disk 13. This facilitates installation and version-up of the operating program. The removably-attachable external recording medium may of course be other than the CD-ROM, such as a floppy disk and magneto optical disk (MO).
A communication interface 25 may be connected to the bus 22 so that the microcomputer system 21 can be connected via the interface 25 to a communication network 26 such as a LAN (Local Area Network), internet and telephone line network and can also be connected to an appropriate sever computer 27 via the communication network 26. Thus, where the operating program and various data are not contained in the hard disk 13, these operating program and data can be received from the server computer 27 and downloaded into the hard disk 13. In such a case, the microcomputer system 21, a “client”, sends a command requesting the server computer 27 to download the operating program and various data by way of the communication interface 25 and communication network 26. In response to the command, the server computer 27 delivers the requested operating program and data to the microcomputer system 21 via the communication network 26. The microcomputer system 21 completes the necessary downloading by receiving the operating program and data via the communication network 25 and storing these into the hard disk 13.
It should be understood here that the microcomputer system 21 may be implemented by installing the operating program and various data corresponding to the present invention in any commercially available personal computer. In such a case, the operating program and various data corresponding to the present invention may be provided to users in a recorded form on a recording medium, such as a CD-ROM or floppy disk, which is readable by the personal computer. Where the personal computer is connected to a communication network such as a LAN, the operating program and various data may be supplied to the personal computer via the communication network similarly to the above-mentioned.
FIG. 2 shows an exemplary configuration of the multimedia-type application software set stored in the RAM 12 of FIG. 1. As shown in FIG. 2A, this multimedia-type application software set, which may for example be for karaoke performance or for game playing, comprises a header, overall control software, image control software, music control software and other control software. The header contains various data indicative of a version, memory size, etc. of the multimedia-type application software set. The overall control software controls the concurrent or parallel operation of the above-mentioned software in such a manner that all these software operates smoothly, and the image control software controls various images to be presented on the display 17. The music control software controls automatic performance based on automatic musical performance data and generation of a tone waveform based on performance data supplied on a real-time basis. The other control software controls input by a user and other operations.
FIG. 2B shows a detail of the music control software, which includes reproduction processing software, a tone color data section, an automatic performance data section and a working area. The reproduction processing software performs various operations, as flowcharted in FIGS. 4, 5 and 6, to simulate the function of a hardware tone generator. The tone color data section contains various data to actually drive the reproduction processing software, including parameters for calculating waveform sample values and controlling envelopes, filter controlling parameters, etc. Where the reproduction processing software is designed to simulate a PCM (Pulse Code Modulation) tone generator, the tone color data section contains waveform data themselves. The automatic performance data section contains sequence data for automatically performing background and karaoke music. The working area provides various registers to store data that become necessary as the reproduction processing software runs as well as data produced during various processes, and the working area corresponds to internal registers of a conventional hardware tone generator and registers of various peripherals (e.g., of an interface) connected thereto.
FIG. 2C shows a detail of the working area, FIG. 2D shows a detail of a sample buffer contained in the working area, and FIG. 3 is a timing chart explanatory of tone waveform generating operations of the microcomputer system 21. As shown, the sample buffer is a ring buffer comprising “n” blocks BLK(0) to BLK(n−1), and according to the present invention, waveform data for 128 samples (128 waveform sample values) are written in each of the blocks.
In FIG. 3, the reproduction processing software is activated by a calculation triggering clock pulse BC generated every 128 sampling clock pulses. The reproduction processing software sends stored waveform data of each of the blocks of the sample buffer to the reproduction section 18, and also, while checking for the operational availability of the CPU 10, writes waveform data into the block so far as the data writing does not adversely influence other operations. Real-time performance data entered by the user or player via the keyboard 16 are input in response to a first calculation triggering clock pulse BC generated after the entry, so that corresponding waveform sample values are calculated. The reproduction section 18 buffers the waveform data that are input via the CPU 10 in response to the calculation triggering clock pulse BC, and the buffered waveform data are then read out, one sample for each sampling clock, and supplied to the D/A converter 19.
As shown in FIG. 2D, each of the blocks in the sample buffer in which waveform data are to be written is pointed to by a writing block pointer WP, while each of the blocks in the sample buffer from which waveform data are to be read out is pointed to by a reading block pointer RP. In FIG. 2C, reference character WF represents a write-enable flag and reference character RF represents a read-enable flag. The read-enable flag RF is kept set throughout a period from the start to end of an automatic performance, and the write-enable flag WF is kept set throughout a period from writing of first data to writing of last data of an automatic performance. Because the data writing takes place in advance of the data reading in accordance with the present invention, the data writing and reading periods, i.e., the periods during which the write-enable flag WF and the read-enable flag RF are set, do not conform to each other.
In instructing data and instructing flag sections of the working area are written various instructions given from the overall control software, and these sections correspond to an instruction register within a conventional hardware tone generator. Specifically, data written in the instructing data and instructing flag sections are for example:
    • data designating a specific music piece number for which automatic performance data are to be reproduced, because the music control software contains automatic performance data for a plurality of music pieces;
    • data designating a range to be reproduced in a case where only part of performance data of a specific music piece are to be reproduced;
    • data designating a tone color for each performance part; and
    • real-time performance data input via the keyboard 16 and serial I/O 15 which may be suitably received the above-mentioned other control software.
Part control data section of the working area contains tone color selecting data, tone volume level controlling data, etc. for each performance part in a case where multipart automatic performance data are to be reproduced.
Channel control data section contains control data on a per-channel basis since the reproduction processing software is designed to deal with simultaneous sounding of tones in a plurality of tone generating channels. Specifically, the channel control data include various data necessary for each of the channels to generate a tone signal, such as data designating a musical scale, a current address counter value, data determining a shape and current value of an envelope. Namely, this channel control data section corresponds to registers within a conventional hardware tone generator.
Exemplary operation of the microcomputer system 21 will be described in greater detail hereinbelow with reference to flowcharts of FIGS. 4, 5 and 6. FIG. 4 is a flowchart illustrating an example of a main routine of the reproduction processing software used in the microcomputer system 21, in which reproduction processing is executed in a repetitive manner at step S2 after initialization of step S1.
FIGS. 5 and 6 illustrate a detailed control flow of the reproduction processing. First, at step S10, the reproduction processing waits for a calculation triggering clock pulse BC to be generated. Assume that during this wait period, another process is being executed with the control returned to the overall control software. Upon generation of the calculation triggering clock pulse BC, the reproduction processing proceeds from step S10 to step S11, where a determination is made as to whether the read-enable flag RF is currently set to a value of “1” or not. If answered in the affirmative at step S11, this means that an automatic performance is currently in progress, so that the reproduction processing goes to step S12 to calculate waveform data for the automatic performance. At step S12, a comparison is made between current values of the writing block pointer WP and the reading block pointer RP. If the current value of the writing block pointer WP equals that of the reading block pointer RP (WP=RP), this means that waveform data of a block to be read out (to be sent to the reproduction section 18) this time have not yet been calculated, and thus arithmetic operations are performed at steps S13 to S17 to calculate waveform data of that block.
At step S13, the writing block pointer WP is incremented or advanced by one; however, because the sample buffer is a ring buffer as mentioned earlier, it is reset to “0” upon reaching its maximum value (this is true with incrementing operations of the writing and reading block pointers WP and RP as will be described later). Automatic performance data corresponding to one block are reproduced at next step S14. Then, at step S15, it is determined whether there is sufficient time for calculating waveform data corresponding to the automatic performance data. If answered in the affirmative at step S15, calculation of waveform sample data is effected at step S16 with relatively high precision (for example, 48 kHz in calculating frequency and 32 bits in data size), If, however, there is no sufficient time for such high-precision waveform data calculation as determined at step S15, the calculation is effected at step S17 with the calculating precision lowered by a degree corresponding to the shortage of the calculating time. The lowering of the calculating precision may be effected by lengthening the sampling clock period and/or reducing the number of bits to be calculated at a time. After step S6 or S17, the reproduction processing proceeds to step S18.
If the value of the writing block pointer WP is greater than that of the reading block pointer RP as determined at step S12, this means that waveform data of the block to be read out this time have already calculated, and thus the reproduction processing goes from step S12 to step S18 directly.
At step S18, a determination is made as to whether the automatic performance has come to an end, by ascertaining whether the block to be read out this time is a last block (i.e., a block containing an end point). If the block to be read out this time is the last block, generation and readout of waveform data based on the automatic performance data are no longer necessary, so that the write-enable flag WF and read-enable flag RF are both reset to “0” at step S19. After the resetting of the write-enable and read-enable flags WF and RF, the reproduction processing proceeds to step S20 for calculation of a waveform corresponding to a real-time performance and transmission of the waveform data to the reproduction section 18.
When an automatic performance is not under way and hence the read-enable flag RF is at a value of “0”, the reproduction processing goes directly from step S11 to step S20 in order to increment the reading block pointer RP. Waveform data of the block specified by the reading block pointer RP (BLK(RP)) are transmitted to the reproduction section 18 at step S23 as will be later described. A tone waveform is calculated in response to the player's real-time performance data input at step S21, and the calculated waveform data are added into the block specified by the reading block pointer RP at step S22. The waveform data are then supplied from the block to the reproduction section 18 at step S23. After this, the block is cleared at step S24 now that the data of the block BLK(RP) are no longer necessary due to the data supply to the reproduction section 18. Namely, “0” is written into every location of that block.
After step S24, the reproduction processing performs operations at and after step S30 to effect data writing in advance of data reading. At step S30, a determination is made as to whether the write-enable flag WF is currently set to “1” (WF=1). If answered in the affirmative at step S30, this means that there is any other automatic performance data to be written, so that data writing operations are performed at and after steps S31. If, on the other hand, the write-enable flag WF is not currently set to “1” (WF=0), this means that predetermined automatic performance have been calculated to the end, so that the reproduction processing is brought to an end without performing any other operations.
At step S31, a determination is made as to whether there is time available for the “advanced” data writing, i.e., whether the CPU 10 is not busy with any other software concurrently run with the reproduction processing software. If there is time available for the data writing, the writing block pointer WP is incremented by one at step S32 so as to point to a block in which data are to be written after this, and performance data corresponding to one block are read out for reproduction at step S33. Then, waveform data for one block are calculated on the basis of the read-out performance data at step S34, and the calculated waveform data are written into a block pointed to by the writing block pointer WP. In this case, the waveform data calculation is executed with high precision for all the tone generating channels because sufficient time can be spent on the calculation.
Thereafter, the reproduction processing goes to step S35 to make a determination as to whether the block for which the data writing has been executed this time is the last block, or to step S36 to make a determination as to whether the sample buffer is now full of unread waveform data. If the block is the last block as determined at step S35, the write-enable flag WF is reset to “0” at step S37 because it is no longer necessary to write waveform data, and then the reproduction processing is brought to an end. The determination as to whether the sample buffer is now full of unread waveform data is made by checking whether the writing block pointer WP has catch up with the reading block pointer RP after making a round through the ring buffer in advance of the reading block pointer RP (WP=RP−1). Writing new data when the sample buffer is full of unread data will result in overwriting unread data, and thus the reproduction processing is brought to an end after the affirmative determination at step S36. If the sample buffer is not full of unread data, i.e., has any other block available for writing data, as determined at step S36, the reproduction processing loops from step S36 back to step S31. If it is determined at step S31 that there is still time left, then the data writing is performed for a next block.
In the above-described reproduction processing, the reading block pointer RP is constructed as a so-called “free-running” counter because the sample buffer may be used for real-time performance data input when an automatic performance is not executed and the pointer RP is incremented whenever the reproduction processing steps through steps S20 to S24. Therefore, when waveform data are to be written into the sample buffer prior to a start of an automatic performance (i.e., before the read-enable flag RF is set to “1”), it is determined how earlier than the start of an automatic performance the writing of waveform data should be initiated (namely, a determination is made of a specific number of counts of the calculation triggering clock pulses BC by which the writing of waveform data should precede the automatic performance start), and then the writing block pointer WP is set to a value equivalent to a sum of a current value of the writing block pointer WP and the number of counts by which the data writing should precede the data reading. After this, the write-enable flag is set to “1” so that leading waveform data start being written into the block pointed to by the writing block pointer WP.
Once the specific number of the calculation triggering clock pulses B are generated and hence the reading block pointer RP reaches the block where the waveform data writing was initiated, the automatic performance is started (i.e., the read-enable flag RF is set to “1”) and the waveform data are read out properly from the beginning. By virtue of the arrangement that the data writing is executed (i.e., the write-enable flag WF is set to “1”) prior to the start of the automatic performance (i.e., the read-enable flag RF is set to “1”), the function of executing the data writing (calculation) in advance of the data reading can be utilized effectively from the starting point of the automatic performance.
In summary, according to the above-described embodiment, there are provided a plurality of storage regions (blocks) for storing waveform data (waveform sample values), waveform data to be supplied to the D/A converter 19 are generated collectively in advance during a period when the amount of calculation necessary for another software processing executed in parallel with the reproduction processing software is small (i.e., when the CPU 10 is not busy with the other software processing), and the thus-generated waveform data are stored in the blocks of the sample buffer. Thus, when the calculation amount of the other software processing increases temporarily, waveform data generating operations to be performed at that time can be skipped without any trouble since waveform data to be supplied to the reproduction section 18 at that timing have been generated and saved previously. This prevents operational delays in the other software processing. Because generation and supply to the reproduction section 18 of waveform data are conducted on a block-by-block basis, a determination as to whether there is time available is greatly facilitated and a plurality of waveform data can be generated collectively, which provide increased operating efficiency.
Each of the blocks of the sample buffer has been described as storing 128 waveform samples, but, where the system is designed to no accept real-time performance data input, each of the blocks may be designed to store a greater number of samples, e.g., 1,024 or 4,096 samples, so as to permit the CPU 10 to operate more efficiently. However, where the system accepts real-time performance data input, designing each of the blocks to store such a greater number of samples is not preferable in that intervals between the calculation triggering clock pulses BC become longer and hence greater time lags will occur from the real-time performance data input to actual sounding of a tone corresponding thereto.
The present invention arranged in the above-described manner achieves the following benefits.
According to the present invention, a detection is made of calculating capability of the CPU 10 or arithmetic processing section that is unoccupied by other software processing and hence available for the reproduction processing and a specific number of tone waveform sample values corresponding to the unoccupied or available calculating capability are generated prior to predetermined readout timing of the sample values. Thus, when a plurality of applications are run concurrently on a multitask basis, it is allowed to calculate waveform data collectively for memory storage utilizing the unoccupied or available calculating capability, which permits the CPU or arithmetic processing section to operate with greatly increased efficiency. Because it is just sufficient that the previously stored waveform data be read out to be transmitted to the reproduction section 18 when the arithmetic processing section is busy with another application, processing by the other application can be performed efficiently without being influenced by the waveform sample calculation.
Further, because a predetermined number of tone waveform sample values are set as a basic calculating unit and tone waveform sample values are actually calculated on a unit-by-unit basis, it is possible to reduce the overhead spent in preparing for the waveform value calculating processing etc. Furthermore, because a predetermined number of tone waveform sample values are already prepared and stored in memory at a starting point of an automatic performance, additional adjusting functions by the advanced calculation can be performed efficiently from the starting point of an automatic performance.
Moreover, even when the advanced calculation of tone waveform sample values can not be conducted due to great loads placed on the arithmetic processing section by other processing, the present invention can prevent an unwanted break in generated sounds because the waveform calculating steps are always taken to prepare tone waveform sample values.
In addition, the present invention is characterized in that when calculating tone waveform sample values, a detection is made of an amount of calculation necessary for the arithmetic processing section to conduct other processing and the waveform sample value calculation is executed with different calculating precision which is selectable in accordance with the detected calculation amount for the other processing. Even when the arithmetic processing section is busy with the other processing, loads on the arithmetic processing section can be effectively lessened by selecting low calculating precision to reduce the amount of tone waveform sample calculation. As a result, generation of tone waveform data can be continued with no break and without influencing the other processing.
Moreover, according to the present invention, tone generating processing based on an automatic performance is executed in advance during a period when tone generating processing based on a real-time performance is not placing heavy burdens on the arithmetic processing section. As a result, the burdens on the arithmetic processing section can be distributed timewise, which achieves greatly increased operational efficiency of the arithmetic processing section.

Claims (75)

1. A method of generating a tone waveform based on automatic performance information, using a processor device executing a plurality of different programs on a time division basis, said method including executing a waveform calculating process for calculating tone waveform samples on the basis of one of the programs by sharing the processor device with another process based on another one of the programs, said method comprising the steps of:
detecting an available time portion in which said processor device is not currently used for the other process, as available processing capability for the waveform calculating process;
calculating a plurality of tone waveform samples based on the performance information in advance of predetermined generation timing thereof by executing the waveform calculating process using said available processing capability detected by said step of detecting, said step of calculating including a step of storing the calculated tone waveform samples in a memory; and
generating a tone waveform by reading out the tone waveform samples from the memory.
2. A method as defined in claim 1 wherein said step of calculating calculates one or more predetermined units of the tone waveform samples depending on said detected available processing capability, each said unit being a predetermined number of the tone waveform samples.
3. A method as defined in claim 1 wherein said step of calculating starts calculating the tone waveform samples in advance of said step of generating, and said step of generating starts reading the tone waveform samples from the memory after a plurality of the tone waveform samples are stored in the memory.
4. A method as defined in claim 1 wherein when more than a predetermined number of unread tone waveform samples are not resident in the memory, said step of calculating calculates a predetermined number of tone waveform samples irrespective of said detected available processing capability.
5. A method of generating a tone waveform based on automatic performance information, using a processor device executing a plurality of different programs on a time division basis, said method including executing a waveform calculating process for calculating tone waveform samples on the basis of one of the programs by sharing the processor device with another process based on another one of the programs, the waveform calculating process being executed per predetermined constant period so as to collectively generate a plurality of tone waveform samples per execution of the waveform calculating process, said method comprising the steps of:
detecting an amount of calculation time necessary for the other process, when the waveform calculating process is to be executed; and
calculating tone waveform samples by selectively executing the waveform calculating process that involves a variable calculation amount which depends on said amount of calculation time necessary for the other process detected by said step of detecting; and
outputting the tone waveform generated by the waveform calculating process.
6. A method as defined in claim 5 wherein said step of calculating calculates the tone waveform samples with different precision depending on the calculation amount involved in the waveform calculating process.
7. A method of generating tone waveforms corresponding to first performance information based on a real-time performance and second performance information based on an automatic performance, which includes executing a waveform calculating process for calculating tone waveform samples on the basis of said first and second performance information, respectively, by use of a common arithmetic processing section, said method comprising the steps of:
calculating a predetermined number of first tone waveform samples for each predetermined period on the basis of said first performance information supplied in response to a real-time performance;
detecting a portion of processing capability of said arithmetic processing section which is not currently occupied by a process for calculating said first tone waveform samples, as available processing capability for generation of a tone waveform based on said second performance information;
calculating second tone waveform samples based on said second performance information in advance of predetermined generation timing thereof, using said available processing capability detected by said step of detecting;
storing in a memory said first and second tone waveform samples calculated by said steps of calculating; and
generating tone waveforms corresponding to the real-time performance and automatic performance by synchronously reading said first and second tone waveform samples from the memory.
8. A method as defined in claim 7 wherein said step of storing in a memory includes a step of adding said first and second tone waveform samples for each sample corresponding to same generation timing so as to store resultant added tone waveform samples in the memory, and said step of generating reads out the added tone waveform samples from the memory.
9. A method of generating tone waveforms corresponding to first performance information based on a real-time performance and second performance information based on an automatic performance, which includes executing a waveform calculating process for calculating tone waveform samples on the basis of said first and second performance information, respectively, by use of a common arithmetic processing section, said method comprising the steps of:
calculating a predetermined number of first tone waveform samples for each predetermined block period on the basis of said first performance information supplied in response to a real-time performance, said step of calculating including a step of, at optional a time within first said block period, calculating said predetermined number of first tone waveform samples to be generated within second said block period following said first block period and storing the calculated first tone waveform samples in a memory, said first tone waveform samples stored in the memory being sequentially read out at regular sampling intervals in said second block period;
detecting a portion of processing capability of said arithmetic processing section which is not currently occupied by a process for calculating said first tone waveform samples, as available processing capability for generation of a tone waveform based on said second performance information;
calculating second tone waveform samples based on said second performance information in advance of predetermined generation timing thereof, using said available processing capability detected by said step of detecting, said step of calculating second tone waveform samples including a step of storing in a memory the calculated second tone waveform samples; and
generating tone waveform samples corresponding to the real-time performance and automatic performance by, at regular sampling intervals, reading out from the memory said first and second tone waveform samples corresponding to each same said block period.
10. A method as defined in claim 9 wherein said step of storing said first and second tone waveform samples adds said first and second tone waveform samples, for each sample, that are to be generated in same said block period so as to store resultant added tone waveform samples in the memory, and said step of generating reads out the added tone waveform samples from the memory.
11. A machine-readable recording medium containing a group of instructions to cause said machine to generate a tone waveform based on automatic performance information by executing a waveform calculating process for calculating tone waveform samples by using a processor device, the processor device also executing another process in response to a different group of instructions, said medium group of instructions executable by said processor device to perform a method comprising the steps of:
means for instructing the machine to detect a time portion in which said processor device is not currently used for the other process, as available processing capability for the waveform calculating process;
means for instructing the machine to calculate a plurality of tone waveform samples based on the automatic performance information in advance of predetermined generation timing thereof by executing the waveform calculating process using said detected available processing capability, said means for instructing the machine to calculate including means for instructing the machine to store the calculated tone waveform samples in a memory; and
means for instructing the machine to generate a tone waveform by reading out the tone waveform samples from the memory.
12. A machine-readable recording medium containing a group of instructions to cause said machine to generate a tone waveform based on performance information by executing a waveform calculating process for calculating tone waveform samples by using a processor device, the processor device also executing another process in response to a different group of instructions, said medium comprising the waveform calculating process being executed per predetermined constant period so as to collectively generate a plurality of tone waveform samples per execution of the waveform calculating process, said group of instructions executable by said processor device to perform a method comprising the steps of:
means for instructing the machine to detect an amount of calculation time necessary for the other process, when the waveform calculating process is to be executed;
means for instructing the machine to calculate tone waveform samples by selectively executing the waveform calculating process that involves a variable calculation amount that depends on said detected amount of calculation time necessary for the other process; and
means for instructing the machine to generate a tone waveform based on the calculated tone waveform samples.
13. A machine-readable recording medium containing a group of instructions to cause said machine to generate tone waveforms corresponding to first performance information based on a real-time performance and second performance information based on an automatic performance, by executing a waveform calculating process for calculating tone waveform samples on the basis of said first and second performance information, respectively, by use of a common arithmetic processing section, said medium group of instructions comprising the steps of:
means for instructing the machine to calculate a predetermined number of first tone waveform samples for each predetermined period on the basis of said first performance information supplied in response to a real-time performance;
means for instructing the machine to detect a portion of the processing capability of said arithmetic processing section which is not currently occupied by a process for calculating said first tone waveform samples, as available processing capability for generation of a tone waveform based on said second performance information;
means for instructing the machine to calculate second tone waveform samples based on said second performance information in advance of predetermined generation timing thereof, using said detected available processing capability;
means for instructing the machine to store in a memory said first and second tone waveform samples calculated by said steps of calculating; and
means for instructing the machine to generate tone waveforms corresponding to the real-time performance and automatic performance by synchronously reading said first and second tone waveform samples from the memory.
14. A machine-readable recording medium containing a group of instructions to cause said machine to generate tone waveforms corresponding to first performance information based on a real-time performance and second performance information based on an automatic performance, by executing a waveform calculating process for calculating tone waveform samples on the basis of said first and second performance information, respectively, by use of a common arithmetic processing section, said medium group of instructions comprising the steps of:
means for instructing the machine to calculate a predetermined number of first tone waveform samples for each predetermined block period on the basis of said first performance information supplied in response to a real-time performance, including means for instructing the machine to calculate, at an optional time within a first said block period, said predetermined number of first tone waveform samples to be generated within a second said block period following said first block period, and means for instructing the machine to store the calculated first tone waveform samples in a memory, and sequentially read out at regular sampling intervals in said second block period said first tone waveform samples stored in the memory;
means for instructing the machine to detect a portion of the processing capability of said arithmetic processing section which is not currently occupied by the process of calculating said first tone waveform samples, as available processing capability for generation of a tone waveform based on said second performance information;
means for instructing the machine to calculate second tone waveform samples based on said second performance information in advance of predetermined generation timing thereof, using said detected available processing capability, said means for instructing the machine to calculate second tone waveform samples including means for instructing the machine to store in a memory the calculated second tone waveform samples; and
means for instructing the machine to generate tone waveform samples corresponding to the real-time performance and automatic performance by, at regular sampling intervals, reading out from the memory said first and second tone waveform samples corresponding to each same said block period.
15. A computer system for generating a tone waveform based on automatic performance information, said computer system comprising:
a memory device that stores a plurality of programs; and
a processor device that executes a waveform generating process including a waveform calculating process for calculating tone waveform samples based on a predetermined one of said programs, and one or more other processes based on other of said programs in a parallel manner on a time-divisional basis,
wherein said processor device predetermined one of said programs includes the steps of:
means for detecting an available time portion in which said processor device is not currently occupied by the other process, as available processing capability for the waveform calculating process;
means for calculating a plurality of tone waveform samples based on the performance information in advance of predetermined generation timing thereof by executing the waveform calculating process using said available processing capability detected by said means forstep of detecting;
means for storing the calculated tone waveform samples in a memory; and
means for generating a tone waveform by reading out the tone waveform samples from the memory.
16. A computer system for generating a tone waveform based on performance information, said computer system comprising:
a memory device that stores a plurality of programs; and
a processor device that executes a waveform generating process including a waveform calculating process for calculating tone waveform samples based on a predetermined one of said programs and one or more other processes based on other of said programs in a parallel manner on a time-division basis, the waveform calculating process being executed per predetermined constant period so as to collectively generate a plurality of tone waveform samples per execution of the waveform calculating process,
wherein said processor device predetermined one of said programs includes the steps of:
means for detecting an amount of calculation time necessary for said other process, when the waveform calculating process is to be executed; and
means for calculating tone waveform samples by selectively executing the waveform calculating process that involves a variable calculation amount which depends on said amount of calculation necessary for said other process detected by said means for detecting.
17. A computer system for generating tone waveforms corresponding to first performance information based on a real-time performance and second performance information based on an automatic performance, which executes a waveform calculating process for calculating tone waveform samples on the basis of said first and second performance information, respectively, by use of a common arithmetic processing section, said computer system waveform calculating process comprising the steps of:
means for calculating a predetermined number of first tone waveform samples for each predetermined period on the basis of said first performance information supplied in response to a real-time performance;
means for detecting a portion of processing capability of said arithmetic processing section which is not currently occupied by a process for calculating said first tone waveform samples, as available processing capability for generation of a tone waveform based on said second performance information;
means for calculating second tone waveform samples based on said second performance information in advance of predetermined generation timing thereof, using said available processing capability detected by said means forstep of detecting;
means for storing in a memory said first and second tone waveform samples calculated by said means forstep of calculating; and
means for generating tone waveforms corresponding to the real-time performance and automatic performance by synchronously reading said first and second tone waveform samples from the memory.
18. A computer system for generating tone waveforms corresponding to first performance information supplied in response to a real-time performance and second performance information supplied in response to an automatic performance, which executes a waveform calculating process for calculating tone waveform samples on the basis of said first and second performance information, respectively, by use of a common arithmetic processing section, said computer system waveform calculating process comprising the steps of:
means for calculating a predetermined number of first tone waveform samples for each predetermined block period on the basis of said first performance information supplied in response to a real-time performance, said means forstep of calculating, at optionala time within first said block period, calculating said predetermined number of first tone waveform samples to be generated within second said block period following said first block period and storing the calculated first tone waveform samples in a memory, said first tone waveform samples stored in the memory being sequentially read out at regular sampling intervals in said second block period;
means for detecting a portion of processing capability of said arithmetic processing section which is not currently occupied by a process for calculating said first tone waveform samples, as available processing capability for generation of a tone waveform based on said second performance information;
means for calculating second tone waveform samples based on said second performance information in advance of predetermined generation timing thereof, using said available processing capability detected by said means forstep of detecting, said means forstep of calculating second tone waveform samples also storing in a memory the calculated second tone waveform samples; and
means for generating tone waveform samples corresponding to the real-time performance and automatic performance by, at regular sampling intervals, reading out from the memory said first and second tone waveform samples corresponding to each same said block period.
19. A method of generating a tone waveform by a processor which executes a waveform value calculating process, in parallel with another process, for calculating a tone waveform value for each sampling timing on the basis of performance information, said method comprising the steps of:
detecting a remaining available portion of processing capability of said processor that is not currently used by the other process;
executing the waveform value calculating process based on the performance information using the detected remaining available portion of processing capability so as to generate a given quantity of tone waveform values, wherein said given quantity corresponds to the detected remaining available portion, and storing the generated tone waveform values in a storage section;
determining whether the waveform value calculating process in said step of executing is being executed in advance of given read timing;
when said step of determining determines that the waveform value calculating process is not being executed in advance of the given read timing, calculating a given quantity of tone waveform values on the basis of the performance information and storing the calculated tone waveform values in the storage section; and
generating a tone waveform by reading out, from the storage section, the tone waveform values at the read timing arriving at given time intervals.
20. A method of generating a tone waveform by a processor which executes a waveform value calculating process, in parallel with another process, for calculating a tone waveform value for each sampling timing on the basis of received performance information, said method comprising the steps of:
calculating a given quantity of tone waveform values in advance of given read timing, by executing the waveform value calculating process based on the performance information;
storing the tone waveform values calculated by said calculation step in storage locations of a storage section indicated by writing location data and renewing the writing location data;
generating a tone waveform by reading out, from storage locations of the storage section indicated by reading location data, the tone waveform values at the read timing arriving at given time intervals and then renewing the reading location data; and
controlling, in response to a difference between said writing location data and reading location data, calculation progression of said step of calculating.
21. A method as recited in claim 20 which further comprises a step of detecting a remaining available portion of processing capability of said processor that is not currently used by the other process, and wherein said step of calculating calculates a quantity of tone waveform values corresponding to the remaining available portion detected by said step of detecting, by executing the waveform value calculating process based on the performance information using the detected remaining available portion.
22. A method as recited in claim 21 wherein said storing step further comprises the step of providing a ring buffer for said storage section.
23. A method as recited in claim 20 wherein said storing step further comprises the step of providing a ring buffer for said storage section.
24. A method of generating a tone waveform by a processor which executes a waveform value calculating process, in parallel with another process, for calculating a tone waveform value for each sampling timing on the basis of received performance information, said method comprising the steps of:
detecting a remaining available portion of processing capability of said processor that is not currently used by the other process;
calculating a given quantity of tone waveform values in advance of given read timing, by executing the waveform value calculating process based on the performance information;
storing the tone waveform values calculated by said step of calculating in storage locations of a storage section indicated by writing location data and renewing the writing location data;
generating a tone waveform by reading out, from storage locations of the storage section indicated by reading location data, the tone waveform values at read timing arriving at given time intervals and renewing the reading location data;
further calculating a given quantity of tone waveform values, on the basis of a relationship between said reading location data and said writing location data, by executing the waveform value calculating process based on the performance information; and
further storing the tone waveform values calculated by said step of further calculating in storage locations of the storage section corresponding to the writing location data and renewing the writing location data.
25. A method as recited in claim 24 wherein said storing step further comprises the step of providing a ring buffer for said storage section.
26. A tone waveform synthesizing apparatus comprising:
a storage adapted to temporarily store a plurality of tone waveform samples, said storage permitting the writing and reading, independently of each other, in a parallel fashion, said storage further storing a waveform forming program; and
a processor coupled to said storage and adapted to collectively generate a plurality of tone waveform samples in advance of predetermined reproduction timing, by executing the waveform forming program stored in said storage, said processor adapted to control writing of the generated tone waveform samples into said storage and reading out the tone waveform samples from said storage at said reproduction timing, the writing and reading into and from said storage being controlled independently of each other and also in such a manner that an advance of the writing does not outpace an advance of the reading.
27. A tone waveform synthesizing apparatus as recited in claim 26 wherein said storage permits the writing and reading, independently of each other, in accordance with separate write instruction and readout instruction signals, respectively, and
wherein said processor is adapted to control the write instruction signal so that the tone waveform samples are sequentially written into said storage from a beginning of a predetermined storage region of said storage and, upon arrival at an end of the predetermined storage region, the writing of the tone waveform samples returns to the beginning of the predetermined storage region and also that a writing location, in the storage region, indicated by the write instruction signal does not get ahead of a reading location, in the storage region, indicated by the read instruction signal.
28. A method of generating a tone waveform, said method comprising the steps of:
collectively generating a plurality of tone waveform samples in advance of predetermined reproduction timing, by a processor executing a waveform forming program;
writing, into a storage, the plurality of tone waveform samples produced by said generating step, said storage being capable of writing and reading, independently of each other, in a parallel fashion;
reading out the stored tone waveform samples from said storage at said reproduction timing;
controlling writing and reading into and from said storage by said steps of writing and reading independently of each other and also in such manner that an advance of the writing does not outpace an advance of the reading; and
outputting the tone waveform samples read by said steps of the reading.
29. A method as recited in claim 28 wherein said steps of writing and reading into and from said storage further comprise the steps of being performed, independently of each other, in accordance with separate write instruction and readout instruction signals, respectively, and
wherein said step of controlling further comprises the step of controlling the write instruction signal so that the tone waveform samples are sequentially written into said storage from a beginning of a predetermined storage region of said storage and, upon arrival at an end of the predetermined storage region, the writing of the tone waveform samples returns to the beginning of the predetermined storage region and also that a writing location, in the storage region, indicated by the write instruction signal does not get ahead of a reading location, in the storage region, indicated by the read instruction signal.
30. A method of generating a tone waveform based on performance information, using a processor executing a tone waveform forming program stored in a storage, said method comprising the steps of:
receiving automatic performance information;
receiving real-time performance information generated in response to a real-time performance operation;
generating tone waveform samples using said processor, said step of generating including a step of collectively generating a plurality of tone waveform samples in advance of predetermined reproduction timing on the basis of the received automatic performance information and a step of collectively generating a plurality of tone waveform samples in advance of predetermined reproduction timing on the basis of the received real-time performance information, said step of generating being capable of generating the tone waveform samples based on the automatic performance information and the tone waveform samples based on the real-time performance information in a parallel fashion; and
outputting the tone waveform samples generated by said step of generating.
31. A method as recited in claim 30 wherein said step of outputting further includes a step of mixing the tone waveform samples based on the automatic performance information and the tone waveform samples based on the real-time performance information to thereby provide mixtures of the samples, each of the mixtures being composed of the tone waveform samples to be reproduced at a same reproduction timing, and a step of writing the mixtures into an output buffer.
32. A method as recited in claim 30 wherein said step of generating further comprises the step of performing arithmetic operations for generating the tone waveform samples based on the automatic performance information and the tone waveform samples based on the real-time performance information, independently of each other, in such a manner that an advance of the arithmetic operations for the tone waveform samples based on the automatic performance information and an advance of the arithmetic operations for the tone waveform samples based on the real-time performance information differ from each other.
33. A method as recited in claim 32 wherein said step of generating further comprises the step of advancing arithmetic operations for the tone waveform samples based on the automatic performance information within an extent of an available processing capability taking into account a current processing capability of said processor.
34. A method of generating a tone waveform using a processor capable of executing a plurality of different programs on a time divisional basis, said method comprising the steps of:
supplying said processor with application software including at least an image control program for controlling image display, a music control program for controlling tone generation, and a general control program, said music control program including tone color data;
causing said processor to execute, under control by the general control program, the image control program and the music control program in a parallel fashion, to output image data generated as a result of execution of the image control program and tone waveform data generated as a result of execution of the music control program;
detecting an available time portion in which said processor is not currently used for any other process than a tone waveform generating process, as an available processing capability for the tone waveform generating process, wherein the tone waveform generating process is controlled by the music control program to generate the tone waveform data;
causing said processor to execute the tone waveform generating process based on the music control program, using the available processing capability detected by said step of detecting; and
outputting the tone waveform generated by the waveform generating process.
35. A method as recited in claim 34 wherein the supplying step further comprises the step of including in the music control program, within the tone color data, waveform data pertaining to at least one given tone color.
36. A method as recited in claim 34 wherein the supplying step further comprises the step of including within the music control program a tone waveform generating program for generating tone waveform samples on the basis of performance information.
37. A method as recited in claim 34 wherein the supplying step further comprises the step of including, with the application software, software directed to at least one of a karaoke and a game.
38. A method as recited in claim 34 wherein the supplying step further comprises the step of supplying the application software to said processor via a communication network.
39. A method as recited in claim 34 wherein the supplying step further comprises the step of supplying the application software to said processor by setting, in said processor, a transportable medium storing the application software.
40. A machine-readable medium for use in an apparatus having a processor, said medium including instructions executable by said processor for causing said apparatus to perform a method of generating a tone waveform, said method comprising the steps of:
collectively generating a plurality of tone waveform samples in advance of predetermined reproduction timing;
writing, into a storage, the plurality of tone waveform samples produced by said generating step, said storage being capable of writing and reading, independently of each other, in a parallel fashion;
reading out the stored tone waveform samples from said storage at said reproduction timing;
controlling writing and reading into and from said storage by said steps of writing and reading independently of each other and also in such a manner that an advance of the writing does not outpace an advance of the reading; and
outputting the tone waveform samples read by said step of the reading.
41. The medium as recited in claim 40 wherein said steps of writing and reading into and from said storage further comprise the steps of being performed, independently of each other, in accordance with separate write instruction and readout instruction signals, respectively, and
wherein said step of controlling further comprises the step of controlling the write instruction signal so that the tone waveform samples are sequentially written into said storage from a beginning of a predetermined storage region of said storage and, upon arrival at an end of the predetermined storage region, the writing of the tone waveform samples returns to the beginning of the predetermined storage region and also that a writing location, in the storage region, indicated by the write instruction signal does not get ahead of a reading location, in the storage region, indicated by the read instruction signal.
42. A machine-readable medium for use in an apparatus having a processor, said medium including instructions executable by said processor for causing said apparatus to perform a method of generating a tone waveform by executing a waveform value calculating process, in parallel with another process, for calculating a tone waveform value for each sampling timing on the basis of performance information, said method comprising the steps of:
detecting a remaining available portion of processing capability of said processor that is not currently used by the other process;
executing the waveform value calculating process based on the performance information using the detected remaining available portion of processing capability so as to generate a given quantity of tone waveform values, wherein said given quantity corresponds to the detected remaining available portion, and storing the generated tone waveform values in a storage section;
determining whether the waveform value calculating process in said step of executing is being executed in advance of given read timing;
when said step of determining determines that the waveform value calculating process is not being executed in advance of the given read timing, calculating a given quantity of tone waveform values on the basis of the performance information and storing the calculated tone waveform values in the storage section; and
generating a tone waveform by reading out, from the storage section, the tone waveform values at the read timing arriving at given time intervals.
43. A machine-readable medium for use in an apparatus having a processor, said medium including instructions executable by said processor for causing said apparatus to perform a method of generating a tone waveform by executing a waveform value calculating process, in parallel with another process, for calculating a tone waveform value for each sampling timing on the basis of received performance information, said method comprising the steps of:
calculating a given quantity of tone waveform values in advance of given read timing, by executing the waveform value calculating process based on the performance information;
storing the tone waveform values calculated by said calculation step in storage locations of a storage section indicated by writing location data and renewing the writing location data;
generating a tone waveform by reading out, from storage locations of the storage section indicated by reading location data, the tone waveform values at the read timing arriving at given time intervals and then renewing the reading location data; and
controlling, in response to a difference between said writing location data and reading location data, calculation progression of said step of calculating.
44. A medium as recited in claim 43 which further comprises a step of detecting a remaining available portion of processing capability of said processor that is not currently used by the other process, and wherein said step of calculating calculates a quantity of tone waveform values corresponding to the remaining available portion detected by said step of detecting, by executing the waveform value calculating process based on the performance information using the detected remaining available portion.
45. A medium as recited in claim 44 wherein said storing step further comprises the step of providing a ring buffer for said storage section.
46. A medium as recited in claim 43 wherein said storing step further comprises the step of providing a ring buffer for said storage section.
47. A machine-readable medium for use in an apparatus having a processor, said medium including instructions executable by said processor for causing said apparatus to perform a method of generating a tone waveform by executing a waveform value calculating process, in parallel with another process, for calculating a tone waveform value for each sampling timing on the basis of received performance information, said method comprising the steps of:
detecting a remaining available portion of processing capability of said processor that is not currently used by the other process;
calculating a given quality of tone waveform values in advance of given read timing, by executing the waveform value calculating process based on the performance information;
storing the tone waveform values calculated by said step of calculating in storage locations of a storage section indicated by writing location data and reviewing the writing location data;
generating a tone waveform by reading out, from storage locations of the storage section indicated by reading location data, the tone waveform values at read timing arriving at given time intervals and renewing the reading location data;
further calculating a given quantity of tone waveform values, on the basis of a relationship between said reading location data and said writing location data, by executing the waveform value calculating process based on the performance information; and
further storing the tone waveform values calculated by said step of further calculating in storage locations of the storage section corresponding to the writing location data and renewing the writing location data.
48. A method as recited in claim 47 wherein said storing step further comprises the step of providing a ring buffer for said storage section.
49. A tone waveform generating apparatus comprising:
a processor;
storage coupled to said processor and adapted to store tone waveform values;
a program memory storing instructions executable by said processor for causing said apparatus to generate tone waveforms by executing a waveform value calculating process, in parallel with another process, for calculating a tone waveform value for each sampling timing on the basis of performance information, said program memory comprising the steps of:
detecting a remaining available portion of processing capability of said processor that is not currently used by the other process;
executing the waveform value calculating process based on the performance information using the detected remaining available portion of processing capability so as to generate a given quantity of tone waveform values, wherein said given quantity corresponds to the detected remaining available portion, and storing the generated tone waveform values in said storage;
determining whether the waveform value calculating process in said step of executing is being executed in advance of given read timing,
when said step of determining determines that the waveform value calculating process is not being executed in advance of the given read timing, calculating a given quantity of tone waveform values on the basis of the performance information and storing the calculated tone waveform values in said storage; and
generating a tone waveform by reading out, from said storage, the tone waveform values at the read timing arriving at given time intervals.
50. A tone waveform generating apparatus comprising:
a processor;
storage coupled to said processor and adapted to store a plurality of tone waveform samples; and
a program memory storing instructions executable by said processor for causing said apparatus to generate tone waveforms by executing a waveform value calculating process, in parallel with another process, for calculating a tone waveform value for each sampling timing on the basis of received performance information, said program memory comprising the steps of:
calculating a given quantity of tone waveform values in advance of given read timing, by executing a waveform value calculating process based on performance information;
storing the tone waveform values calculated by said calculation step in storage locations of said storage indicated by writing location data and renewing the writing location data;
generating a tone waveform by reading out, from storage locations of said storage indicated by reading locations data, the tone waveform values at the read timing arriving at given time intervals and then renewing the reading location data; and
controlling, in response to a difference between said writing location data and reading location data, calculation progression of said step of calculating.
51. An apparatus as recited in claim 50 wherein said program memory further comprises the step of detecting a remaining available portion of processing capability of said processor that is not currently used by the other process, and wherein said step of calculating calculates a quantity of tone waveform values corresponding to the remaining available portion detected by said step of detecting, by executing the waveform value calculating process based on the performance information using the detected remaining available portion.
52. An apparatus as recited in claim 51 wherein said storage further comprises a ring buffer.
53. A method as recited in claim 50 wherein said storage further comprises a ring buffer.
54. A tone waveform generating apparatus comprising:
a processor;
storage coupled to said processor and adapted to store data;
a program memory storing instructions executable by said processor for causing said apparatus to generate tone waveforms by executing a waveform value calculating process, in parallel with another process, to calculate a tone waveform value for each sampling timing on the basis of received performance information, said program memory comprising the steps of:
detecting a remaining available portion of processing capability of said processor that is not currently used by the other process;
calculating a given quantity of tone waveform values in advance of given read timing, by executing the waveform value calculating process based on the performance information;
storing the tone waveform values calculated by said step of calculating in storage locations of said storage indicated by writing location data and renewing the writing location data;
generating a tone waveform by reading out, from storage locations of said storage indicated by reading location data, the tone waveform values at read timing arriving at given time intervals and renewing the reading location data;
further calculating a given quantity of tone waveform values, on the basis of a relationship between said reading location data and said writing location data, by executing the waveform value calculating process based on the performance information; and
further storing the tone waveform values calculated by said step of further calculating in storage locations of said storage corresponding to the writing location data and renewing the writing location data.
55. An apparatus as recited in claim 54 wherein said storage further comprises a ring buffer.
56. A machine-readable medium for use in an apparatus having a processor, said medium including instructions executable by said processor for causing said apparatus to perform a method of generating a tone waveform based on performance information, said method comprising the steps of:
receiving automatic performance information;
receiving real-time performance information generated in response to a real-time performance operation;
generating tone waveform samples using said processor, said step of generating including a step of collectively generating a plurality of toe waveform samples in advance of predetermined reproduction timing on the basis of the received automatic performance information and a step of collectively generating a plurality of tone waveform samples in advance of predetermined reproduction timing on the basis of the received real-time performance information, said step of generating being capable of generating the tone waveform samples based on the automatic performance information and the tone waveform samples based on the real-time performance information in a parallel fashion; and
outputting the tone waveform samples generated by said step of generating.
57. A medium as recited in claim 56 wherein said step of outputting further includes a step of mixing the tone waveform samples based on the automatic performance information and the tone waveform samples based on the real-time performance information to thereby provide mixtures of the samples, each of the mixtures being composed of the tone waveform samples to be reproduced at a same reproduction timing, and a step of writing the mixtures into an output buffer.
58. A medium as recited in claim 56 wherein said step of generating further comprises the step of performing arithmetic operations for generating the tone waveform samples based on the performance information and the tone waveform samples based on the real-time performance information, independently of each other, in such a manner that an advance of the arithmetic operations for the tone waveform samples based on the performance information and an advance of the arithmetic operations for the tone waveform samples based on the real-time performance information differ from each other.
59. A medium as recited in claim 58 wherein said step of generating further comprises the step of advancing arithmetic operations for the tone waveform samples based on the performance information within an extent of an available processing capability taking into account a current processing capability of said processor.
60. A machine-readable medium for use in an apparatus having a processor, said medium including instructions executable by said processor for causing said apparatus to perform a method of generating a tone waveform by executing a plurality of different programs on the time divisional basis, said method comprising the step of:
supplying said processor with application software including at least an image control program for controlling image display, a music control program for controlling tone generation, and a general control program, said music control program including tone color data;
causing said processor to execute, under control by the general control program, the image control program and the music control program in a parallel fashion, to output image data generated as a result of execution of the image control program and tone waveform data generated as a result of execution of the music control program;
detecting an available time portion in which said processor is not currently used for any other process than a tone waveform generating process, as an available processing capability for the tone waveform generating process; and
causing said processor to execute the tone waveform generating process based on the music control program, using the available processing capability detected by said step of detecting.
61. A medium as recited in claim 60 wherein the supplying step further comprises the step of including in the music control program, within the tone color data, waveform data pertaining to at least one given tone color.
62. A medium as recited in claim 60 wherein the supplying step further comprises the step of including within the music control program a tone waveform generating program for generating tone waveform samples on the basis of performance information.
63. A medium as recited in claim 60 wherein the supplying step further comprises the step of including, with the application software, software directed to at least one of a karaoke and a game.
64. A medium as recited in claim 60 wherein the supplying step further comprises the step of supplying the application software to said processor via a communication network.
65. A medium as recited in claim 60 wherein the supplying step further comprises the step of supplying the application software to said processor by setting, in said processor, a transportable medium storing the application software.
66. A tone waveform generating apparatus comprising:
storage adapted to receive automatic performance information and to receive real-time performance information generated in response to a real-time performance operation; and
a processor coupled to said storage and adapted to execute a tone waveform forming program stored in said storage, said processor generating tone waveform samples by collectively generating a plurality of tone waveform samples in advance of predetermined reproduction timing on the basis of the automatic performance information and by collectively generating a plurality of tone waveform samples in advance of predetermined reproduction timing on the basis of the real-time performance information, said processor further generating the tone waveform samples based on the automatic performance information and the tone waveform samples based on the real-time performance information in a parallel fashion and outputting the generated tone waveform samples.
67. An apparatus as recited in claim 66 wherein said processor further mixes the tone waveform samples based on the automatic performance information and the tone waveform samples based on the real-time performance information to thereby provide mixtures of the samples, each of the mixtures being composed of the tone waveform samples to be reproduced at a same reproduction timing, said processor further writing the mixtures into an output buffer.
68. An apparatus as recited in claim 66 wherein said processor further performs arithmetic operations to generate the tone waveform samples based on the automatic performance information and the tone waveform samples based on the real-time performance information, independently of each other, in such a manner that an advance of the arithmetic operations for the tone waveform samples based on the automatic performance information and an advance of the arithmetic operations for the tone waveform samples based on the real-time performance information differ from each other.
69. An apparatus as recited in claim 68 wherein said processor further advances arithmetic operations for the tone waveform samples based on the automatic performance information within an extent of an available processing capability taking into account a current processing capability of said processor.
70. A tone waveform generating apparatus comprising:
storage adapted to storage application software including at least an image control program for controlling image display, a music control program for controlling tone generation, and a general control program, said music control program including tone color data;
a processor coupled to said storage and adapted to generate a tone waveform by executing a plurality of different programs on a time divisional basis, said processor adapted to execute, under control by the general control program, the image control program and the music control program in a parallel fashion, to output image data generated as a result of execution of the image control program and tone waveform data generated as a result of execution of the music control program; and
detecting an available time portion in which said processor is not currently used for any other process than a tone waveform generating process, as an available processing capability for the tone waveform generating process; and
causing said processor to execute the tone waveform generating process based on the music control program, using the available processing capability detected by said step of detecting.
71. An apparatus as recited in claim 70 wherein the tone color data included in the music control program contains waveform data pertaining to at least one given tone color.
72. An apparatus as recited in claim 70 wherein the music control program includes a tone waveform generating program for generating tone waveform samples on the basis of performance information.
73. An apparatus as recited in claim 70 wherein the application software further comprises software directed to at least one of a karaoke and a game.
74. An apparatus as recited in claim 70 wherein said application software is supplied via a communication network.
75. An apparatus as recited in claim 70 wherein said application software is supplied to said processor by setting, in said processor, a transportable medium storing the application software.
US09/456,877 1995-07-05 1999-12-08 Tone waveform generating method and apparatus based on software Expired - Lifetime USRE41297E1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/456,877 USRE41297E1 (en) 1995-07-05 1999-12-08 Tone waveform generating method and apparatus based on software

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP16953195A JP3267106B2 (en) 1995-07-05 1995-07-05 Musical tone waveform generation method
JP7-169531 1995-07-05
US08/675,447 US5696342A (en) 1995-07-05 1996-07-03 Tone waveform generating method and apparatus based on software
US09/456,877 USRE41297E1 (en) 1995-07-05 1999-12-08 Tone waveform generating method and apparatus based on software

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US08/675,447 Reissue US5696342A (en) 1995-07-05 1996-07-03 Tone waveform generating method and apparatus based on software

Publications (1)

Publication Number Publication Date
USRE41297E1 true USRE41297E1 (en) 2010-05-04

Family

ID=15888229

Family Applications (2)

Application Number Title Priority Date Filing Date
US08/675,447 Ceased US5696342A (en) 1995-07-05 1996-07-03 Tone waveform generating method and apparatus based on software
US09/456,877 Expired - Lifetime USRE41297E1 (en) 1995-07-05 1999-12-08 Tone waveform generating method and apparatus based on software

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US08/675,447 Ceased US5696342A (en) 1995-07-05 1996-07-03 Tone waveform generating method and apparatus based on software

Country Status (8)

Country Link
US (2) US5696342A (en)
EP (2) EP0752697B1 (en)
JP (1) JP3267106B2 (en)
KR (1) KR100392621B1 (en)
DE (2) DE69625625T2 (en)
HK (1) HK1013161A1 (en)
SG (1) SG80651A1 (en)
TW (1) TW300298B (en)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1011091B1 (en) * 1995-09-29 2004-04-28 Yamaha Corporation Musical tone-generating method and musical tone-generating apparatus
SG67993A1 (en) * 1996-08-30 1999-10-19 Yamaha Corp Sound source system based on computer software and method of generating acoustic waveform data
US6758755B2 (en) 1996-11-14 2004-07-06 Arcade Planet, Inc. Prize redemption system for games executed over a wide area network
US5913258A (en) * 1997-03-11 1999-06-15 Yamaha Corporation Music tone generating method by waveform synthesis with advance parameter computation
JP4240575B2 (en) 1998-05-15 2009-03-18 ヤマハ株式会社 Musical sound synthesis method, recording medium, and musical sound synthesizer
JP3781171B2 (en) 2000-06-22 2006-05-31 ヤマハ株式会社 Music generation method
JP3675362B2 (en) 2000-08-18 2005-07-27 ヤマハ株式会社 Musical sound generating device and portable terminal device
ES2305182T3 (en) * 2002-09-02 2008-11-01 Telefonaktiebolaget Lm Ericsson (Publ) SOUND SYNTHETIZER.
US20060005690A1 (en) * 2002-09-02 2006-01-12 Thomas Jacobsson Sound synthesiser
US20050010485A1 (en) * 2003-07-11 2005-01-13 Quadratic Systems Corporation Integrated system and method for selectively populating and managing multiple, site-specific, interactive, user stations
US7723601B2 (en) 2007-03-22 2010-05-25 Qualcomm Incorporated Shared buffer management for processing audio files
US7663052B2 (en) * 2007-03-22 2010-02-16 Qualcomm Incorporated Musical instrument digital interface hardware instruction set

Citations (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4128032A (en) * 1974-11-14 1978-12-05 Matsushita Electric Industrial Co., Ltd. Electronic music instrument
WO1980001215A1 (en) 1978-12-11 1980-06-12 Microskill Ltd An output processing system for a digital electronic musical instrument
US4373416A (en) * 1976-12-29 1983-02-15 Nippon Gakki Seizo Kabushiki Kaisha Wave generator for electronic musical instrument
JPS6452196U (en) 1987-09-28 1989-03-30
EP0376342A2 (en) 1988-12-29 1990-07-04 Casio Computer Company Limited Data processing apparatus for electronic musical instruments
US5029120A (en) * 1985-02-01 1991-07-02 Analogic Corporation Electrical wavefrom generator means and methods
EP0463409A2 (en) 1990-06-28 1992-01-02 Casio Computer Company Limited Musical tone waveform generation apparatus
JPH0462595A (en) 1990-07-02 1992-02-27 Casio Comput Co Ltd Processor for electronic musical instrument
EP0484047A2 (en) 1990-11-01 1992-05-06 International Business Machines Corporation Method and apparatus for simultaneous output of digital audio and midi synthesised music
JPH04136994A (en) 1990-06-28 1992-05-11 Casio Comput Co Ltd Musical tone waveform generator
US5121667A (en) 1989-11-06 1992-06-16 Emery Christopher L Electronic musical instrument with multiple voices responsive to mutually exclusive ram memory segments
US5200564A (en) 1990-06-29 1993-04-06 Casio Computer Co., Ltd. Digital information processing apparatus with multiple CPUs
US5276273A (en) 1990-07-18 1994-01-04 Kabushiki Kaisha Kawai Gakki Seisakusho Electronic musical instrument with a parameter storage for tone generation including an enhanced edit function
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
EP0597381A2 (en) 1992-11-13 1994-05-18 International Business Machines Corporation Method and system for decoding binary data for audio application
US5319151A (en) * 1988-12-29 1994-06-07 Casio Computer Co., Ltd. Data processing apparatus outputting waveform data in a certain interval
US5317947A (en) 1989-03-29 1994-06-07 Yamaha Corporation Musical tone generator with a multiple parameter write operation
US5345035A (en) 1992-07-10 1994-09-06 Yamaha Corporation Musical tone generating apparatus
JPH06308958A (en) 1993-04-26 1994-11-04 Roland Corp Musical tone controller of electronic musical instrument
US5376752A (en) * 1993-02-10 1994-12-27 Korg, Inc. Open architecture music synthesizer with dynamic voice allocation
US5428183A (en) 1992-12-24 1995-06-27 Kabushiki Kaisha Kawai Gakki Seisakusho Tone signal generating apparatus for performing a timbre change by storing a full frequency band in a wave memory
US5432293A (en) 1991-12-13 1995-07-11 Yamaha Corporation Waveform generation device capable of reading waveform memory in plural modes
US5448009A (en) 1992-07-07 1995-09-05 Yamaha Corporation Electronic musical instrument including tone generator controller capable of conducting efficient control on different types of tone generators
US5553011A (en) * 1989-11-30 1996-09-03 Yamaha Corporation Waveform generating apparatus for musical instrument
US5584034A (en) 1990-06-29 1996-12-10 Casio Computer Co., Ltd. Apparatus for executing respective portions of a process by main and sub CPUS
US5596159A (en) 1995-11-22 1997-01-21 Invision Interactive, Inc. Software sound synthesis system
US5668334A (en) * 1992-03-10 1997-09-16 Yamaha Corporation Tone data recording and reproducing device
US5677504A (en) * 1994-03-31 1997-10-14 Yamaha Corporation Tone signal generator
US5763801A (en) * 1996-03-25 1998-06-09 Advanced Micro Devices, Inc. Computer system and method for performing wavetable music synthesis which stores wavetable data in system memory
US5895877A (en) * 1995-05-19 1999-04-20 Yamaha Corporation Tone generating method and device

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2926548C2 (en) * 1979-06-30 1982-02-18 Rainer Josef 8047 Karlsfeld Gallitzendörfer Waveform generator for shaping sounds in an electronic musical instrument
JPH0743591B2 (en) * 1988-03-08 1995-05-15 ヤマハ株式会社 Musical tone generation control device
JP2936872B2 (en) * 1992-03-04 1999-08-23 ヤマハ株式会社 Music control device
JP2713107B2 (en) * 1993-07-09 1998-02-16 ヤマハ株式会社 Automatic performance device

Patent Citations (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4128032A (en) * 1974-11-14 1978-12-05 Matsushita Electric Industrial Co., Ltd. Electronic music instrument
US4373416A (en) * 1976-12-29 1983-02-15 Nippon Gakki Seizo Kabushiki Kaisha Wave generator for electronic musical instrument
WO1980001215A1 (en) 1978-12-11 1980-06-12 Microskill Ltd An output processing system for a digital electronic musical instrument
US5029120A (en) * 1985-02-01 1991-07-02 Analogic Corporation Electrical wavefrom generator means and methods
JPS6452196U (en) 1987-09-28 1989-03-30
EP0376342A2 (en) 1988-12-29 1990-07-04 Casio Computer Company Limited Data processing apparatus for electronic musical instruments
US5319151A (en) * 1988-12-29 1994-06-07 Casio Computer Co., Ltd. Data processing apparatus outputting waveform data in a certain interval
US5726371A (en) 1988-12-29 1998-03-10 Casio Computer Co., Ltd. Data processing apparatus outputting waveform data for sound signals with precise timings
US5317947A (en) 1989-03-29 1994-06-07 Yamaha Corporation Musical tone generator with a multiple parameter write operation
US5121667A (en) 1989-11-06 1992-06-16 Emery Christopher L Electronic musical instrument with multiple voices responsive to mutually exclusive ram memory segments
US5553011A (en) * 1989-11-30 1996-09-03 Yamaha Corporation Waveform generating apparatus for musical instrument
EP0463409A2 (en) 1990-06-28 1992-01-02 Casio Computer Company Limited Musical tone waveform generation apparatus
JPH04136994A (en) 1990-06-28 1992-05-11 Casio Comput Co Ltd Musical tone waveform generator
US5584034A (en) 1990-06-29 1996-12-10 Casio Computer Co., Ltd. Apparatus for executing respective portions of a process by main and sub CPUS
US5200564A (en) 1990-06-29 1993-04-06 Casio Computer Co., Ltd. Digital information processing apparatus with multiple CPUs
US5691493A (en) 1990-06-29 1997-11-25 Casio Computer Co., Ltd. Multi-channel tone generation apparatus with multiple CPU's executing programs in parallel
JPH0462595A (en) 1990-07-02 1992-02-27 Casio Comput Co Ltd Processor for electronic musical instrument
US5276273A (en) 1990-07-18 1994-01-04 Kabushiki Kaisha Kawai Gakki Seisakusho Electronic musical instrument with a parameter storage for tone generation including an enhanced edit function
EP0484047A2 (en) 1990-11-01 1992-05-06 International Business Machines Corporation Method and apparatus for simultaneous output of digital audio and midi synthesised music
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
US5432293A (en) 1991-12-13 1995-07-11 Yamaha Corporation Waveform generation device capable of reading waveform memory in plural modes
US5668334A (en) * 1992-03-10 1997-09-16 Yamaha Corporation Tone data recording and reproducing device
US5448009A (en) 1992-07-07 1995-09-05 Yamaha Corporation Electronic musical instrument including tone generator controller capable of conducting efficient control on different types of tone generators
US5345035A (en) 1992-07-10 1994-09-06 Yamaha Corporation Musical tone generating apparatus
EP0597381A2 (en) 1992-11-13 1994-05-18 International Business Machines Corporation Method and system for decoding binary data for audio application
US5428183A (en) 1992-12-24 1995-06-27 Kabushiki Kaisha Kawai Gakki Seisakusho Tone signal generating apparatus for performing a timbre change by storing a full frequency band in a wave memory
US5376752A (en) * 1993-02-10 1994-12-27 Korg, Inc. Open architecture music synthesizer with dynamic voice allocation
JPH06308958A (en) 1993-04-26 1994-11-04 Roland Corp Musical tone controller of electronic musical instrument
US5677504A (en) * 1994-03-31 1997-10-14 Yamaha Corporation Tone signal generator
US5895877A (en) * 1995-05-19 1999-04-20 Yamaha Corporation Tone generating method and device
US5596159A (en) 1995-11-22 1997-01-21 Invision Interactive, Inc. Software sound synthesis system
US5763801A (en) * 1996-03-25 1998-06-09 Advanced Micro Devices, Inc. Computer system and method for performing wavetable music synthesis which stores wavetable data in system memory

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"Digidesign Turbosynth: Synthesis and Sound Processing for the Apple Macintosh," Computer Music Journal, vol. 12, No. 3, Fall 1988, pp. 79-80.
"Digidesign's Sound Accelerator: Lessons Lived and Learned," by Bill Lowe and Robert Currie, Computer Music Journal, vol. 13, No. 1, Spring 1989, pp. 36-46. *
"Musical Applications of Microprocessors," Second Edition, by Hal Chamberlin, 1985, pp. 639-778. *
Accelerando: A Real-Time, General Purpose Computer Music System, by Kith Lent, et al, Computer Music Journal, vol. 13, No. 4, Winter, 1989, pp. 54-64.

Also Published As

Publication number Publication date
KR100392621B1 (en) 2003-10-23
EP0752697B1 (en) 2001-05-30
DE69613049T2 (en) 2002-03-07
DE69625625D1 (en) 2003-02-06
JPH0922287A (en) 1997-01-21
EP0752697A3 (en) 1997-02-05
EP0752697A2 (en) 1997-01-08
KR970007684A (en) 1997-02-21
HK1013161A1 (en) 1999-08-13
SG80651A1 (en) 2001-05-22
DE69613049D1 (en) 2001-07-05
EP1005015A1 (en) 2000-05-31
EP1005015B1 (en) 2003-01-02
JP3267106B2 (en) 2002-03-18
US5696342A (en) 1997-12-09
TW300298B (en) 1997-03-11
DE69625625T2 (en) 2003-10-30

Similar Documents

Publication Publication Date Title
US6429366B1 (en) Device and method for creating and reproducing data-containing musical composition information
US5703310A (en) Automatic performance data processing system with judging CPU operation-capacity
USRE41297E1 (en) Tone waveform generating method and apparatus based on software
EP2866223A1 (en) Automated performance technology using audio waveform data
EP0770983B1 (en) Sound generation method using hardware and software sound sources
KR100478469B1 (en) Sound source system using computer software
JP3409686B2 (en) Method for controlling a plurality of sound source drivers, recording medium storing a program for controlling a plurality of sound source drivers, and method for controlling a plurality of generation programs
JP2019168517A (en) Electronic musical instrument, method, and program
US5957696A (en) Karaoke apparatus alternately driving plural sound sources for noninterruptive play
US5864082A (en) Tone synthesizing apparatus and method based on ensemble of arithmetic processor and dedicated tone generator device
US6754351B1 (en) Music apparatus with dynamic change of effects
KR100302626B1 (en) Sound generating device and method
US20030174796A1 (en) Data synchronizing apparatus, synchronization information transmitting apparatus, data synchronizing method, synchronization information transmitting method, and program
JPH07121181A (en) Sound information processor
JPH08160961A (en) Sound source device
US5981859A (en) Multi tone generator
US20030131718A1 (en) Communication setting apparatus and method for communicating tone performance data
JP3246405B2 (en) Musical sound generating method, musical sound generating device, and recording medium recording musical sound generating program
US5939655A (en) Apparatus and method for generating musical tones with reduced load on processing device, and storage medium storing program for executing the method
JP3799711B2 (en) Musical sound generation method and musical sound generator
JP3632744B2 (en) Sound generation method
JP3460524B2 (en) Music data processing method, processed music data reproduction method, and storage medium
JPH0944160A (en) Musical tone generating method
JP3627590B2 (en) Sound generation method
JP3148803B2 (en) Sound source device