Postby merrilydownthestream » 01 Mar 2010 12:35
all vlc seems to do is change playback speed, with auto pitch correction, for viewing and searching purposes. this topic seems more appropriate for the audacity forum or the reaper forum. i am sure this problem has been solved elsewhere already.
the only free application i know of that will either transpose pitch, or change playback speed without correcting pitch, or both, including a 'ramp' function in the track between point a at starting pitch/tempo and point b at final pitch/tempo if you want, is audacity, so maybe that will work for you. if you do use audacity you may need to split the audio stream off into a separate file, transcode, transcode back, synchronize in time, and re-merge, since audacity is not necessarily designed to interface directly to vlc nor does it support streaming (that I know of anyway) and it does not seem to know about microsoft asio channels either. it does however work fairly well and it supports many operating systems so maybe it works differently on linux, i am just exploring linux now so i know audacity has somewhat different appearance and function on linux.
you could also play your video offline and use audacity to directly record the audio output (wav) of your sound card to capture the audio track without having to split the file out using a separate application, and then repeatedly transpose that captured audio into a library of 12 transposed tracks/files, then add them back into your original mp4 files as alternate sound tracks/files using mp4box. that is, if you are using mp4 files to store your avi (sorry i am new to this video stuff maybe that was nonsense).
perhaps there is something on doom9 that will allow you to transpose audio in real time, if not i know it has mp4box and other applications that split and merge streams into and out of container files and sync audio to video etc. so between doom9 and audacity i know for sure you have a possible solution. but from what i know so far, it will require you to do all the work in advance rather than on-the-fly in a live performance and the off-line work will be significant unless you devise a way to automate it, especially since you will need to transpose every track into every possible key in advance so that means 12 audio tracks per title -- possible but time consuming and awkward, and possibly also not very musical if the percussion gets transposed also, so consider transposing x steps up and y steps down rather than unidirectionally to avoid an alvin and the chipmunks sound.
another route to go might be to use music composition software that includes analog transposition plugin, or a real-time dsp transpose function built into a professional music composition sound card. you might be able to directly transpose the analog audio with your composition software or your sound card using a vst plugin or some other sort of dsp function. my e-mu sound card 1212m has a linear addition frequency shift dsp function that runs in patchmix dsp application. linear addition shift output from a straight multiplier-based frequency modulation unit in my 1212m i.e. adding a fixed number of hz to every frequency component is not as intelligent as 'natural logarithmic' transposing i.e. musically transposing using time modulation based on a 12 tone scale where 'tone x'+'12 tones'=2x frequency i.e. 1 octave shift, [or 8 tone scale if you happen to be from the middle east], though patchmix does change pitch and there is absolutely no reason why it could not transpose too except the dsp algorithm was never programmed for it. maybe some newer sound card includes the function in the device driver or bundled applications.
1212m card is obsolete and not compatible with anything but windows, and it took me a long time to learn how to patch the audio path and use the vst effects, but my blundering might point the way to a solution for you. the trick is finding a real-time solution that uses time-based (logarithmic) shift, with oversampling/decimation to change the time scale back to base, rather than a simple multiplier-based linear fm modulation shifter that keeps the time base constant but just adds a constant number of hertz and will not preserve the frequency relationship of octaves based on 12 stepped tones.
if your karaoke is using midi files you could possibly try anvil studio to transpose the backup track but the free version is fairly crippled. the analog audio function is disabled, and so is vst plugin, unless you buy add ons. plus i suspect your karaoke is not using midi files since backup vocals would be problematic as would appropriate sound fonts and wavetables.
maybe there is a free vst plugin that will transpose a wav or mp3 or mp4 or some such in some music composition application. i know you said that is too complicated but i do not know of a simple stand-alone real-time transposer.
there is one other free music/audio composition program called reaper that has both midi and analog as well as vst plugins sound fonts and many other type plugins compatability plus it uses microsoft asio channels as well as standard sound card wave interface, but i have had poor luck using it. maybe i am just not persistent enough. it seems flexible but either full of bugs or i am just dense because i never managed to figure out how to use it very well especially using anything other than the standard windows roland wave table since using just one (crappy free version) non-windows sound module meant disabling the entire windows wave table and the sound skipped too because of processing bottlenecks or some such. could not figure out how to put in an analog track or get smooth midi playback with anything other than completely primitive midi files, but the effects patching seems straightforward after a few days of experimentation, so if i had a real need for transposing karaoke maybe i would have figured it out eventually.
if you do try reaper then what you want in a vst plugin is something called a harmonizer. that will give you a 'pitch-linear' 'musical shift' as opposed to a linear frequency shift like my 1212m does. i think audacity has some sort of a plugin for tempo shift/transposing... maybe that plugin will work with reaper in real time? if not, count on hours of processing time in audacity alone, because a 5 minute stereo song takes 10 minutes to process in win xp 32 bit running 2ghz core 2 duo (just tested it while typing this for you).
*severely* crippled versions of professional steinberg and ableton live came with my 1212m as an introductory suite and i suspect ableton live would work very well for your purposes but it is $$$ probably $2000. in fact to buy all the software that was crippled in my 'bundled' kit would have cost me $10,000 meaning the advertising on the sound card box was completely misleading since it said it had 'everything' i needed to create professional multimedia (except functional applications of course). the only thing that actually worked was the sound card drivers and everything else was crippled to the point of uselessness.
or pro tools should be able to help too because it has transposition capacity built in but it is also $$$ and runs on dedicated sound card that you must buy with the software since it is designed for professional digital studio mastering of cd audio and is one of perhaps 4 such professional platforms in common use today, one other of which is steinberg cubase and ableton live etc suite that came with my 1212m. i was told pro tools also comes with a crippled suite of multimedia software and that the $500 'bundle' barely gets you the capacity to mix/sync midi and analog tracks but the results of that 'bundle' that my friend created blew away my $200 1212m.
fortunately all these professional applications allow you to edit video and audio professionally but they are expensive and complicated to the point where universities offer courses in how to use them professionally. i have no such resources so cannot speak from experience but i have investigated and seen a tiny taste of the results and yes they do work beautifully.
but on-the-fly with converted files?? why will your karaoke not do it natively? or should I ask?