Skip to main content
Topic: foo_chronflow – Coverflow (Read 21786 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Re: foo_chronflow

Reply #75
It's a great component and I'm really thrilled to see that it is still supported.
Thx :)

Quote
I have developed a set of custom buttons based on the JScript Panel. After installing the foo_chronflow they stop resizing correctly, as if the callback chain for the OnResize event was broken.

Happy to assist with additional info (preferably offline) if there is a chance to have this investigated.

I'll gladly look into that. Just send me your JScript Panel config via DM and I'll have a look. When you mean "after installing foo_chronflow" do you mean directly after installation, or after you actually placed the panel in your layout?

Re: foo_chronflow

Reply #76
Straight after installation everything works fine. The resizing is affected only when the foo_chronflow is placed in the layout. Not all the panels are affected - in my case it is only the bottom part of the screen.

I have attached a couple of screen shots to illustrate what's going on. They have been done in the layout editing mode to better show how panel sizing is affected.

The first one has been captured after switching to full screen and back. Panel sizes are fine, but you can see that the waveform minibar just above the row of buttons is not scaled properly.
The second one is the full screen view. The first row has resized correctly, but the row containing buttons has not.
The third screen shot shows what the full screen looks like after foo_chronflow is removed - and that's what was intended.

I'll send the script in a PM.


Re: foo_chronflow

Reply #77
I just released a new version (v0.5.0).

Hi Chronial, thanks for still supporting ChronFlow. Unfortunately on my Vista installation of 1.4.4, chronflow 1.5.0 crashes on startup.

Code: [Select]
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 6C731398h
Access violation, operation: read, address: 6150E29Bh

Call path:
entry=>app_mainloop=>main_thread_callback::callback_run=>foo_chronflow mainthread callback

Code bytes (6C731398h):
6C731358h:  FC 34 7B 6C 83 C4 04 85 C0 75 EE A1 F8 34 7B 6C
6C731368h:  85 C0 74 16 0F 1F 40 00 50 E8 5A 1E 00 00 A1 F8
6C731378h:  34 7B 6C 83 C4 04 85 C0 75 EE 8B 15 04 35 7B 6C
6C731388h:  56 33 F6 85 D2 7E 27 90 A1 00 35 7B 6C 8B 0C B0
6C731398h:  83 79 3C 00 74 13 8D 41 30 50 51 E8 28 2D 00 00
6C7313A8h:  8B 15 04 35 7B 6C 83 C4 08 46 3B F2 7C DA E8 85
6C7313B8h:  36 00 00 FF 35 04 35 7B 6C FF 35 00 35 7B 6C E8
6C7313C8h:  44 32 00 00 C7 05 00 35 7B 6C 00 00 00 00 C7 05

Stack (001FF454h):
001FF434h:  00000000 00000000 00000000 00000000
001FF444h:  00000000 00000000 00000000 00000000
001FF454h:  05427BE0 6C70B830 D73C899A 0A3AB5B9
001FF464h:  001FF4B8 6C777250 00000000 001FF4C4
001FF474h:  6C726C4E 05427BE0 D73C892E 03BBBC30
001FF484h:  03BBBAF0 7776E5D0 0A5B6200 00000021
001FF494h:  00000039 71947CF3 000000A7 000000AF
001FF4A4h:  6C78E22C 0A3AB5B8 000000A8 00000100
001FF4B4h:  000000A7 001FF4D8 6C77ABB0 00000001
001FF4C4h:  001FF4E4 6C728A1F D73C890E 03655080
001FF4D4h:  00000037 001FF508 6C77AEE9 00000000
001FF4E4h:  001FF514 00C71D98 00000000 00C71EEA
001FF4F4h:  00000000 00000013 03BBBC30 00000006
001FF504h:  00C71D0E 001FF530 00D40471 00000001
001FF514h:  001FF540 00C71F4D 00000000 00C71EEA
001FF524h:  00000000 001FF51C 001FF044 001FF5D4
001FF534h:  00D38B45 00D7AE70 00000000 001FF56C
001FF544h:  75A58807 001104C0 000004B1 E976E5FE
001FF554h:  3704AEC1 00C71EEA DCBAABCD 00000000
001FF564h:  00000000 00C71EEA 001FF5E4 75A58962

Registers:
EAX: 054997F0, EBX: 0A74EF9D, ECX: 6150E25F, EDX: 00000002
ESI: 00000000, EDI: 03EA7550, EBP: 001FF470, ESP: 001FF454

Crash location:
Module: foo_chronflow
Offset: 51398h
Symbol: "foobar2000_get_interface" (+5D68h)

Loaded modules:
foobar2000                       loaded at 00BE0000h - 00DDD000h

Machine specifications:
OS: Windows 6.0.6002 Service Pack 2 x64
CPU: Intel(R) Core(TM) i7 CPU         965  @ 3.20GHz, features: MMX SSE SSE2 SSE3 SSE4.1 SSE4.2

I'll send the full dump as a PM if required. Should Vista still be supported? Yeah, I know...

Re: foo_chronflow

Reply #78
Thanks a lot for reporting that crash. Vista should still be supported, you crazy person :D.

This also doesn't look like an OS issue. Full dump would be very helpful, thx in advance.

*edit: Forgot to ask: When you say "crashes on startup", do you mean:
a) foobar crashes when you start it after adding the component
b) foobar crashes as soon as you add the panel
c) foobar crashes when you add the panel and then restart foobar

Re: foo_chronflow

Reply #79
Thanks a lot for reporting that crash. Vista should still be supported, you crazy person :D.

LOL, yeah, right?. I'd upgrade to 7, but I can't make myself install 10 and have Microsoft choose which files to delete and what bugs to "deploy", and when and all. But I digress...

fb2k crashes as soon as it tries to start, I get the UI for a brief moment, but then it shows the crash report dialog. With Chronflow 0.4.5 installed, still on fb2k 1.4.4, everything works again. So it's definately a regression with 0.5.0. The full dump was too large to post here, so I opened an issue at your GitHub (#2), with the dumps attached, stuck the pointer at the eye, and clicked. Kinda hurts every time... ;)

Quote
This also doesn't look like an OS issue.

Yeah, looks more like you stick a pointer where you shouldn't... ;)

Cheers,
Flexx

Re: foo_chronflow – Coverflow

Reply #80
New Release (v0.5.1):

  • Report current album as selection to foobar while the component has focus. This also enables support for the library viewer selection playlist.
  • Fixed bug in settings, preventing users from disabling cover follows playback.

https://github.com/Chronial/foo_chronflow/releases/download/v0.5.1/foo_chronflow.fb2k-component

You can use the library viewer selection playlist to see the contents of the currently selected album. Go to Settings -> Media Library and make sure that the library viewer selection playlist is enabled. This will give you a new playlist that will always contain the tracks of the album currently selected in foo_chronflow.

Re: foo_chronflow – Coverflow

Reply #81
Hello Chronial,

I think your component is fantastic.

I would like to make my covers flow verticaly, is that possible?

Also, it shows content of just my playlist. Is it possible to make it show covers from my whole librabry?

Thank you very much

Boris

Re: foo_chronflow – Coverflow

Reply #82
Are you sure you are using this component? This component can not show the content of your playlist – only the content of your whole library.

You can adjust the way the covers move in the "Cover Display" tab of the settings.

Re: foo_chronflow – Coverflow

Reply #83
Hi Chronial,

I am using version 0.5.1, and yes, if I send my whole music collection on playlist, it shows all album covers. But if I play only on album, and only that one is on playlist, Coverflow shows only that album cover. Or as many albums I have on my playlist.

In "Cover Display" tab all various modes of moving are using horizontal movement, except for spiral which runs slowly with very small thumbnails.

I have Coverflow in a panel, which is placed verticaly. I would like thumbnails to move up and down instead of left or right, because now I have a lot of empty space above or below it.

I use foobar Dark One v3.1

Thanks

Re: foo_chronflow – Coverflow

Reply #84
I made you vertical setup:
Code: [Select]
/*********************************************************/
/********************** COVER SETUP **********************/
/*********************************************************/

// Set the range of covers to draw.
//
// Returns: (leftmostCover, rightmostCover)
function drawCovers(){
return new Array(-15, 15);
}

// Set the position of a point on each cover.
//
// See also coverAlign() below
function coverPosition(coverId){
var x, y, z;
x = coverId*1;
y = 0;
z = -Math.abs(coverId)*0.8;
z = (straightCos(coverId)-1)*0.9;
return new Array(y, -x, z);
}


function straightCos(x){
if (Math.abs(x) < Math.PI/2)
return Math.cos(x);
else
return Math.PI/2 - Math.abs(x);
}



// Set which point of the cover coverPosition() defines.
//
// (-1,-1) means bottom left, (0,0) means center,
// (1,1) means top right, (0, -1) means bottom center etc.
//
// Returns: (x, y)
function coverAlign(coverId){
return new Array(0, 0);
}

// Set the rotation of each cover.
//
// Returns: (angle, x, y, z) - this rotates the cover
// `angle` degrees around the axis along (x,y,z). Per
// default, the covers are parallel to the x-y-plane.
function coverRotation(coverId){
return new Array(0, 0, 1, 0);
}

// Set the the size boundaries for the cover.
//
// Preserving its aspect ratio, the cover is scaled to fit
// inside the given rectangle.
//
// Returns: (width, height)
function coverSizeLimits(coverId){
return new Array(1.1, 1);
}

/*********************************************************/
/********************* CAMERA SETUP **********************/
/*********************************************************/

// Defines how the viewport behaves when the aspect ratio
// of the window changes.
//
// Returns: Expand into (width, height)
// If this returns (0,1), the height is fixed.
// If this returns (1,0), the width is fixed.
// Can also return mixed values, i.e. (1,2) for mixed
// scaling.
function aspectBehaviour(){
return new Array(1, 0);
}


// Set the position of the camera.
function eyePos(){
return new Array(0, 0, 1.4);
}

// Set the point that the camera is looking at.
function lookAt(){
return new Array(0, 0, 0);
}

// Set where up is.
//
// This can be used to rotate the view. The returned vector
// will point upwards in the viewport.
function upVector(){
return new Array(0, 1, 0);
}

/*********************************************************/
/********************* MIRROR SETUP **********************/
/*********************************************************/

// Decide whether the mirror should be rendered.
function showMirrorPlane(){
return false;
}

// Set an arbitrary point on the mirror plane.
function mirrorPoint(){
return new Array(-0.5, 0, 0);
}

// Set the normal vector of the mirror plane.
function mirrorNormal(){
return new Array(1, 0, 0);
}

Re: foo_chronflow – Coverflow

Reply #85
Thank you very much.

I works like a charm  :-) .

Boris

 
SimplePortal 1.0.0 RC1 © 2008-2019