void ForkedProcess (const char * file, float fade, int fd) {
    printf ("initing device drivers\n");
    if (!FSOUND_Init(44100, 64, FSOUND_INIT_GLOBALFOCUS))
    {
        printf("SOUND Error %d\n", FSOUND_GetError());
        exit(1);
    }
    Music mus;
    mus.Load(file);
    if (mus.m) {
        mus.Play(fade);

        printf ("f0rked playing %s\n",file);
        while (!INET_BytesToRead(fd)) {
            if (AllDone) {
                printf ("song done\n");
                mus.Free();
                return;
            }
        }
        mus.Stop();
        mus.Free();
    }
    return;
}
Music PlayMusic( const char *file, Music &oldmusic )
{
    Music music;
    music.Load( file );
    if (music.m == NULL) {
        changehome( true, false );
        music.Load( file );
        changehome( false );
        if (music.m == NULL) {
            changehome( true, true );
            music.Load( file );
            changehome( false );
            if (music.m == NULL)
                return oldmusic;
        }
    }
    sende  = false;
    music.Play( fadeout, fadein, oldmusic );

    sende  = true;
    curmus = file;
    invalid_string = false;
    return music;
}