|
|
|
06-24-2016, 03:53 AM
|
#1
|
Human being with feelings
Join Date: Jul 2007
Posts: 1,891
|
db, log, exp, question
hi,
I'm trying to find a way to wrap my head around converting 0-1 floating point numbers into db values.
Also, are db values automatically negative or are they relative values that you need to apply a scale to in order to force them to be -inf or -6db.
like how do you turn 0 into "minus infinity"?
also, I noticed that if you turn an audio signal in a DAW's mixer above zerodb, then it does not clip. How is a 0-1 floating point number given "headroom" in code? is there a decibel scale that is dropped onto a 0-1 floating point number so that "zero db" is 0.625 or something?
Also, I am not good at understanding log or exp and their usage in programming. also, it is hard for me to understand x/srate functions as well. anytime it goes beyond addition and subtraction and multiplying, it goes to a logical place that i cannot follow yet. I am looking for ways to understand how to use logs, exp, and samplerate things.
|
|
|
06-24-2016, 04:39 AM
|
#2
|
Human being with feelings
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,653
|
Let's start with some simple conversion formulae:
Code:
gain = 10^(db / 20);
// db = 20 * log(gain) / log(10);
db = 20 * log10(gain);
Note that log(x) here means the natural log, sometimes referred to as ln(x), and log10(x) is log(x)/log(10).
If you convert from dB value to gain using the 1st formula, then you will notice that negative dB values will result in positive gain values smaller than 1, positive dB values will result in gain values larger than 1, and a dB value of 0 will result in exactly 1. So the gain value isn't necessary in the [0, 1] range, it is in the (0, +inf) range.
These formulae don't support a dB value of -inf, or a gain value of 0. What you can do is choose a very low dB value that you consider to be -inf (e.g. -150 dB), and then do this:
Code:
gain = db > -150 ? 10^(db / 20) : 0;
db = gain > 0 ? 20 * log10(gain) : -150;
BTW, about the relation between log and exp: If y = exp(x), then x = log(y).
|
|
|
06-24-2016, 01:29 PM
|
#3
|
Human being with feelings
Join Date: Dec 2012
Posts: 7,293
|
I think we should step back even from that and start with the understanding that a db value never actually tells you anything absolute on its own. It is always a ratio between two actual values.
|
|
|
06-25-2016, 06:13 AM
|
#4
|
Human being with feelings
Join Date: Jul 2007
Posts: 1,891
|
thanks!
if i wanted to make a graphic plot of various log curves, with controls to change the coefficients, in ReaJS, is that hard or easy?
is there a 2d graphic plotter snippet around?
|
|
|
06-25-2016, 08:00 AM
|
#5
|
Human being with feelings
Join Date: Jul 2007
Posts: 1,891
|
looks like i found one, will this work?
Quote:
http://www.rs-met.com/freebies.html
Key Features
arbitrary transfer functions via math-expressions
input- and output-filters
up to 16x oversampling
FuncShaper is a waveshaping distortion plugin based on a mathematical expression evaluator. You can enter an expression to create the function which will be used as waveshaping transfer function. The expression may contain arithmetic operators, well known standard functions (sin, cos, tanh, etc.) as well as some proprietary special functions, which are specifically geared towards the application domain (soft-clipping, Chebychev polynomials, etc.).
|
from http://www.rs-met.com/freebies.html
|
|
|
06-25-2016, 10:18 AM
|
#6
|
Human being with feelings
Join Date: Dec 2012
Posts: 7,293
|
I like this guy: Desmos Graphing Calculator
You can't actually hear what it would do to a signal, but you can overlay and compare all the graphs you want. For what we do, the fact that you can't do piece-wise functions is kind of a bummer, but I still use it all the time.
|
|
|
06-25-2016, 12:17 PM
|
#7
|
Human being with feelings
Join Date: Oct 2013
Location: Seattle, WA
Posts: 876
|
I use Flotr a ridiculous amount when I am graphing out my functions, it lets me do piecewise.
http://www.humblesoftware.com/flotr2/#!basic
For example, at one point I did an approximation of the clipping function in the Wuff plugin using a piecewise quadratic to see if I could do it more cheaply. It's in Javascript, not JS, but porting between the two is fairly straightforward, and I like Javascript.
YMMV, but it works for me.
Code:
(function basic(container) {
var
d1 = [],
d2 = [], d3 = [],
i, graph,x, y, mu, dv1, dv2, intc, kneeL, knee, kneeR;
dv1 = 1;
dv2 = 1/12;
intc = dv1 + 0.5*(dv2-dv1);
kneeL = 0.2;
kneeR = 0.8;
knee = kneeR - kneeL;
var dv10 = 1, dv20 = 1/3,
intc0 = dv10 + 0.5*(dv20-dv10),
kneeL0 = -0.4,
kneeR0 = -1,
knee0 = kneeR0 - kneeL0;
// generate tanh()
for (i = -1.1; i < 1.5; i += 0.01) {
x = Math.exp(2*i);
y = (x - 1) / (x + 1);
d2.push([i, y]);
}
// approximation from Wuff
for (i = -1.1; i < 0.2868; i += 0.01) {
x = i;
y = -0.253547*x*x*x + 1.015242*x;
d1.push([i, y]);
}
for (i = 0.2868; i < 0.44305; i += 0.01) {
x = i;
y = -3.213782*x*x*x + 2.546986*x*x + 0.284766*x + 0.069833;
d1.push([i, y]);
}
for (i = 0.44305; i < 0.56024; i += 0.01) {
x = i;
y = 2.4945*x*x*x - 5.040176*x*x + 3.646258*x - 0.426603;
d1.push([i, y]);
}
for (i = 0.56024; i < 0.63837; i += 0.01) {
x = i;
y = 1.572526*x*x*x - 3.490596*x*x + 2.778122*x - 0.264481;
d1.push([i, y]);
}
for (i = 0.63837; i < 0.75555; i += 0.01) {
x = i;
y = 0.741219*x*x*x - 1.898552*x*x + 1.761808*x - 0.04822;
d1.push([i, y]);
}
for (i = 0.63837; i < 1.5; i += 0.01) {
x = i;
y = 0.174563*x*x*x - 0.614142*x*x + 0.791372*x + 0.196184;
d1.push([i, y]);
}
// a piecewise quadratic approximation
for (i = -1.1; i < 1.5; i += 0.01) {
y = i;
if (i > kneeR) {
x = i - kneeR;
y = kneeL + intc*knee + x*dv2;
} else if (i > kneeL) {
mu = (i - kneeL)/knee;
x = dv1*mu + mu*mu*0.5*(dv2-dv1);
y = kneeL + x*knee;
} else if (i < kneeR0) {
x = i - kneeR0;
y = kneeL0 + intc0*knee0 + x*dv20;
} else if (i < kneeL0) {
mu = (i - kneeL0)/knee0;
x = dv10*mu + mu*mu*0.5*(dv20-dv10);
y = kneeL0 + x*knee0;
}
d3.push([i,y]);
}
// Draw Graph
graph = Flotr.draw(container, [ d1, d2, d3 ], {
xaxis: {
minorTickFreq: 4
},
grid: {
minorVerticalLines: true
}
});
})(document.getElementById("editor-render-0"));
|
|
|
06-25-2016, 03:13 PM
|
#8
|
Human being with feelings
Join Date: Jul 2007
Posts: 1,891
|
Thank you thank you
|
|
|
04-16-2017, 02:41 AM
|
#9
|
Human being with feelings
Join Date: Jul 2007
Posts: 1,891
|
Quote:
Originally Posted by Tale
Let's start with some simple conversion formulae:
Code:
gain = 10^(db / 20);
// db = 20 * log(gain) / log(10);
db = 20 * log10(gain);
|
I'm trying to make a simple vu meter.
i want to convert spl0 to a useful looking db meter.
@sample
gain = spl0;
gain = 20 * log(gain);
@gfx
gfx_rect(0,0,gfx_w*gain,20);
long story short, that gives no graphical output.
when i plug log(x/20) into desmos, https://www.desmos.com/calculator
it's showing me a curve below zero but what i want is to work within 0 and 1.
to clarify, i only want to work with signals that are in a range of -1 and +1, but in the case of powers and logs, i only care about the range 0 to 1.
|
|
|
04-16-2017, 03:03 AM
|
#10
|
Human being with feelings
Join Date: Nov 2010
Location: Mullet
Posts: 829
|
Code:
@sample
gain = abs(spl0); // you need all positive #'s
gaindb = 20*log10(gain); // this is converting to dBFS
gfxgain = gain*400; // you need to "scale" to a useable value for gfx
@gfx
gfx_r = 1; // you need to specify a color
gfx_rect(20,20,gfxgain,20);
|
|
|
04-16-2017, 03:14 AM
|
#11
|
Human being with feelings
Join Date: Oct 2013
Location: Seattle, WA
Posts: 876
|
EDIT: Lol, I see another answer came in just before me. Oh, well, I just leave this here.
Code:
desc:simple vu
@init
gain = 0;
@sample
gain = abs(spl0);
gain = 20 * log10((gain));
@gfx
gfx_a = 0.9;
gfx_r = 0.8;
gfx_g = 0.8;
gfx_b = 0.8;
gfx_rect(0,0,100+gain,20);
|
|
|
04-16-2017, 03:57 AM
|
#12
|
Human being with feelings
Join Date: Jul 2007
Posts: 1,891
|
thanks for your replies! (but i couldnt get them to work with my code.)
here's the full code. i was only showing the part i had difficulty with.
Code:
desc:meter try 4.12.2017
slider1:0<0,100,1>
slider2:0.99<0.95,0.999,0.001>feedback
slider3:20<1,100,1>bar height
slider4:0<0,200,1>bar x position
slider5:0<0,200,1>bar y position
slider6:1<0,2,0.01>bar gain
@init
bpos=0;
@slider
something=slider1*srate;
barx=slider4;
bary=slider5;
bargain=slider6;
@block
@sample
spl0=spl0;
spl1=spl1;
level0 = (abs(spl0)*bargain);
level0 < old_level0 ? (
old_level0 *= slider2;
level0 = old_level0;
):(
old_level0 = level0;
);
level1 = (abs(spl1)*bargain);
level1 < old_level1 ? (
old_level1 *= slider2;
level1 = old_level1;
):(
old_level1 = level1;
);
level0 = (20 * log10(level0))*400; // this is the "new" part that was suggested.
@gfx 640 400
// this part 'dynamically' sets the color from green, yellow to red.
// it would be cool to use log() or something to set up curves.
function barcolor(level)
globals(gfx_r,gfx_g,gfx_b)
(
level > 0 ?(level < 0.75 ?(
gfx_r=0;
gfx_g=1;
gfx_b=0; ); );
level >= 0.75 ?(level < 0.999 ?(
gfx_r=1;
gfx_g=1;
gfx_b=0; ); );
level >= 0.999 ?(
gfx_r=1;
gfx_g=0;
gfx_b=0; );
);
gfx_x=100;
gfx_y=0;
barcolor(level0);
gfx_rect(barx,bary,gfx_w*level0,slider3);
barcolor(level1);
gfx_rect(barx,bary+slider3,gfx_w*level1,slider3);
|
|
|
04-16-2017, 06:17 PM
|
#13
|
Human being with feelings
Join Date: Oct 2013
Location: Seattle, WA
Posts: 876
|
First off, how to do the "feedback" thing correctly is use exp(). Shown below.
Quote:
level0 = (20 * log10(level0))*400; // this is the "new" part that was suggested.
|
That is absolutely not what was suggested. Either you do this:
gfxgain = gain*400;
gfx_rect(20,20,gfxgain,20);
or you do this
gain = 20 * log10((gain));
gfx_rect(0,0,100+gain,20);
what you were doing is neither of those things.
I added some code to show text as well. For color I figured I'd just use the square function, works okay, not bad for proof-of-concept. Just realized I didn't add logic for signals over 0 dBfs, but whatever. Proof of concept.
btw, I talk about some VU meter settings in this thread. Towards the bottom.
http://forum.cockos.com/showthread.php?t=129098
Code:
desc:simple vu
slider1:600<1,1000,1>Decay (ms)
@init
maxrange = 60; // let's top out at 0
minvalue = 10^(-60/20); // smallest value on VU meter is -60
vu_width = 300;
vu_scale = vu_width/maxrange;
lvl0 = lvl1 = minvalue;
@slider
decay = exp(-1/(slider1*0.001*srate)); // how to do a time constant
@sample
s0 = abs(spl0); // first, find our new values
s1 = abs(spl1);
lvl0 *= decay; // decay our old value first
lvl1 *= decay;
lvl0 = max(minvalue,max(lvl0,s0)); // which is bigger, old or new?
lvl1 = max(minvalue,max(lvl1,s1)); // if lower than -60, is -60
vu0 = 20*log10(lvl0)*vu_scale; // this converts to dB and scales to screen
vu1 = 20*log10(lvl1)*vu_scale;
color0r = lvl0*lvl0; // the very complicated color function
color0g = 1 - color0r;
color1r = lvl1*lvl1;
color1g = 1 - color1r;
@gfx
gfx_a = 1;
gfx_r = color0r;
gfx_g = color0g;
gfx_b = 0;
gfx_rect(0,0,vu_width+vu0,20);
gfx_x = vu_width + 10;
gfx_y = 10;
gfx_r = gfx_g = gfx_b = 0.9;
gfx_drawnumber(vu0,1);
gfx_x = vu_width + 55;
gfx_drawstr(" dB Left");
gfx_r = color1r;
gfx_g = color1g;
gfx_b = 0;
gfx_rect(0,40,vu_width+vu1,20);
gfx_x = vu_width + 10;
gfx_y = 50;
gfx_r = gfx_g = gfx_b = 0.9;
gfx_drawnumber(vu1,1);
gfx_x = vu_width + 55;
gfx_drawstr(" dB Right");
|
|
|
04-17-2017, 02:19 AM
|
#14
|
Human being with feelings
Join Date: Jul 2007
Posts: 1,891
|
did you try my code? in what i just supplied, the right channel of my meter was fully functional by taking the gfx_w and multiplying that by the abs() of the signal. i use only a short function to change colors of the meter based on signal level. my feedback method is wrong but it works. oh man when i learn transfer functions i will be such a boss.
all i was asking for at my current level of understanding was how to convert the linear value of abs(spl0) to a multiplicand of gfx_w that could be mapped to dB-type values.
i am not asking for help making a vu meter, i already successfully did it. the reason i didnt share all my code the first time was because it's just useless to anyone else, and a learning tool for myself. but i shared it after it was assumed i didn't know to use gfxr,g,b. the left channel does not work because i tried to change linear to logarithmic, specifically, a dB representation.
so, the log, exp, etc theory still doesnt make sense. the only tutorials are how to calculate logs, ln, exp, ... calculating them is trivial, but utilizing them is almost never discussed. using them in geometry to get a transfer function that is useful to audio DSP is what i need help with trying to understand. it would be great to know "why" it works rather than "that" it works. mainly wrangling and clamping values to 0-1 would be nirvana as long as i can do all the complex curves i want within that range. i know, it takes a phd in calculus and a room full of paid programming chimps.
a log(x) is an expression that means "what power of the base of the log gives x"
but how is that useful? why does it work to do all those sweet things to the signal that we love so much?
keyword, why. what in the math is actually happening to the number we feed to it when these log, ln, exp, etc are happening? i would use desmos or anaconda but i need to know why im doing it or i will just be throwing numbers at them without any clue of why. and similarly, getting random looking data out of it. the 100+gain bit in Sault's code is cool. and i notice that somehow the log() function spits out negative numbers, so weird. i spent yesterday watching videos about how log() can't be negative so that is nice and confusing.
i am very very poor at just memorizing things rote and regurgitating them and being lucky that they are the right thing. unfortunately i am someone who needs to understand "why" something works, and it makes life very difficult but when i learn a thing, i "really" learn a thing.
Last edited by reapercurious; 04-17-2017 at 03:24 AM.
|
|
|
04-17-2017, 03:46 AM
|
#15
|
Human being with feelings
Join Date: Oct 2013
Location: Seattle, WA
Posts: 876
|
Quote:
the left channel does not work because i tried to change linear to logarithmic, specifically, a dB representation.
|
Well, do you understand what you did wrong?
So two different approaches were shown to you, I'll explain mine. Start by assigning a width. In my case I just chose one, in the most recent I went with 300 pixels. I then chose a meter range of -60 to 0. To scale that range (a range of 60) to 300 pixels requires a multiply of 5. So if we generate a dB value, multiply it by 5, then add it to 300, it will give the length to fill out the rectangle to.
level0 = (20 * log10(level0))*400; // this is the "new" part that was suggested.
gfx_rect(barx,bary,gfx_w*level0,slider3);
Here is what you did - you created a dB value with the 20*log10(), then multiplied it by 400. Then you multiplied that by the width of the gfx window. Do you understand why that doesn't work?
-60 * 400 * whatever = some really large useless negative number
Now go back to the original code you posted
gain = 20 * log(gain);
@gfx
gfx_rect(0,0,gfx_w*gain,20);
Again, you create a dB value but you then multiply it by the screen width, and that doesn't give you anything worthwhile, just some really large negative number.
Now, you could add gain to gfx_w, that would generate a usable outcome.
Quote:
in what i just supplied, the right channel of my meter was fully functional by taking the gfx_w and multiplying that by the abs() of the signal.
|
Yes. If you take the abs() of the sample and multiply that against the width of the window, it will work. It would be a linear representation, though, and while maybe some people might find that useful, it's not the same as logarithmic, which is what meters traditionally measure.
Quote:
all i was asking for at my current level of understanding was how to convert the linear value of abs(spl0) to a multiplicand of gfx_w that could be mapped to dB-type values.
|
But you are asking for two different things and they require two different approaches. The linear value of the abs() is between 0 and 1. The logarithmic scale gives us values from -lots to +lots, e.g. -60 to 0 in the meter code I whipped up. So, the logic has to account for that.
e.g. linear of 0.01 corresponds to logarithmic -40 dB
That's a damn good question. I'll sleep on it, maybe I can restate it in a way that makes sense and is useful.
|
|
|
04-17-2017, 04:12 AM
|
#16
|
Banned
Join Date: Nov 2016
Posts: 416
|
Quote:
Originally Posted by reapercurious
so, the log, exp, etc theory still doesnt make sense. ... it would be great to know "why" it works rather than "that" it works.
a log(x) is an expression that means "what power of the base of the log gives x"
but how is that useful? why does it work to do all those sweet things to the signal that we love so much?
|
If you see no use for it, why do you love it and want to use it? (Space left below for you to evade my question while complaining about it. More space left for you to type about all the reasons you don't take a break from typing about yourself and read a Calculus 101 textbook instead.)
|
|
|
04-17-2017, 04:19 AM
|
#17
|
Banned
Join Date: Nov 2016
Posts: 416
|
Everything you ever wanted to know about basic calculus here:
https://archive.org/search.php?query=calculus
From the era before children were rewarded for moaning about their learning impairments.
|
|
|
04-17-2017, 04:27 AM
|
#18
|
Human being with feelings
Join Date: Jul 2007
Posts: 1,891
|
block me then, you prick
|
|
|
04-17-2017, 04:29 AM
|
#19
|
Human being with feelings
Join Date: Jul 2007
Posts: 1,891
|
you know nothing of my background you POS
|
|
|
04-17-2017, 04:31 AM
|
#20
|
Banned
Join Date: Nov 2016
Posts: 416
|
Quote:
Originally Posted by reapercurious
you know nothing of my background you POS
|
I know much more about it than I want to.
|
|
|
04-17-2017, 04:33 AM
|
#21
|
Human being with feelings
Join Date: Jul 2007
Posts: 1,891
|
mods i have tried being patient with this ahole.
|
|
|
04-17-2017, 04:38 AM
|
#22
|
Human being with feelings
Join Date: Jul 2007
Posts: 1,891
|
Quote:
Originally Posted by TryingToMakeMusic
I know much more about it than I want to.
|
im flattered that you find me SO DAMN INTERESTING.
so sad the interest is unrequited.
|
|
|
04-17-2017, 04:39 AM
|
#23
|
Banned
Join Date: Nov 2016
Posts: 416
|
Quote:
Originally Posted by reapercurious
block me then, you prick
|
You may block me, but I post to help the children---the children who want to do DSP, not the children who want to wank about all the very special reasons they don't read a calculus textbook before trying to use calculus. You make more drama about your special problems than Stephen Hawking does; go figure.
|
|
|
04-17-2017, 04:52 AM
|
#24
|
Human being with feelings
Join Date: Jul 2007
Posts: 1,891
|
unrequited interest
to Justin and the rest, I finally failed. I admit it, I faltered. I am a schizoid psychopath like John Cleese says:
|
|
|
04-17-2017, 04:58 AM
|
#25
|
Banned
Join Date: Nov 2016
Posts: 416
|
|
|
|
04-17-2017, 01:47 PM
|
#26
|
Human being with feelings
Join Date: Oct 2013
Location: Seattle, WA
Posts: 876
|
Oh jfc.
I took calculus in college and it didn't cover everything you need to know DSP, not by a long shot. Audio DSP is a pretty niche topic.
It's taken me years to get to the point where I am now, and a lot of the time it's been because others were nice enough to take their time to help me understand. I've valued this community a lot because of the free flow of information.
TryingToMakeMusic, take it down a notch. We didn't insult you when you were asking questions. If you don't like how he's asking for help, then keep scrolling.
|
|
|
04-17-2017, 03:24 PM
|
#27
|
Banned
Join Date: Nov 2016
Posts: 416
|
Quote:
Originally Posted by SaulT
Oh jfc.
I took calculus in college and it didn't cover everything you need to know DSP, not by a long shot. Audio DSP is a pretty niche topic.
|
What college accredited you for Calculus before you understood the domain and range of the Log function? Please tell me the name of the college? What calculus-101 book did you read that didn't teach you the domain and range of the Log function?
Quote:
Originally Posted by SaulT
It's taken me years to get to the point where I am now,
|
We're talking about the domain and range of the Log function here, nothing esoteric.
Quote:
Originally Posted by SaulT
and a lot of the time it's been because others were nice enough to take their time to help me understand. I've valued this community a lot because of the free flow of information.
|
And I posted a link to a thousand Calculus textbooks because I'm nice, while you didn't. Don't let his fits and tantrums distract you, Calculus book is what he needs, because you're not always going to be around to do all his work for him.
Quote:
TryingToMakeMusic, take it down a notch. We didn't insult you when you were asking questions.
|
My questions were about undocumented things, not about things in textbooks that I'm too undisciplined to read.
Look at the question that triggered his latest tantrum: Why does he love and want to use the Log function? You and he can take that as a violent insult, but actually I think it gets to the heart of the matter. If he doesn't see a need for it, why is he using it? He said himself, he's not good at learning things for which he sees no relevance.
Last edited by TryingToMakeMusic; 04-17-2017 at 03:40 PM.
|
|
|
04-17-2017, 03:39 PM
|
#28
|
Banned
Join Date: Nov 2016
Posts: 416
|
Trying to remember my reaction when someone else showed me this site: https://archive.org/. I don't remember throwing a tantrum, I think I was more like "wow, that is awesome, thank you."
|
|
|
04-17-2017, 07:47 PM
|
#29
|
Human being with feelings
Join Date: Oct 2013
Location: Seattle, WA
Posts: 876
|
Pre-calc and calc were something like 15 years ago for me. Plenty of time to forget big chunks of it. I recently took a business calc course and log wasn't covered. So I dunno, whatever.
Quote:
And I posted a link to a thousand Calculus textbooks because I'm nice, while you didn't.
|
Your care and concern is palpable. /s He asked why it's applicable. Instead of saying something about, say, how we hear logarithmically instead of linearly, you just pointed to a collection of textbooks and got all snarky for apparently no good reason. Accusing people of throwing "tantrums" and calling them "snowflakes", contrary to popular opinion, doesn't actually help anything.
When you asked about reading intersample values, did I gesture vaguely towards researchgate and tell you "you're welcome"?
If you don't like it, if you think the question is stupid and unworthy of you, you are absolutely free to move on.
Some people need a hand understanding things. That's why there are teachers. Not saying I'm a teacher by any stretch, but if I can help point the right direction then I'd like to.
Your response :
Quote:
If you see no use for it, why do you love it and want to use it? (Space left below for you to evade my question while complaining about it. More space left for you to type about all the reasons you don't take a break from typing about yourself and read a Calculus 101 textbook instead.)
|
The first sentence is valid. The rest is you apparently going out of your way to be a dick.
Just chill. It's fine.
|
|
|
04-17-2017, 08:12 PM
|
#30
|
Banned
Join Date: Nov 2016
Posts: 416
|
Quote:
Originally Posted by SaulT
When you asked about reading intersample values, did I gesture vaguely towards researchgate and tell you "you're welcome"?
|
IIRC, you posted your code, and I appreciate the time and generosity you put into that, but I didn't read it and instead I hit Google and some textbooks, and now I'm doing big things between samples.
Quote:
Originally Posted by SaulT
Your response:
Quote:
Originally Posted by TryingToMakeMusic
If you see no use for it, why do you love it and want to use it? (Space left below for you to evade my question while complaining about it. More space left for you to type about all the reasons you don't take a break from typing about yourself and read a Calculus 101 textbook instead.)
|
The first sentence is valid. The rest is you apparently going out of your way to be a dick.
|
The part after the 1st sentence is me making a prediction, a prediction which turned out to be 100% correct; i.e., factual. Facts aren't dicks, facts are truth, and when you oppose facts, you oppose the truth.
|
|
|
04-17-2017, 08:18 PM
|
#31
|
Banned
Join Date: Nov 2016
Posts: 416
|
you guys could get a room if you don't like me participating, but I wanted to help the children who might happen on this thread in years to come, so I posted a link where to find good books, books with bibliographies and things that make it easier to learn things.
|
|
|
04-17-2017, 10:02 PM
|
#32
|
Human being with feelings
Join Date: Oct 2013
Location: Seattle, WA
Posts: 876
|
Quote:
IIRC, you posted your code, and I appreciate the time and generosity you put into that, but I didn't read it and instead I hit Google and some textbooks, and now I'm doing big things between samples.
|
It's good that you've been able to figure it out. Perhaps you will share the results of your work at some point.
I'd suggest that if you want to "help the children" you might want to consider a more substantive contribution than just linking to a textbook. Yes, textbook learning is important, but presenting that information also in a more casual "plain English" has its benefits as well.
You might even consider that how you present yourself will have an effect on whether people ("the children" even) accept your efforts in providing them with information.
|
|
|
04-17-2017, 10:29 PM
|
#33
|
Banned
Join Date: Nov 2016
Posts: 416
|
Quote:
Originally Posted by SaulT
I'd suggest that if you want to "help the children" you might want to consider a more substantive contribution than just linking to a textbook. Yes, textbook learning is important, but presenting that information also in a more casual "plain English" has its benefits as well.
|
You might want to consider linking to textbooks, since your "more substantive" code example wouldn't have taught me a 100th of the stuff I learned from textbooks.
Quote:
Originally Posted by SaulT
You might even consider that how you present yourself will have an effect on whether people ("the children" even) accept your efforts in providing them with information.
|
If the special Snowflakes loved me, I'd be doing something very wrong. The children I'm helping are children who want to make a good sound come out of their speakers, not the drama-children who just want to type about all the reasons holding them back from making a good sound come out of their speakers.
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -7. The time now is 04:25 AM.
|