Method for paging software wavetable synthesis samples
First Claim
1. A method of synthesizing a wavetable in a data processing system, comprising:
- segmenting the wavetable into a beginning portion and a remaining portion;
page locking the beginning portion of the wavetable in a system memory for immediate synthesis on demand;
storing the remaining portion in a memory page which is paged into and out of the system memory from a storage device;
synthesizing the beginning portion of the wavetable;
after beginning synthesis of the beginning portion, paging the memory page containing the remaining portion of the wavetable into system memory; and
synthesizing the remaining portion of the wavetable.
0 Assignments
0 Petitions
Accused Products
Abstract
Wavetables for a wavetable synthesizer are divided into nonpaged and paged segments. The nonpaged segments are page locked in system memory, so that the wavetable may beginning playing when referenced. The paged segments are paged into memory as needed, and may be paged out of memory when no longer required. The segmentation of the wavetable is determined based on the maximum data rate for the wavetable and a maximum paging delay for the system. Wavetable segmentation is automatically tuned by monitoring actual paging delays and, taking into account a margin for error, updating the value of the maximum paging delay used to determine the required size for a nonpaged wavetable segment. An aggressive margin for error may be employed where an alternative mechanism is provided for handling overruns of the nonpaged wavetable segments.
-
Citations
20 Claims
-
1. A method of synthesizing a wavetable in a data processing system, comprising:
-
segmenting the wavetable into a beginning portion and a remaining portion;
page locking the beginning portion of the wavetable in a system memory for immediate synthesis on demand;
storing the remaining portion in a memory page which is paged into and out of the system memory from a storage device;
synthesizing the beginning portion of the wavetable;
after beginning synthesis of the beginning portion, paging the memory page containing the remaining portion of the wavetable into system memory; and
synthesizing the remaining portion of the wavetable. - View Dependent Claims (2, 3, 4, 5, 6, 7)
responsive to completing synthesis of the beginning portion prior to the remaining portion being paged into the memory, synthesizing a backup wavetable sample.
-
-
3. The method of claim 2, further comprising:
looping an ending segment of the beginning portion to form the backup sample.
-
4. The method of claim 1, further comprising:
-
segmenting a plurality of wavetables into beginning portions and remaining portions;
loading the beginning portions into the system memory for immediate synthesis upon demand; and
storing the remaining portions in memory pages which is paged into and out of the system memory.
-
-
5. The method of claim 4, wherein each wavetable within the plurality of wavetables contains, without looping, a different note sampled from a piano until decay.
-
6. The method of claim 1, further comprising:
-
computing a maximum paging delay; and
determining a size of the beginning portion of the wavetable which would accommodate the maximum paging delay, wherein the beginning portion stored within the system memory is at least the determined size.
-
-
7. The method of claim 6, further comprising:
-
measuring a paging delay for paging the memory page containing the remaining portion;
adding a margin for error to the measured paging delay to compute a computed paging delay;
comparing the computed paging delay to the maximum paging delay; and
responsive to determining that the computed paging delay differs from the maximum paging delay, segmenting the wavetable into a different beginning portion accommodating the computed paging delay and a different remaining portion.
-
-
8. An apparatus for synthesizing a wavetable in a data processing system, comprising:
-
a wavetable segmented into a beginning portion and a remaining portion;
a system memory containing the beginning portion of the wavetable for immediate synthesis on demand;
a storage device storing the remaining portion in a memory page which is paged into and out of the system memory;
synthesis means for synthesizing the beginning portion of the wavetable stored in said system memory;
memory paging means for paging the memory page containing the remaining portion of the wavetable into the system memory after beginning synthesis of the beginning portion; and
synthesis means for synthesizing the remaining portion of the wavetable. - View Dependent Claims (9, 10, 11, 12, 13)
synthesis means, responsive to completing synthesis of the beginning portion prior to the remaining portion being paged into the memory, for synthesizing a backup wavetable sample.
-
-
10. The apparatus of claim 9, further comprising:
means for looping an ending segment of the beginning portion to form the backup sample.
-
11. The apparatus of claim 8, further comprising:
-
a plurality of wavetables each segmented into beginning portions and remaining portions, wherein the beginning portions are loaded into the system memory for immediate synthesis upon demand, and the remaining portions are each stored in different memory pages which may be paged into and out of the system memory.
-
-
12. The apparatus of claim 11, wherein each wavetable within the plurality of wavetables contains, without looping, a different note sampled from a piano until decay.
-
13. The apparatus of claim 8, further comprising:
-
means for computing a maximum paging delay; and
means for determining a size of the beginning portion of the wavetable which would accommodate the maximum paging delay, wherein the beginning portion stored within the system memory is at least the determined size.
-
-
14. A computer program product for use with a data processing system, comprising:
-
a computer usable medium;
a wavetable segmented into a beginning portion and a remaining portion;
first instructions on the computer usable medium for page locking the beginning portion of the wavetable in a system memory for immediate synthesis on demand;
second instructions on the computer usable medium for storing the remaining portion in a memory page which is paged into and out of the system memory from a storage device;
third instructions on the computer usable medium for synthesizing the beginning portion of the wavetable;
fourth instructions on the computer usable medium for paging the memory page containing the remaining portion of the wavetable into the system memory after beginning synthesis of the beginning portion; and
fifth instructions on the computer usable medium for synthesizing the remaining portion of the wavetable. - View Dependent Claims (15, 16, 17, 18, 19, 20)
sixth instructions on the computer usable medium for loading a plurality of wavetable segments in the system memory, the plurality of wavetable segments comprising beginning portions of a plurality of different wavetables.
-
-
16. The computer program product of claim 15, wherein the sixth instructions further comprise:
instructions for loading the beginning portions of the different wavetables, each wavetable containing, without looping, a different note sampled from a piano until decay.
-
17. The computer program product of claim 14, further comprising:
-
instructions on the computer usable medium for computing a maximum paging delay; and
instructions on the computer usable medium for determining a size of the beginning portion of the wavetable which would accommodate the maximum paging delay;
instructions on the computer usable medium for storing the beginning portion of the wavetable in a page in the system memory, wherein the beginning portion is at least the size which would accommodate the maximum paging delay.
-
-
18. The computer program product of claim 17, further comprising:
instructions on the computer usable medium for storing the remaining portion of the wavetable in a different memory page which is paged into and out of the system memory.
-
19. The computer program product of claim 14, wherein the computer usable medium comprises a CD-ROM.
-
20. The computer program product of claim 14, wherein the computer usable medium comprises a transmission from an Internet site.
Specification