Rose icon indicating copy to clipboard operation
Rose copied to clipboard

Crude fixes to build and run on xubuntu 20.04.

Open fidergo-stephane-gourichon opened this issue 4 years ago • 2 comments

Hi Aske!

Old Amiga fan here. Played with Rose moments ago. Makefile contains hacks (mingw-specific, local hacks).

Did some quick and crude cleanup to have it work on a Xubuntu 20.04 box. Mostly makefile, and also time was stuck on first frame so I hacked crudely. This was enough to see the examples. Looks like some are intended to be in sync with some music. I spotted the reference to "State of the Art" demo!

The changes in this PR are obviously not intended to be merged as is, but can be a base, should you be open to other people reusing your work.

Cheers!

Thanks for the Makefile suggestions!

The Pa_GetStreamTime workaround destroys the synchronization between the music and visuals. There is some discussion of the issue here: https://portaudio.music.columbia.narkive.com/NdyeTVhq/pagetstreamtime-apparently-always-returns-0

Maybe it can be fixed by configuring the PortAudio installation differently?

askeksa avatar Dec 12 '20 15:12 askeksa

Thanks for taking care of replying.

The links you mention suggest a bug in ALSA backend of Portaudio.

Just to clarify a fact, yes PortAudio uses ALSA API implemented by PulseAudio.

To get this information I modified this:

MusicPlayer::MusicPlayer() {
	Pa_Initialize();

        PaHostApiIndex pahac = Pa_GetHostApiCount 	( 	  		);
        printf("pahac = %d\n", pahac);

        for (PaHostApiIndex ahi=0; ahi<pahac; ahi++)
        {
            const PaHostApiInfo *hai = Pa_GetHostApiInfo( ahi );
            printf( "API %d name %s\n", ahi, hai->name );
        }

        PaDeviceIndex padc = Pa_GetDeviceCount 	( 	  		) 	;
        printf("padc = %d\n", padc);

        PaDeviceIndex padod = Pa_GetDefaultOutputDevice 	( 	  		) 	;
        const PaDeviceInfo *padi = Pa_GetDeviceInfo(padod);
        printf( "Name                        = %s\n", padi->name );

        const PaHostApiInfo *hai = Pa_GetHostApiInfo( padi->hostApi );
        printf( "API %s\n", hai->name );

        printf("padod = %d\n", padod);
        exit(1);
}

x

pahac = 2
API 0 name ALSA
API 1 name OSS
padc = 22
Name                        = default
API ALSA
padod = 21

Actually, on my machine, Portaudio only reports ALSA-based accesses to devices. I guess it's just what Ubuntu does.

So far, we don't know much more about the real issue. As you saw, I only shared crude workarounds. They could only be considered starting points in case anyone wants to run Rose on Ubuntu or other Linux.