Author |
Message |
Machnumber2
Joined: Oct 15, 2009 Posts: 3 Location: Southern California
|
Posted: Thu Oct 15, 2009 3:57 pm Post subject:
Frequency shifting/transposing/adding/subtracting Subject description: Frequency shifting/transposing/adding/subtracting |
|
|
Hello,
This is my first post. I noticed this site on google when searching for accoustic research software. After reading some random posts it seemed clear to me that there are alot of people on this site that know what they are doing.
About me: I have a pretty significant hearing loss, a dead right ear and left ear that has lousy hearing. I have a rare type of hearing loss called reverse curve where I can hear a narrow band of high frequencies but cannot hear most mid range or lows at all. Because of that, hearing aid manufacturers do not target thier hearing aids for my type of loss, instead they do the loss where you lose the highs as you get older.
I have been surfing the internet now and then for years searching for software that will allow me to test out and learn about what I belive is called frequency transposition or compression. For hearing aids that have this, they will take highs and move them down to lows where the person has hearing but not vice versa which is what I need.
Most people hear from around 250 hz on up to around 8000hz. My hearing stats around...I am going to make another post becasue something is wrong withthe window |
|
Back to top
|
|
|
Machnumber2
Joined: Oct 15, 2009 Posts: 3 Location: Southern California
|
Posted: Thu Oct 15, 2009 4:03 pm Post subject:
|
|
|
Back again. My hearing starts at about 4k and used to go up to 12,000+ khz.
What I would like to do is have computer software that will take a sound file, or better yet real time if possible, and transpose a frequency band from one range to another. For example, I would like to move the frequency of 1000 hz to 2000 hz to 4000 hz to 5000 hz. We could either completly replace what was in the 4k to 5k range or simply add the frequncies together. Even better, if its possible to take the frequency range from 250 hz to 3999 hz and squeeze it into say 5000 hz to 6000 hz, compressing the bandwidth so to speak. Any software that would allow to to try out lots of different things and make up algorithyms would be awesome and very helpful to me.
BTW, yes I am a layman at this, but do have a scientific background and willingness to learn.
I would welcome any ideas at all or a point in the right direction. Thanks |
|
Back to top
|
|
|
Antimon
Joined: Jan 18, 2005 Posts: 4145 Location: Sweden
Audio files: 371
G2 patch files: 100
|
Posted: Fri Oct 16, 2009 12:59 am Post subject:
|
|
|
Machnumber2!
I haven't messed around with this myself, but there are pitch shift functionality in programming languages such as ChucK or SuperCollider (the ChucK UGen is PitShift, do a google for "Supercollider pitch shift" for alternatives there.
You could hack something up where you filter off a frequency band you want to shift up, run that through a pitch shifter and mix it together with a highpass filtered version of the original.
There are loads of pitch-shifting hardware and software, but you may be able to getter results by the abitilites to fine tune stuff in a custom application.
Having said that, I haven't tried the pitch shifters in ChucK or SuperCollider, so I don't know how good they are. I've messed around a bit with pitch shifters in Nord Modular G2 and an old Zoom effect, and there's always a bit of the talking-through-a-long-pipe side effect. The pitch shifting in Ableton Live is pretty good, but that might not be practical for you to use.
/Stefan _________________ Antimon's Window
@soundcloud @Flattr home - you can't explain music |
|
Back to top
|
|
|
Machnumber2
Joined: Oct 15, 2009 Posts: 3 Location: Southern California
|
Posted: Fri Oct 16, 2009 9:57 am Post subject:
|
|
|
Thanks for your reply. I checked out the software you mentioned. Most of it looks way over my head at the moment. I agree that using a custom language from the ground up is probably the best way to have the most flexibility in terms of being able to try out everything you want. The problem is the time invovled and learning curve. Its obviously a complex subject. The ultimate accomplishment I would think would getting a program to separate a voice sound from other sounds such a background noise. I wonder if thats even possible, especially probably not in real time, I know you can approximate it but it would be like trying to unscramble an egg.
I think the starting point is to pick a audio programming language and start learning it and learning the basics of sounds.
If you had to start from the beginning, what audio programming language would you use? |
|
Back to top
|
|
|
Antimon
Joined: Jan 18, 2005 Posts: 4145 Location: Sweden
Audio files: 371
G2 patch files: 100
|
Posted: Fri Oct 16, 2009 11:50 am Post subject:
|
|
|
Yeah you're right that it will probably not be that straightforward, epecially if you need to separate voice from background noise (I guess you can't always get people to speak into a microphone). I've only really used ChucK, which I found easy enough, but then I've been programming most of my life.
Just for fun I took a crack anyway at coding an app that takes stuff between 100 and 4000 Hertz, shifts it up and mixes it with stuff over 4000 Hertz. It works as expected... there's a bit of "talking through a tube" effect, but I think it may be intelligable. See if you can follow the code and maybe even try it out (ChucK is free to download and install - we have a whole subforum for it here if you're curious about details and want to do a search or ask questions).
Code: | adc.chan(1) => LPF lpf => HPF hpf => PitShift pitShift => dac.chan(0);
pitShift => dac.chan(1);
adc.chan(1) => HPF hpf2 => dac.chan(0);
hpf2 => dac.chan(1);
4000 => lpf.freq;
100 => hpf.freq;
4000 => hpf2.freq;
1.0 => pitShift.mix;
4.0 => pitShift.shift;
while (true) {
1::day => now;
}
|
The while (true) thingy at the end is just to keep the app from shutting down. I'm messing around a bit with channels on adc (which is the input) and dac (which is the output) because my soundcard needs me to do that - you may need to tweak this if you try it out on your own - it will probably suffice to just remove ".chan(x)" everywhere.
Info about ChucK is here:
http://chuck.cs.princeton.edu/
/Stefan _________________ Antimon's Window
@soundcloud @Flattr home - you can't explain music |
|
Back to top
|
|
|
|