Export to GitHub

fofix - issue #419

Overhaul song audio handling (including finally doing a halfway-decent pitchbend)


Posted on Jan 1, 2009 by Happy Bear

I have a module that hooks into the final output of SDL's (pygame's) audio mixer and applies a pitch bend to it. The sound quality leaves a small bit to be desired at the moment, but it actually does bend the pitch. (The sound manipulation library it's built on is capable of far more.)

It's very possible for me to alter this module to affect audio channels individually - right now it operates on the entire combined output of the SDL/pygame audio mixer.

Windows binary: (built for Python 2.5; 2.4 or 2.6 will be built upon request) http://www.mediafire.com/?sharekey=65762047925ae04791b20cc0d07ba4d25c953f9d5a85696b (This mediafire folder also contains py2.5 versions of the missing modules, cf. issue 351) Source code (GPLv2 or later): https://svn.stump.jstump.com/svnroot/pitchbend/trunk (checkout URL) https://svn.stump.jstump.com/websvn (viewer URL) The SDL, SDL_mixer, and SndObj headers are needed to build the module.

The attached patch (apply using patch -Np0 from the trunk folder) is a very quick and dirty approach to getting FoFiX to actually use it. (It'll let you see the pitch bending in action [not to mention the module's API, all three methods of it ;)], but the code changes aren't that clean, so I don't intend for you to actually commit it yet but instead just to use it to observe the module's function for the moment.)

Right now the test code bends the pitch down by just over a quarter tone when the whammy is fully applied. I imagine the amount of bending would be better as an option (either player-set in fretsonfire.ini or per-song in song.ini)

Happy new year!

Attachments

Comment #1

Posted on Jan 1, 2009 by Massive Elephant

Nice! I'd like to see a python 2.4 binary for this so I can experiment with it, if you have half a chance. :)

Comment #2

Posted on Jan 1, 2009 by Massive Elephant

I'll be experimenting with this and looking into adding a user option to control it for now while it's being developed into an effect we can direct to a certain channel (and for other OSes).

BTW - looks like you host your SVN server on your home computer? I'll check again later and see if it's on :)

Comment #3

Posted on Jan 1, 2009 by Happy Bear

My SVN is back up - you are right, and my IP changed at an inopportune time.

r6 (which I have up) supports individual channels, but I have not made binaries of it quite yet. The API has changed a small bit so as to make my previous testing patch incompatible, but I will fix that at the same time. (My API should not change incompatibly again.)

The code does work under GNU/Linux as well (it's just your standard "sudo ./setup.py install").

2.4 binaries (and 2.5 binaries of r6) are forthcoming, but I have a few things to do today that might delay them.

Comment #4

Posted on Jan 1, 2009 by Happy Bear

2.4 and 2.5 builds of r6 and a 2.4 build of r5 (which is compatible with the first testing patch) are now up in the mediafire folder.

A testing patch for r6 (channel-specific bending) is now in the works.

Comment #5

Posted on Jan 1, 2009 by Massive Elephant

Nice, testing r5 shortly with py2.4 - thanks

Comment #6

Posted on Jan 1, 2009 by Massive Elephant

It works, but once you start the effect the song becomes choppy (at least on my PC)... the effect also doesn't seem to stop once it starts. An excellent start, though -- this should most def. become a user option, so everyone can test it as it is developed.

Way to figure out how to alter pygame.mixer's output stream directly, that's what I was trying to do before when I was attempting to rebuild SDL_mixer.dll with modified C code. :)

Comment #7

Posted on Jan 1, 2009 by Happy Bear

Nice that it (mostly) works - hopefully r6 will improve things.

Unfortunately I have other things to do right now, so I will have the r6-compatible testing patch ready at a later time.

Comment #8

Posted on Jan 1, 2009 by Massive Elephant

By the way, you've been added to Project Members - at the very least now we can mark this issue as yours.

You also have access to commit changes if you'd like to create a user option to select the pitch bending effect - I don't mind taking care of this though, no need to stop your momentum.

I look forward to experimenting with channel-specific pitch bending.

Comment #9

Posted on Jan 1, 2009 by Massive Elephant

(No comment was entered for this change.)

Comment #10

Posted on Jan 2, 2009 by Massive Elephant

This is now committed as r663:

Currently using john.stumpo's pitch bend module rev 5 (just bends the end mixer output), and is now on a smart option under "Audio Settings" -> "Advanced Audio Settings" -> "Whammy FX": "Killswitch" (default) - this links the whammy bar position to track volume "Pitchbend" - this REQUIRES john.stumpo's pitch bend module rev 5 for Python 2.4, and if it is not found a message will be displayed notifying the user that Killswitch will be used instead.

Here is a direct link to the required pitch bend module rev 5 for those Alpha testers that would like to play with this new feature: http://www.mediafire.com/?24zqu3kznl1

--- also, as a nice little bonus, I've adapted the SVN version retrieval code included with the pitchbend source files to work with FoFiX. Now, the window title and options menu will display the SVN version you are currently running. :)

Comment #11

Posted on Jan 2, 2009 by Happy Bear

Comment deleted

Comment #12

Posted on Jan 2, 2009 by Happy Bear

A little aside about the svntag.py code for developers (so it doesn't surprise you) - committing doesn't update it; you must do an svn update as well (which otherwise would do nothing right after committing). This will not affect people who don't commit.

Be sure that it won't break things when the code isn't run from an svn working copy.

Comment #13

Posted on Jan 2, 2009 by Massive Elephant

Thanks for pointing that out, fixed in r664.

Comment #14

Posted on Jan 2, 2009 by Happy Bear

From the forums:

http://www.fretsonfire.net/forums/viewtopic.php?f=11&t=25040&p=332546#p332528 "Apparently crazy stuff happens if you dont download the module required and try to turn on whammy mode. Even though it trys to default to killswitch."

Comment #15

Posted on Jan 2, 2009 by Happy Bear

I just realized that perhaps the build I put up that says it's of r5 was really r4, which had the staying-active-continuously bug, even for me (due to a particularly dense approach I took to the start and stop methods...). Unfortunately I did not start compiling the $Id$ tag into the binary until r6, so I cannot tell.

In any case, I should have FoFiX working with r6 soon enough. The interface is slightly more Pythonic, and the stuff in GuitarScene.py is far more Pythonic than all those willy-nilly pitchbend.start() and pitchbend.stop() calls.

(Also, there is now a shortcut to my mediafire shared folder: http://www.mediafire.com/stump )

Comment #16

Posted on Jan 2, 2009 by Massive Elephant

I've ran tests on both my computers here, before and after installing the pitchbend module, and it works as intended. It shows a message and forces killswitch mode if the module is not installed, doesn't do anything crazy for me.

Comment #17

Posted on Jan 2, 2009 by Happy Bear

r7 of pitchbend has been committed and will be uploaded to my mediafire soon. It has a workaround for an operation not supported by SDL_mixer.

Updating FoFiX to use r7 is right around the corner (and the sound quality is rather better, especially in songs with separate instrument tracks). Note that this will break compatibility with r5 and r6 - what I have should handle things gracefully in those cases by complaining into the log on startup and reporting to GuitarScene that pitch bending is not available.

API compatibility for pitchbend should not break again.

Comment #18

Posted on Jan 2, 2009 by Happy Bear

r7 support added in r676. r7 is now required for pitch bending, but if it's older or missing it will still be handled accordingly (by dropping back to killswitch).

Comment #19

Posted on Jan 3, 2009 by Massive Elephant

(No comment was entered for this change.)

Comment #20

Posted on Jan 3, 2009 by Happy Bear

As of r11 (well, really r10, but there was a sound quality bug), the module now also has the capability to add an echo for SP/Overdrive.

I would start working on an experimental patch, but I have things to do now, so that will have to wait a bit.

Comment #21

Posted on Jan 3, 2009 by Swift Lion

Wow, was not expecting that. Good work. Would it be possible to expand that effect to add support for a RB-style effects switch?

Comment #22

Posted on Jan 3, 2009 by Happy Bear

@p__... at hotmail: I'm not familiar enough with RB to have an idea as to how to do those effects, though I know what you are talking about.

It all comes down to whether the library I'm using (SndObj) supports applying those effects, whether through a single filter or a combination of filters - for example, the echo uses three filters, and while the pitch uses one filter right now, it may produce a better sound if done in a pipeline of three lower-level filters. (See the C++ code in my Subversion for more details.)

I noticed someone mention SP/OD echo on the forums, and I knew it wouldn't be too much trouble to add the capability to the module, so I just went for it.

Comment #23

Posted on Jan 4, 2009 by Happy Bird

for the issue with the whammy and it cutting out the sound

Figured out what the whammy issue is, there needs to be senseitivity settings, i can barely touch my whammy and get the animated whammy just fine, and theres no damage to the sound.

using the 360 GH explorer FOFFix 3.035 xbox INV setting

Comment #24

Posted on Jan 7, 2009 by Happy Bear

@modster: xbox-inv has always seemed to be the most troublesome for the whammy (probably mostly because I don't have such a guitar). Casual inspection of the relevant code makes it look like it should work just the same (after considering the inversion, of course), but apparently it doesn't.

When you use the Test Keys option, how well does the whammy percentage shown correlate to how far you're actually pressing the whammy?

Comment #25

Posted on Jan 7, 2009 by Grumpy Lion

When I use the test keys it works better than the other Xbox Analog Whammy setting because it then says that the whammy is on at 100% so it thinks I'm pressing it.

Xbox Inv for me doesn't work until I actually press it a little bit and it starts at 100% and goes the whole way down to 0% when it is pressed the whole way down.

I'm using a Rock Band guitar for Xbox FoFix3.100 r708

Comment #26

Posted on Jan 11, 2009 by Happy Bird

Comment deleted

Comment #27

Posted on Jan 11, 2009 by Happy Bird

@john stumpo

without the INV its at a full 100% and the audio still take a nose dive.... im using the GH3 guitar for xbox360 USB.

Comment #28

Posted on Jan 11, 2009 by Quick Rabbit

just to let you guys know if you dont, a RB style FX switch with the current build isnt possible at least with what ive tested. the game will only register changes in the switch if its in the "Off" position. if you move it to any of the other 4 settings, FoFix doesent recognize it

Comment #29

Posted on Jan 11, 2009 by Happy Bird

thats because there is no build in progress for the RB guitar. or no script being built, if you are talking about the 4 way switch from selection of whammy then no it wouldn't work in the first place, we are focusing on the single axis whammy

BTW @ MFH and John stumpo there's something to think about, a axis sensitivity switch setting, now i got thinking why not use the "Xbox" setting for the "xbox inv" and the "xbox INV" for the "xbox" setting, just switch them around, i know there are diff settings per selection....so i figured eh why not, it could very well be whats causing the issue.....

Comment #30

Posted on Jan 11, 2009 by Happy Bird

@MFH and john stumpo pulled this from the ini log file

(D) Config.get: player0.key_kill = 131136 if that helps any with any addressing in python let me grab windows device ID and some other ID's as well for the guitar

device instance ID USB\VID*1430&PID_4748\04D4158

hardware Ids USB\Vid_1430&Pid4748&Rev_3122 USB\Vid_1430&4748

Compatible Ids USB\MS_COMP_XUSB10 USB\Class_ff&SubClass_5d&Prot_01 USB\Class_ff&SubClass_5d USB\Class_ff

Service xusb21

anymore info required please feel free to leave a messge and i will reply

Comment #31

Posted on Jan 13, 2009 by Grumpy Rhino

(No comment was entered for this change.)

Comment #32

Posted on Jan 16, 2009 by Happy Bird

Hello!

I made a pitch-shifting module for SDL_mixer and thought you may benefit from it. It is cross-platform (it definitely works on Linux) and has almost zero dependencies (only the cross-platform FFTW library, but I can go away without it if needed). It uses a bit of extra CPU power (around 8% more than without a filter), but it has nice high quality. Another downside it has is that it introduces 1024 samples of lag.

I have yet to integrate it with python, but I wanted to check with you guys to see if you're interested. Once pythonized, using it will be really simple to use (one-liner actually).

Greetings, ~lhchavez

Attachments

Comment #33

Posted on Feb 5, 2009 by Massive Elephant

That sounds interesting - I'd definitely experiment with that in Python if you manage to get it to work.

Comment #34

Posted on Feb 7, 2009 by Massive Elephant

Pushing back to 3.120 for now (if by some chance you get libsox working and get pitch bending to work on it before 3.100 then just change it back).

Comment #35

Posted on Mar 2, 2009 by Happy Bear

A fair amount of progress has been made on libsox. I have successfully wrapped a libsox effect chain in a Python extension type object and added some utility methods to work with the sound buffers it needs.

svn checkout: https://svn.stump.jstump.com/svnroot/soxeffects/trunk/

I will not provide binaries yet, as there isn't enough outward functionality to cleanly get it into FoFiX's audio processing chain.

I have tested compilation and basic functionality under Windows and GNU/Linux. Unlike pitchbend, this actually builds cleanly and easily under GNU/Linux. (pitchbend theoretically did too, but, as we know all too well now, there were grave problems with Debian's libsndobj packaging, and Ubuntu inherited them...) I need someone with Mac OS X to see if they can get it to build there too.

Those who want to experiment with the module: building it requires Pyrex and the libsox headers. Both are easy to come by under GNU/Linux, and the former is an easy installation under Windows. A copy of the Windows development files for libsox may even make it into my trusty mediafire folder for those who wish not to bother with compiling libsox themselves but still want to experiment with this under Windows.

The main problem preventing this from being integrated into FoFiX right now is that the program currently has to sit in the run() method of the effects chain for the entire duration of the chain's processing. The underlying function in libsox, sox_flow_effects(), has the capability of using a callback to stop it in the middle, but not only could I not get it to work cleanly and continue to process audio upon calling it again, but also trying to use it somehow broke the ability of Python-level exceptions in the reader/writer callbacks to pass cleanly through the guts of libsox and still produce a usable traceback. The thought of running the mainloop in a thread did enter my mind, and I may experiment with it, but I think there is far too much that can go wrong, especially as libsox doesn't appear to be particularly thread-safe.

Another issue is that of reconfiguring individual effects during the course of processing, which is obviously a necessity given what we are going to be trying to do with the module. There are hoops to jump through, and not all effects are likely to handle it particularly cleanly. I may bother the upstream maintainers to see if they know something that I don't that would help us, or I may modify the effects that handle it uncleanly, or perhaps both. The current revision of the module does not even export an interface to do this yet.

Comment #36

Posted on Mar 3, 2009 by Massive Lion

Just tested it. Works fine here!

If others want to try (to play a ogg file with this) simply execute the following: 1) python2.X setup.py build 2) PYTHON_PATH=build/lib.linux-arch-2.X python2.X test3.py /path/to/your/ogg/file.ogg

Where X is e.g. 4, 5 or 6 and arch is e.g. x86 or x86_64.

John: I've wrote to the sox-devel ML, i've just sent you Robs' reply.

Comment #37

Posted on May 18, 2009 by Helpful Rabbit

I have managed to install your pitchbend on Ubuntu 9.04. I had to copy the pitchbend.so file over to the correct folder. At first it wouldn't work since I got the "Pitchbend module not found, forcing killswitch..."

I read that the libsndobj-dev 2.6.1a-2.3 in Jaunty had bugs. So I downloaded the libsndobj-dev 2.6.1a-2.4 deb as well as the libsndobj2c2 2.6.1a-2.4 built for karmic. The dependencies haven't changed and they installed after removing the old ...2.3 versions. https://launchpad.net/ubuntu/karmic/sparc/libsndobj-dev/2.6.1a-2.4

After rebuilding pitchbend, it is able to find it. However, with analog effects on the first not I play, it exits the game. So I turned off both Analog Effects and Analog SP for my guitar. It will let me play the game and activate star power. But as soon as I wammy, it exits the game.

Attached is my log from the event. Not much I can see other than the last 2 lines: "/cmov/libnss_files-2.9.so b4953000-b4954000 r--p 00009000 08:05 589930 Aborted"

Attachments

Comment #38

Posted on May 19, 2009 by Massive Lion

This crash is unrelated to pitchbending...

The problem is that python-pyvorbis 1.4 is crashing on you. Please install python-pyvorbis 1.3 [or create a patch against 1.4 that fixes the issue ;-)].

There's already a bugreport in Debian about this: http://bugs.debian.org/521559

Comment #39

Posted on May 19, 2009 by Massive Dog

The pitchbend works fine now... for one or two seconds. The whammy effect is perfect but some time the audio losts blending. And if I hold down whammy and release the fret button, the sound remains distorted.

Comment #40

Posted on May 20, 2009 by Helpful Rabbit

Thanks evilynux for your explanation. I do have python-pyvorbis 1.3-2 installed. Isn't that the one with the bug though? I don't know how to create a patch up to 1.4.

Comment #41

Posted on Jul 16, 2009 by Helpful Rabbit

Is this still being developed? Or are you making something else for pitchbend?

I still haven't been able to get this to work properly. I even tried with python-pyvorbis 1.4. I am able to play. But as soon as I wammy, it crashes the game with no log of the error.

Comment #42

Posted on Aug 19, 2009 by Happy Bear

Pushing back to 4.0.0.

Comment #43

Posted on Oct 1, 2009 by Swift Ox

For Ubuntu linux, this doesn't seem to install in the right spot. I've tried putting it at /usr/lib/python2.5/site-packages/pygame/pitchbend.so , but Fofix still can't find it.

Where should it be?

Comment #44

Posted on Oct 1, 2009 by Happy Bear

What happens if you just do "sudo [python-executable-you-use-to-run-FoFiX] setup.py install" and let it do its thing?

Comment #45

Posted on Oct 12, 2009 by Happy Bear

It's been quite some time since I have put any real work into finally getting this done in a decent way, but I am working on something now that, even if it doesn't end up actually getting pitch-altering support, will be beneficial.

That is: I am rewriting the StreamingOggSound class from Audio.py in C and working from there.

This means (among other things) that we will not need pyogg and pyvorbis anymore (that's two pieces of nearly-unmaintained dead weight gotten rid of for any Python 3 transition we might attempt to make in the future), that we will actually be able to implement practice parts using all tracks of multi-track songs, and that we could very well not require pygame 1.9 under 64-bit GNU/Linux anymore for everything to work correctly (or was it texturing that was getting messed up?). More importantly, though, we will be able to produce sane audio output without too much trouble, no matter what the audio output settings are, with just a call to a resampling library and either mixdown or duplication of channels in the reader loop. Then we just might be able to toss an effects library of some kind into there too so we can finally make pitchbending and SP echo work The Right Way(tm) and maybe even do the RB effect switch while we're at it.

Note: In testing with a simple prototype module that just reads the ogg using libvorbisfile and feeds it to an SDL_mixer channel, I got somewhat of a performance increase (~5 fps) over gameplay with the pyogg/pyvorbis based StreamingOggSound. Interesting...

As usual when I am interfacing with external C code, once I get the C into a committable state, it will magically appear somewhere on svn.jstump.com, at which point I will commit the FoFiX side of it and we'll see how things play out.

Comment #46

Posted on Oct 12, 2009 by Happy Bear

Preliminary support for the new module is in!

("svn co svn://svn.jstump.com/r/oggstreamer/trunk" for the source to OggStreamer.)

Right now, ordinary gameplay works; other things might not fully work. (Not all of StreamingOggSound's methods have been implemented yet, but ordinary gameplay doesn't hit the unimplemented ones.)

Comment #47

Posted on Oct 13, 2009 by Massive Lion

Nice stuff as usual John!

Comment #48

Posted on Dec 6, 2009 by Happy Lion

I really want this effect, so I decided to give this module a try, I got pitchbend-0.3-EndOfLife.tar.gz, although I'm a bit worried about what the "EndOfLife" part means. I had to install sdl-devel and python-devel to get setup.py to get past just giving me error messages, but now I'm apparently still missing something, though I don't know what. (Sorry if I'm a bit of a newbie.) These are the messages I got:

running install
running build
running build_ext
building 'pygame.pitchbend' extension
creating build
creating build/temp.linux-i686-2.6
gcc -pthread -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions - fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -I/usr/include/SDL -D_GNU_SOURCE=1 - i686-2.6/pitchbend.o
pitchbend.cpp:23:23: error: SDL_mixer.h: No such file or directory
pitchbend.cpp:24:27: error: SndObj/SndObj.h: No such file or directory
pitchbend.cpp:25:26: error: SndObj/Pitch.h: No such file or directory
pitchbend.cpp:26:25: error: SndObj/Comb.h: No such file or directory
pitchbend.cpp:27:24: error: SndObj/Mix.h: No such file or directory
pitchbend.cpp:28:25: error: SndObj/Gain.h: No such file or directory
pitchbend.cpp: In member function ‘void Channel_Mutater::setup(int)’:
pitchbend.cpp:51: error: ‘Mix_RegisterEffect’ was not declared in this scope
pitchbend.cpp: In member function ‘void Channel_Mutater::cleanup()’:
pitchbend.cpp:56: error: ‘Mix_UnregisterEffect’ was not declared in this scope
pitchbend.cpp: In function ‘void do_mutate(int, void*, int, void*)’:
pitchbend.cpp:134: error: ‘Mix_QuerySpec’ was not declared in this scope
pitchbend.cpp: At global scope:
pitchbend.cpp:183: error: ISO C++ forbids declaration of ‘SndObj’ with no type
pitchbend.cpp:183: error: expected ‘;’ before ‘’ token
pitchbend.cpp:184: error: ISO C++ forbids declaration of ‘Pitch’ with no type
pitchbend.cpp:184: error: expected ‘;’ before ‘
’ token
pitchbend.cpp: In constructor ‘Channel_Pitchbender::Channel_Pitchbender(int)’:
pitchbend.cpp:164: error: ‘sndobj’ was not declared in this scope
pitchbend.cpp:164: error: expected type-specifier before ‘SndObj’
pitchbend.cpp:164: error: expected ‘;’ before ‘SndObj’
pitchbend.cpp:166: error: ‘pitch’ was not declared in this scope
pitchbend.cpp:166: error: expected type-specifier before ‘Pitch’
pitchbend.cpp:166: error: expected ‘;’ before ‘Pitch’
pitchbend.cpp: In destructor ‘virtual Channel_Pitchbender::~Channel_Pitchbender()’:
pitchbend.cpp:175: error: ‘pitch’ was not declared in this scope
pitchbend.cpp:176: error: ‘sndobj’ was not declared in this scope
pitchbend.cpp: In member function ‘void Channel_Pitchbender::setFactor(float)’:
pitchbend.cpp:179: error: ‘pitch’ was not declared in this scope
pitchbend.cpp: In member function ‘virtual void Channel_Pitchbender::doProcess(float*)’:
pitchbend.cpp:188: error: ‘sndobj’ was not declared in this scope pitchbend.cpp:190: error: ‘pitch’ was not declared in this scope pitchbend.cpp: At global scope: pitchbend.cpp:232: error: ISO C++ forbids declaration of ‘SndObj’ with no type pitchbend.cpp:232: error: expected ‘;’ before ‘’ token pitchbend.cpp:233: error: ISO C++ forbids declaration of ‘Comb’ with no type pitchbend.cpp:233: error: expected ‘;’ before ‘’ token pitchbend.cpp:234: error: ISO C++ forbids declaration of ‘Mixer’ with no type pitchbend.cpp:234: error: expected ‘;’ before ‘’ token pitchbend.cpp:235: error: ISO C++ forbids declaration of ‘Gain’ with no type pitchbend.cpp:235: error: expected ‘;’ before ‘’ token pitchbend.cpp: In constructor ‘Channel_Echoer::Channel_Echoer(int)’: pitchbend.cpp:204: error: ‘sndobj’ was not declared in this scope pitchbend.cpp:204: error: expected type-specifier before ‘SndObj’ pitchbend.cpp:204: error: expected ‘;’ before ‘SndObj’ pitchbend.cpp:206: error: ‘gain’ was not declared in this scope pitchbend.cpp:206: error: expected type-specifier before ‘Gain’ pitchbend.cpp:206: error: expected ‘;’ before ‘Gain’ pitchbend.cpp:210: error: ‘comb’ was not declared in this scope pitchbend.cpp:210: error: expected type-specifier before ‘Comb’ pitchbend.cpp:210: error: expected ‘;’ before ‘Comb’ pitchbend.cpp:212: error: ‘mixer’ was not declared in this scope pitchbend.cpp:212: error: expected type-specifier before ‘Mixer’ pitchbend.cpp:212: error: expected ‘;’ before ‘Mixer’ pitchbend.cpp: In destructor ‘virtual Channel_Echoer::~Channel_Echoer()’: pitchbend.cpp:222: error: ‘mixer’ was not declared in this scope pitchbend.cpp:222: error: ‘gain’ was not declared in this scope pitchbend.cpp:223: error: ‘comb’ was not declared in this scope pitchbend.cpp:224: error: type ‘’ argument given to ‘delete’, expected pointer pitchbend.cpp:225: error: type ‘’ argument given to ‘delete’, expected pointer pitchbend.cpp:226: error: type ‘’ argument given to ‘delete’, expected pointer pitchbend.cpp:227: error: ‘sndobj’ was not declared in this scope pitchbend.cpp: In member function ‘virtual void Channel_Echoer::doProcess(float*)’: pitchbend.cpp:239: error: ‘sndobj’ was not declared in this scope pitchbend.cpp:241: error: ‘gain’ was not declared in this scope pitchbend.cpp:242: error: ‘comb’ was not declared in this scope pitchbend.cpp:243: error: ‘mixer’ was not declared in this scope pitchbend.cpp: In function ‘void initpitchbend()’: pitchbend.cpp:383: error: ‘MIX_CHANNEL_POST’ was not declared in this scope error: command 'gcc' failed with exit status 1

Comment #49

Posted on Dec 6, 2009 by Happy Bear

That would be you not having libsndobj's or libsdl_mixer's dev packages, both of which are also required.

EndOfLife means that the module will not be developed further in its current state. We have something in the works to replace it.

Comment #50

Posted on Aug 1, 2011 by Helpful Kangaroo

Hello all! I think it will be good to use openAL. It has many features and effects, including pitchbend.

Comment #51

Posted on Jun 23, 2014 by Happy Rhino

7 years later..

Comment #52

Posted on Jun 23, 2014 by Massive Dog

Well there has been development on this.

All development(very slowly) is currently going on over here: https://github.com/fofix/fofix

Stump has since written a better pitch bend module and replaced a couple of audio dependencies. Its not perfect yet, but its a lot better than what has been done previously.

Status: Started

Labels:
Priority-Medium Type-Enhancement Milestone-Release-4.0.0 Theme-All