Winamp DSP plugin error loading plugin and odd strange characters

Published by:

Before starting to make my own Winamp plugins, I tried compiling an existing plugin DLL from source-code in my current setup, thus testing if my setup was working. I used the Beginner Basic Plugin Guide as a starting point for my solution in Visual Studio 2012. That seemed to work.

I then compiled the resteless_dsp plugin, for which I found the source here: http://www.hartwork.org/doku.php?id=restless_winamp_plugin. This became problematic.

First the plugin compiled without error:

When I ran the plugin locally, it worked fine. But when I tried to run it on another system (a clean windows 7 virtual machine) I got strange results. The plugin would load (show-up in the list of plugins), but the title was replaced by random non ASCII characters. The file name looked ok though. Like this:

18-07-2013 11-50-58

And when I tried to run the configuration it told me ” Error loading module “.

18-07-2013 11-52-00

The problem boiled down to a wrong configuration (again) of Visual Studio. I was using Common Language support… Resolving this would imply installing extra software a the target PC and I didn’t want that. So I decided to go without CLR.

I changed the config like this:
1) Project->Properties->General->Common Language Runtime Support-> “No Common Language support”
2) Project->Properties->C/C++->Code Generation->Runtime Library-> “Multi-threaded (/MT)”

18-07-2013 12-25-01
18-07-2013 12-27-34

Now when I build I got a lot of errors:

I eliminated those by commenting out everything in the AssemblyInfo.cpp that raised an error. (leave #include “stdafx.h” un-commented)

That eventually did the trick. The code compiles ok and it works fine on other windows systems.

I hope this will help someone out there.

Note that when you merely overwrite the dll with a newer version, the ” Error loading module ” error won’t go away. Use the “uninstall plug-in” button (right of the configure button) first to remove old versions of the plugin before adding the new version. Failing to do so will complicate debugging.

Increase sound volume beyond 100% on Realtek HD audio

Published by:

Have you ever wanted to increase the volume of a video or music track, but found that everything was already set to 100%?

There are a few solutions that work well, but I found them to be either to cumbersome or not effective enough. Sometimes the “loudness” enhancement (build into windows) rather dampened the volume!! I also tried DSP and DX plugins, but they are a nightmare to implement on system sounds. The windows build in Audio Processing Objects, or APOs, (of which the loudness enhancement is one object) are a great feature, but I found nobody developing usable software that uses the library (??)

But if you are in luck of having Realtek HD Audio hardware, the driver software can be setup so it gives you an extra boost. And, as an added bonus, it does so without clipping.

Here is what you do:

Double click the “speaker” icon of the Realtek driver.
9-07-2013 20-52-02

Then configure your speakers as a 5.1 (or 7.1) surround set. (remove the check for the center, subwoofer and side pair. We don’t need them.)
9-07-2013 20-55-21

Then adjust the front left and front right speakers to +10 dB
9-07-2013 20-56-33

You will now have an extra 10 dB (which is a LOT) gain. This is especially noticeable when watching those youtube videos that have the audio mixed to low. Music will also gain from this trick, but when it is already loud, some compression will occur as to avoid clipping. Still the effect is much louder without extra hardware or intrusive (distorting equalizing) pay-software.

Have fun.

Compile error Winamp basic plugin example in Visual Studio 2012

Published by:

When you are learning the Beginner’s Basic Plugin tutorial, in order to create your first basic general plugin for Winamp, you might run into a compile error right away.

While using Visual Studio 2012 and creating the project as described in the tutorial, the first compile gave me this error:

What this error basically means is that MessageBoxW cannot be found. The function resides in user32.lib, and the Linker should know where to find it. As we created the project, Visual Studio 2012 did not add the dependencies for the linker (it left the field empty). The solution is to add these dependencies manually.

Go to Configuration Properties -> Linker -> Input -> Additional Dependencies.
Click the dropdown arrow on the right and select < inherit from parent or project defaults >

dependvs2012

Now click ok.
This will in fact populate the field with all the dependencies (bunch of dll’s); You can see those if you go back to the settings again.

Save the project and try again.
Compiling should now run successfully.

CodeIgniter and Netbeans 7.3 autocomplete

Published by:

CodeIgniter and Netbeans don’t work together out of the box. And as this lengthy bug-report suggests, there won’t be any support soon.
 

But we can get some of the code autocomplete working. This post will tell you how.
 

What we need is Netbeans 7.3 en CodeIgniter Version 2.1.3
 

Installing CodeIgniter
After you downloaded CodeIgniter, install it following these instructions. I followed these to the letter, doing what “For the best security, both the system and any application folders should be placed above web root” said. This proved to make matters complicated. I will try to point some pitfalls out.
 

Tutorial
You might want to follow the tutorial section to find out how CodeIgniter works.
 

Code Auto Complete
Early into the tutorial you will notice that auto completion doesn’t work. $this->… will throw “No Suggestions” at you. The problem is that Netbeans needs some extra configuration to get it up and running. Here is how:
 

We need to install the CodeIgniter plugin ( by Junji Takakura ) into Netbeans (optional more info: https://kenai.com/projects/nbphpci/pages/NBInstall)
 

1. Go to Tools – Plugins and select Settings tab. Then click “Add” to add the plugin. No files are needed, the plugin will be downloaded automatically.
22-05-2013 17-26-14
 

2.Put “CodeIgniter” (or something you recognize) in the name field and put the following URL in the URL text field:
https://kenai.com/downloads/nbphpci/Latest_NetBeans730/updates.xml
Click “OK”
 

3.Switch to the “available plugins” tab and search for PHP CI Framework and PHP CI Framework Repository. Check the checkbox in front of them and click “install”.
22-05-2013 17-33-19
 

4. Follow the instructions, click on continue when at the ‘validation warning’ (the following plugins are not signed:)…

 

 
So far so good. My folder structure is as follows. Note that I moved application and system out of the webroot, which in my case is “public_html”:
Source-Files
–>public_html
–>application
–>system

 
To get auto complete working, we need a (autogenerated) auto complete file. It is included in all your files, but not compiled. It’s only used by Netbeans internally so it can find the properties and methods to offer for autocompletion. In previous versions, we needed to put these in the (global) include folder. This version of the plugin does that for us, but we need to tell it where to find our application and system folders.

 

1. Right click your project and choose properties
 

2. Go to Frameworks -> CodeIgniter and check the checkbox to enable it. The click the “Add Folder” button to add the application and settings folders you have. (Note that in the screenshot I renamed them, but in your case they will be called application and system.)
22-05-2013 17-46-16
 

3. Click “OK”. If you did everything right, Netbeans automagically created a directory “autocomplete” and added it the the include path. In that directory is a file containing all the scenery code to make auto complete working, more or less like we want it.
22-05-2013 17-51-39
 

New Project
A bit off topic, but if you want to start a new CodeIgniter project, Netbeans can automatically get the files needed for the framework. To do that, we need to put the files somewhere, on a fixed place, and tell Netbeans where to find them. Here is how.
1. Download the CodeIgniter zipfile (downloads).
2. Save is some place where it can be used for all projects.
3. Tell Netbeans where it is: Go to Tools -> Options -> Choose the PHP icon on top -> Go to the CodeIgniter tab. Click “Add Zip” and browse to the zipfile containing the CodeIgniter framework.
22-05-2013 17-59-43
 

Some fine tuning
When going through the tutorial, you might find that the Auto Complete is not always working as expected.
 

For example:
When you are here ( http://ellislab.com/codeigniter/user-guide/tutorial/create_news_items.html ) to “create a newsitem” and you want to have “input” autocomplete in this line in the model:
$slug = url_title($this->input->post(‘title’), ‘dash’, TRUE);
you will find that is looks like this:
22-05-2013 18-02-02
 

This can be fixed by fiddling in the “__ci_auto_complete__.php” file. In that file you’ll note that every class, like CI_Controller, is preceded by @property statements for methods in them. You’ll notice that the list is for longer for CI_Controller than for CI_Model. The latter is missing the input method. So if you copy ” * @property CI_Input $input ” from the list on top and paste it into the list above CI_model, it will work. I’m still experimenting with this file, so I can’t tell you more.
 

If you have more tips, please add them to the comments section.

Bad Behavior has blocked 3347 access attempts in the last 7 days.