foobar2000 Development Forum Rules

This forum is for developer discussions only. If you have a problem / bug report / idea / feature request that isn't related to foobar2000 SDK, post it in an appropiate forum instead - tech support questions go to support forum, everything else goes to general forum.All non-developer posts on this forum will be removed. Continued abuse of this forum will result in admin actions (warnings, account suspension).

The following is a list of the known tutorials for componet developers for foobar2000 0.9.

SDK readmeNot a real tutorial, but nevertheless a required read.

Included in the SDK.

General Component TutorialThis tutorial explains how to use some of the commonly used features with an emphasis on general purpose features. The tutorial does not show how to create an input, output or DSP component.

Hi,I am new on this part of the forum. Since I am using Foobar for 2 years, I would like to have a look of a development process.

But what are the requirements ?

I have downloaded and installed- Visual C++ 2005 Express edition- Foobar2000 SDK- and now, these tutorials.

I have seen that foo_tutorial1 solution need to have the projects of the SDK of the same directory level (meaning extracting the foo_ in "foobar2000" directory created by the SDK), each foobar2000_* is now loaded, but some projects are still missing: "components", "librairies" and "sdk".

I have downloaded and installed- Visual C++ 2005 Express edition- Foobar2000 SDK- and now, these tutorials.

You also need the Windows Platform SDK.

QUOTE (Eric @ Mar 26 2006, 03:27 PM)

I have seen that foo_tutorial1 solution need to have the projects of the SDK of the same directory level (meaning extracting the foo_ in "foobar2000" directory created by the SDK), each foobar2000_* is now loaded, but some projects are still missing: "components", "librairies" and "sdk".

Those are not projects, but "solution folders"; in other words, they are merely a means to organize projects in a VS solution.

I have downloaded and installed- Visual C++ 2005 Express edition- Foobar2000 SDK- and now, these tutorials.

You also need the Windows Platform SDK.

QUOTE (Eric @ Mar 26 2006, 03:27 PM)

I have seen that foo_tutorial1 solution need to have the projects of the SDK of the same directory level (meaning extracting the foo_ in "foobar2000" directory created by the SDK), each foobar2000_* is now loaded, but some projects are still missing: "components", "librairies" and "sdk".

Those are not projects, but "solution folders"; in other words, they are merely a means to organize projects in a VS solution.

Just to let you know that when using the (free) Microsoft Visual Studio 2005 Express releases, your projects do not import ("Solution Folders not supported in this version"). It is still possible to build the projects after you setup the various SDK dependencies manually.

What is preventing Peter from releasing source code for such plugins as Autoplaylist Manager or Playback Statistics?... That would help me a lot on my way to become The Plugin Developer And, as far as I remember, there were a lot more sample plugins included in 0.8.3 SDK. Where have they gone?...

i'm a newbie in developing foobar plugin, and always I find people that use only Visual C++ to develop and compile foobar2000 plugin. What about using Mingw-32? Do somebody use it to compile foobar2000 plugins?

i'm a newbie in developing foobar plugin, and always I find people that use only Visual C++ to develop and compile foobar2000 plugin. What about using Mingw-32? Do somebody use it to compile foobar2000 plugins?

Bye,the_lefThAND.

GCC is not currently capable of compiling the source code due to bugs and missing C++ features. Hopefully this situation will change one day.

However, you should be aware that Microsoft Visual Studio Express and the required Platform SDK are both free downloads from Microsoft, for now.

GCC is not currently capable of compiling the source code due to bugs and missing C++ features. Hopefully this situation will change one day.

You will also need C++ ABI compatibility with Microsoft's compilers, not only for the vtable but also for C++ exceptions.

QUOTE (TrNSZ @ Apr 1 2006, 03:57 AM)

However, you should be aware that Microsoft Visual Studio Express and the required Platform SDK are both free downloads from Microsoft, for now.

The Platform SDK has been free for quite some time; it contains the toolchain (including an optimizing compiler) and all the header files and stuff you need to produce Windows binaries.Note that ATL or MFC are only available with the non-Express versions of Visual Studio; (some) resource editors are also missing in the Expresss version, in particular the dialog editor. Nonetheless, the resource compiler is included with the Platform SDK.

What about some documentation of the API? There are a lot of classes and functions, but except the these tutorials, there's no other inspiration source.At least some DOXYGEN generated API summary.Thanks.

I have one question: I want to modify the window in step 2 to see if I understand at least a bit of what is in this tutorial. I have Visual C++ Express 2005 Edition: How can I create a dll?I am shure I read it in this somewhere in devellopers section but I can't find it anymore.

@Moitah: I added the abort_callback parameter to the two functions but I still get a compile error. It seems that the implementation of the on_endoftrack function is required as you assumed. Can you (or anyone else) tell me how this function has to be implemented in foo_dsp_tutorial.cpp? I tried but didn't get it to work.

It's working now. I didn't notice that I had to implement the function two times (for each class). I thought the error was still there when it was in fact a new error coming from the second class. But right after that I got new compile errors. For now I have removed the second class (with presets). The class without presets compiles without any new errors. So I finally have *something* to start with.

Update to foo_tutorial1. The component now queries and uses the global setting for showing keyboard shortcuts in menus. Only the on_contextmenu method in steps 3 and 4 is affected.

Before:

CODE

// Create a menu_manager that will build the context menu. service_ptr_t<contextmenu_manager> cmm; contextmenu_manager::g_create(cmm); // Set up flags for contextmenu_manager::init_context. // Initialize menu_manager for using a context menu. cmm->init_context(items, contextmenu_manager::FLAG_SHOW_SHORTCUTS);