a more "proper" fix would be:
retrovol_LDADD = -lasound `pkg-config --libs gtk+-2.0`
(and leave it up to distros to rectify the pkg-config files appropriately so that future updates don't break due to unnecessary direct dependencies)

I've used several versions of retrovol, and the volume characteristic doesn't seem right. Almost no change in the lower two thirds with very rapid changes in the upper range. Also I can't actually mute it at the bottom, even though it shows the red X.

Shouldn't it give an approximately equal change in perceived volume for each equal slider increment?

I suspect that different sound cards might use different curves, because it seems fine on my end. Right now I'm just linearly using the value range that Alsa reports. I'll add an entry to my todo list to add some other optional scales in case user hardware or preference differs from my own._________________Between depriving a man of one hour from his life and depriving him of his life there exists only a difference of degree. --Muad'Dib

Shouldn't it give an approximately equal change in perceived volume for each equal slider increment?

I have often had the same perception and wonder if it could be logarithmic v. linear scale issue (since sound is measured in decibels) but I took it as part of the "retro". Now if only it went to 11._________________Web Programming - Pet Packaging 100 & 101

If anybody is interested in having it changed right now, there are only two lines of source code that would need adjusting. Otherwise, you'll have to wait until I get around to adding it proper, which is more work since I want it to be optional - I'm kind of busy lately so I might not work on it for a week or two. Also, this hasn't been tested thoroughly - it is possible that in some situations near the maximum and minimum volume levels you might have trouble getting it to completely max (or min) out. I will test that more rigorously when I implement it for real.

Anyway, the changes are to the alsa_classes.cpp file. The lines to change are 161 and 167, in the scale_out and scale_in functions.

Here is the original code:

Code:

//this is used internally to scale a number to be from 0-100
int Element::scale_out(int num){
if(max-min==0){ return(num); }
return(ceil(100.0*(num-min)/(max-min)));
}
//this is the inverse of scale_out; it's used to take a 0-100 number and put it
//into the proper scale for the element to understand
int Element::scale_in(int num){
if(max-min==0){ return(num); }
return(floor((num*(max-min)/(100))+min));
}

And here is the modified code:

Code:

//this is used internally to scale a number to be from 0-100
int Element::scale_out(int num){
if(max-min==0){ return(num); }
return(ceil(pow(100.0, (num-min)/(double)(max-min))));
}
//this is the inverse of scale_out; it's used to take a 0-100 number and put it
//into the proper scale for the element to understand
int Element::scale_in(int num){
if(max-min==0){ return(num); }
return(round((log(num)/log(100)*(max-min))+min));
}

And here is the diff, if you prefer that format:

Code:

--- src/alsa_classes.cpp (revision 181)
+++ src/alsa_classes.cpp (working copy)
@@ -158,13 +158,13 @@
//this is used internally to scale a number to be from 0-100
int Element::scale_out(int num){
if(max-min==0){ return(num); }
- return(ceil(100.0*(num-min)/(max-min)));
+ return(ceil(pow(100.0, (num-min)/(double)(max-min))));
}
//this is the inverse of scale_out; it's used to take a 0-100 number and put it
//into the proper scale for the element to understand
int Element::scale_in(int num){
if(max-min==0){ return(num); }
- return(floor((num*(max-min)/(100))+min));
+ return(round((log(num)/log(100)*(max-min))+min));
}
//this will grab the highest value in the element
int Element::get(){

If you wanted some other scaling formula, these two functions are where you'd define it._________________Between depriving a man of one hour from his life and depriving him of his life there exists only a difference of degree. --Muad'Dib

Perhaps it is somehow being caught by a window manager trying to prevent programs from "stealing the focus". What window manager is in Porteus?_________________DEATH TO SPREADSHEETS
- - -
Classic Puppy quotes
- - -
Beware the demented serfers!

If anybody is interested in having it changed right now, there are only two lines of source code that would need adjusting. Otherwise, you'll have to wait until I get around to adding it proper, which is more work since I want it to be optional - I'm kind of busy lately so I might not work on it for a week or two. Also, this hasn't been tested thoroughly - it is possible that in some situations near the maximum and minimum volume levels you might have trouble getting it to completely max (or min) out. I will test that more rigorously when I implement it for real.

Anyway, the changes are to the alsa_classes.cpp file. The lines to change are 161 and 167, in the scale_out and scale_in functions.

As I commented above, great - I'll wait. My skills are not up to that, having never compiled anything. I do know this is an annoying deficiency in retrovol. I just returned to using it after leaving a minimal absvolume. That the curve is so crowded at the top is perhaps not so bad as the lack of a true mute.

This is your baby and I hope you will treat it right in this respect too. Apologies if the deficiency is somehow aggravated in my setup, but doing it right can only help. Thanks in advance!

Another minor "issue" is that it segfaults if there is no mixer available (i.e. if sound is not working). I can think of a couple of alternative behaviours for this situation..._________________DEATH TO SPREADSHEETS
- - -
Classic Puppy quotes
- - -
Beware the demented serfers!

...
That the curve is so crowded at the top is perhaps not so bad as the lack of a true mute.
...

It has a "true mute" as far as I can tell. Am I missing something, or are you?

Yes, it's entirely possible, and likely, that I'm missing something. My main objection was the "curve" that makes adjustment rather "touchy."

The whole mixer thing is apparently very capable and thus complicated. The only thing I use is the screen bar (front?), and I would prefer to have this simulate a conventional audio potentiometer that was at zero level, i.e. mute, at the extreme left/bottom/counterclockwise.

A problem for me is that there are a number of volume controls. Different apps have their own, mplayer, youtube, etc, and these can blast past the front control. Is there a simple tutorial for all this, like what is IEC958, and should it be checked, etc?

My main objection was the "curve" that makes adjustment rather "touchy."

Like Pizzasgood, I've always found the "curve" fine on my hardware. But you might find it helps to use the slider (rather than the mouse scroll wheel) and go into the options and make it really long.

Henry wrote:

...
The only thing I use is the screen bar

If I understand correctly, you're saying you only use the main slider that comes up when you click on the icon, i.e. you don't use the "full window" available from a right-click on the icon, which provides a number of controls.

Quote:

(front?),

You might have it controlling something called "front" on your machine. I think it would most often default to controlling something called "Master playback" or similar. It is configurable - look on the "tray" tab in the preferences.

Quote:

and I would prefer to have this simulate a conventional audio potentiometer that was at zero level, i.e. mute, at the extreme left/bottom/counterclockwise.

You're saying you want a knob rather than a slider? There are other tray applets which provide that if you want to check them out... although knob vs slider wouldn't itself make any difference to the "curve".

A problem for me is that there are a number of volume controls. Different apps have their own, mplayer, youtube, etc, and these can blast past the front control.[/quote]
Personally I like to configure all my applications to use a software volume control, which I use initially to adjust them all to output at similar levels, and then I just use retrovol when I need to adjust the volume on any particular occasion.

Quote:

Is there a simple tutorial for all this, like what is IEC958, and should it be checked, etc?

I'm not sure there could be a simple tutorial, because different sound cards seem to have all sorts of weird and wonderful controls, or names for them._________________DEATH TO SPREADSHEETS
- - -
Classic Puppy quotes
- - -
Beware the demented serfers!Last edited by disciple on Sat 23 Feb 2013, 07:21; edited 1 time in total

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot vote in polls in this forumYou cannot attach files in this forumYou can download files in this forum