015
04.01.2005, 21:24 Uhr
FloSoft
Medialer Over-Flow (Administrator)
|
naja eigentlich sollte der pitchshifter das input-signal eben jeden ton um den eingestellten wert nach oben oder nach unten schieben, also die frequenz neu modulieren, im usenet z.b dieser Artikel dazu:
Zitat: |
Modern pitch-shifting techniques are based on sampling, AKA Digital Audio.
The original signal is sampled (digitized at a regular period). It can then be played back in the usual fashion by feeding a digital-to-analog converter at the original sample rate, OR the sample rate can be, technically, messed with.
If you simply change the sample rate, the effect is just like speeding up or slowing down a tape or record: the speed AND the pitch changes. The original 'Chipmunks' record(s) were done by increasing the tape playback speed of the vocal recording, and synchronizing it to a normal-speed music track.
To play back a recording at the original PITCH but at a different SPEED, the number of SAMPLES in the original recording has to be changed. As an example, if you were to simply remove every other sample, and play it back thru the 'normal' system, the sound would be twice as FAST (the words would be twice as fast) but the PITCH would be the same. A little information is lost, of course, but some answering machines do this function and it works pretty well to scan thru your messages. Those of us who edited audio tape for a living years ago got to be able to follow an interview at a good fast-forward speed!
Now, to play back a recording SLOWER, you need to ADD samples. Again, you could do this by duplicating every data point twice. Then playback would take twice as LONG, but the pitch would be the same. And, again, the information wouldn't be QUITE right, but it would be intelligible. Some answering machines do THIS to allow you to catch that fast-spoken phone number! If you want to raise or lower the PITCH at the same SPEED you have to RESAMPLE the data.
The best way to 'resample' the data at a different rate is by Interpolation. This means that you fit a curve (with some varying degree of accuracy) to the original data, and then find the resulting data points at the NEW sample rate. NOW you can do "any-sample-rate" and the results will be 'pretty good'. This process can, in fact, be 'very good': High quality MIDI synthesizers that use SAMPLED recording of real musical instruments do this interpolation. The need for this is because the SAMPLES of the instruments are NOT made separately for every note the instrument can play. A good set of piano samples, for example, has a sample every4 or 5 keys. The in-between keys are produced by interpolating a sample from a slightly different pitch. But you've probably noticed that a piano is built with a significantly different design of strings (from 1 to 3 strings) for low notes to high notes. Intercation with the soundboard, frame, case and adjacent strings makes the 'timbre' (equals waveform to us) is quite different an octave or two apart.
Most real-time interpolation software does a 'running sample' of from 2 to several points, and often creates a sort of 'instantaneous slope' coefficient that can be used to efficiently find the data for an arbitrarily-time-displaced point. This is cool stuff to play with, and there is a great piece of commercial software with a try-out version called CoolEdit that you might want to play with. I have seen the DSP code for an IBM sampled MIDI synthesizer (came on the Thinkpads and some Aptivas etc). It was pretty complex, as it did this for up to 32 instruments AT ONCE, in STEREO, with individual volume and pan controls, and individual 'Attack and release' parameters, and the ability to 'pitch bend' or 'wah-wah' individual instruments. After that it went to OTHER special effects like Bass, Treble, 3-D sound enhancement, and mixing with .WAV recorded audio playback. Yikes! You need to draw out some waveforms and samples an paper to have this start to have this really make sense.
|
wenn man eben ein einfaches signal, wie z.b von einer gitarre verschiebt, ändern sich eben die tonhöhen, bei stimmen werden die halt ab einem bestimmten wert zu "chipmunks" oder nach unten eben zu terminator oder sowas da dann einfach zuviel information verlorengeht. -- class God : public ChuckNorris { }; Dieser Post wurde am 04.01.2005 um 21:25 Uhr von FloSoft editiert. |