From: Lie Ryan on
On 01/15/10 05:42, Alf P. Steinbach wrote:
> I'm beginning to believe that you maybe didn't grok that simple procedure.
>
> It's very very very trivial, so maybe you were looking for something
> more intricate -- they used to say, in the old days, "hold on, this
> proof goes by so fast you may not notice it!"

Since you said it's trivial, then...

>> Nothing about you there. Just the information you are promoting. I don't
>> normally deal in innuendo and personal attacks. Though I do occasionally
>> get irritated by what I perceive to be hogwash. People who know me will
>> tell you, if I am wrong I will happily admit it.
>
> There's a difference between an algorithm that you can implement, and
> hogwash.

please prove your claim by writing that algorithm in code and post it in
this list. The program must accept a .wav file (or sound format of your
choice) and process it according to your algorithm and the output
another .wav file (or sound format of your choice) that sounds roughly
similar to the input file.

PS: I have near-zero experience with sound processing
PPS: I will be equally delighted seeing either Steve admitting his wrong
or you admit your hogwash
PPPS: An alternative way to convince us is to provide a paper/article
that describes this algorithm.
PPPPS: Though I will be quite sad if you choose to reject the challenge
From: Alf P. Steinbach on
* Lie Ryan:
> On 01/15/10 05:42, Alf P. Steinbach wrote:
>> I'm beginning to believe that you maybe didn't grok that simple procedure.
>>
>> It's very very very trivial, so maybe you were looking for something
>> more intricate -- they used to say, in the old days, "hold on, this
>> proof goes by so fast you may not notice it!"
>
> Since you said it's trivial, then...

You can't get it more trivial.


>>> Nothing about you there. Just the information you are promoting. I don't
>>> normally deal in innuendo and personal attacks. Though I do occasionally
>>> get irritated by what I perceive to be hogwash. People who know me will
>>> tell you, if I am wrong I will happily admit it.
>> There's a difference between an algorithm that you can implement, and
>> hogwash.
>
> please prove your claim by writing that algorithm in code and post it in
> this list. The program must accept a .wav file (or sound format of your
> choice) and process it according to your algorithm and the output
> another .wav file (or sound format of your choice) that sounds roughly
> similar to the input file.

First, the (very very trivial) algorithm I posted does *not* do that: by itself
it represents a sine wave, not an arbitrary wave form.

And second I'm not about to write Fourier transform code to satisfy someone who
refuses to do a milligram of thinking.

The Fourier part stuff needed to do what you're requesting is non-trivial, or at
least it's some work to write the code.


> PS: I have near-zero experience with sound processing
> PPS: I will be equally delighted seeing either Steve admitting his wrong
> or you admit your hogwash
> PPPS: An alternative way to convince us is to provide a paper/article
> that describes this algorithm.
> PPPPS: Though I will be quite sad if you choose to reject the challenge

I don't believe any of what you write here.



Cheers & hth.,

- Alf
From: Alf P. Steinbach on
* Lie Ryan:
> On 01/15/10 05:42, Alf P. Steinbach wrote:
>> I'm beginning to believe that you maybe didn't grok that simple procedure.
>>
>> It's very very very trivial, so maybe you were looking for something
>> more intricate -- they used to say, in the old days, "hold on, this
>> proof goes by so fast you may not notice it!"
>
> Since you said it's trivial, then...
>
>>> Nothing about you there. Just the information you are promoting. I don't
>>> normally deal in innuendo and personal attacks. Though I do occasionally
>>> get irritated by what I perceive to be hogwash. People who know me will
>>> tell you, if I am wrong I will happily admit it.
>> There's a difference between an algorithm that you can implement, and
>> hogwash.
>
> please prove your claim by writing that algorithm in code and post it in
> this list. The program must accept a .wav file (or sound format of your
> choice) and process it according to your algorithm and the output
> another .wav file (or sound format of your choice) that sounds roughly
> similar to the input file.

In addition to my earlier reply (that the presented algorithm itself doesn't
generate arbitrary wave forms but only sines, i.e. that you're totally off the
mark),

your request is meaningless in another way, namely:

the algorithm does synthesis, which is easy (like computer speech), while you're
asking for analysis (like computer speech recognition), which is hard.

But maybe you're simply not able to understand the algorithm, trivial as it is.

So, a Python implementation (note, this program takes some time to run!):


<code filename="sinewave_from_squares.py">
# Generating a sine wave as a sum of square waves of various amplitudes & phases.
import simple_sound


# Step 1 "Divide a full cycle of the sine wave into n intervals."
n = 100


# Step 2 -- Just an explanation of the rest


# Step 3 "In the first half of the cycle, for each bar create that bar as
# a square wave of frequency f, amplitude half the bar's height, and phase
# starting at the bar's left, plus same square wave with negative sign
# (inverted amplitude) and phase starting at the bar's right."

square_waves = []
for i in range( n//2 ):
middle_of_interval = (i + 0.5)/n
amp = simple_sound.sample_sine( 1, middle_of_interval ) / 2
def first_square_wave( t, i = i, amp = amp ):
phase = i/n
return amp*simple_sound.sample_square( 1, t - phase )
def second_square_wave( t, i = i, amp = amp ):
phase = (i + 1)/n
return -amp*simple_sound.sample_square( 1, t - phase )
square_waves.append( first_square_wave )
square_waves.append( second_square_wave )


# Step 4 "Sum all the square waves from step 3."

def sample_squares( f, t ):
samples = []
o_time = f*t
for func in square_waves:
sq_sample = func( o_time )
samples.append( sq_sample )
return sum( samples )


# Finally, generate this is in a [.aiff] file so as to possibly satisfy Lie Rian:
if True:
f = 440
sample_rate = 44100
total_time = 2
n_samples = sample_rate*total_time

writer = simple_sound.Writer( "sinewave.aiff" )
for i in range( n_samples ):
t = 1*i/sample_rate
sample = sample_squares( f, t )
writer.write( sample )
writer.close()
</code>


Cheers & hth.,

- Alf
From: Steve Holden on
Alf P. Steinbach wrote:
> * Lie Ryan:
>> On 01/15/10 05:42, Alf P. Steinbach wrote:
>>> I'm beginning to believe that you maybe didn't grok that simple
>>> procedure.
>>>
>>> It's very very very trivial, so maybe you were looking for something
>>> more intricate -- they used to say, in the old days, "hold on, this
>>> proof goes by so fast you may not notice it!"
>>
>> Since you said it's trivial, then...
>
> You can't get it more trivial.
>
>
>>>> Nothing about you there. Just the information you are promoting. I
>>>> don't
>>>> normally deal in innuendo and personal attacks. Though I do
>>>> occasionally
>>>> get irritated by what I perceive to be hogwash. People who know me will
>>>> tell you, if I am wrong I will happily admit it.
>>> There's a difference between an algorithm that you can implement, and
>>> hogwash.
>>
>> please prove your claim by writing that algorithm in code and post it in
>> this list. The program must accept a .wav file (or sound format of your
>> choice) and process it according to your algorithm and the output
>> another .wav file (or sound format of your choice) that sounds roughly
>> similar to the input file.
>
> First, the (very very trivial) algorithm I posted does *not* do that: by
> itself it represents a sine wave, not an arbitrary wave form.
>
> And second I'm not about to write Fourier transform code to satisfy
> someone who refuses to do a milligram of thinking.
>
> The Fourier part stuff needed to do what you're requesting is
> non-trivial, or at least it's some work to write the code.
>
>
>> PS: I have near-zero experience with sound processing
>> PPS: I will be equally delighted seeing either Steve admitting his wrong
>> or you admit your hogwash
>> PPPS: An alternative way to convince us is to provide a paper/article
>> that describes this algorithm.
>> PPPPS: Though I will be quite sad if you choose to reject the challenge
>
> I don't believe any of what you write here.
>
Well, it seems quite reasonable to me, but then I'm not the one being
challenged to write a trivial algorithm.

I will, however, observe that your definition of a square wave is what I
would have to call a "'square' wave" (and would prefer to call a "pulse
train"), as I envisage a square wave as a waveform having a 50% duty
cycle, as in

___ ___
| | | |
| | | |
| | | |
+---+---+---+---+ and so on ad infinitum, (though I might allow you
| | | | to adjust the position
| | | | of y=0 if you want)
|___| |___|

as opposed to your

_
| |
| |
______| |______ ______
| |
| |
|_|

So I can see how we might be at cross purposes. I could cite authorities
for differentiating between a square wave and a symmetric pulse train,
but will content myself with observing only that my impression is the
common definition of an ideal square wave (one with a zero transition
time) admits of only two instantaneous values, eschewing the zero you
use. If that is the case, we could perhaps agree that we differ merely
on terminology.

Or, best of all, you could show me how to synthesize any waveform by
adding square waves with a 50% duty cycle. Then I *will* be impressed.

not-wriggling-real-ly y'rs - steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
PyCon is coming! Atlanta, Feb 2010 http://us.pycon.org/
Holden Web LLC http://www.holdenweb.com/
UPCOMING EVENTS: http://holdenweb.eventbrite.com/

From: Alf P. Steinbach on
* Steve Holden:
> Alf P. Steinbach wrote:
>> * Lie Ryan:
>>> On 01/15/10 05:42, Alf P. Steinbach wrote:
>>>> I'm beginning to believe that you maybe didn't grok that simple
>>>> procedure.
>>>>
>>>> It's very very very trivial, so maybe you were looking for something
>>>> more intricate -- they used to say, in the old days, "hold on, this
>>>> proof goes by so fast you may not notice it!"
>>> Since you said it's trivial, then...
>> You can't get it more trivial.
>>
>>
>>>>> Nothing about you there. Just the information you are promoting. I
>>>>> don't
>>>>> normally deal in innuendo and personal attacks. Though I do
>>>>> occasionally
>>>>> get irritated by what I perceive to be hogwash. People who know me will
>>>>> tell you, if I am wrong I will happily admit it.
>>>> There's a difference between an algorithm that you can implement, and
>>>> hogwash.
>>> please prove your claim by writing that algorithm in code and post it in
>>> this list. The program must accept a .wav file (or sound format of your
>>> choice) and process it according to your algorithm and the output
>>> another .wav file (or sound format of your choice) that sounds roughly
>>> similar to the input file.
>> First, the (very very trivial) algorithm I posted does *not* do that: by
>> itself it represents a sine wave, not an arbitrary wave form.
>>
>> And second I'm not about to write Fourier transform code to satisfy
>> someone who refuses to do a milligram of thinking.
>>
>> The Fourier part stuff needed to do what you're requesting is
>> non-trivial, or at least it's some work to write the code.
>>
>>
>>> PS: I have near-zero experience with sound processing
>>> PPS: I will be equally delighted seeing either Steve admitting his wrong
>>> or you admit your hogwash
>>> PPPS: An alternative way to convince us is to provide a paper/article
>>> that describes this algorithm.
>>> PPPPS: Though I will be quite sad if you choose to reject the challenge
>> I don't believe any of what you write here.
>>
> Well, it seems quite reasonable to me, but then I'm not the one being
> challenged to write a trivial algorithm.

You're again into innuendo, misleading statements and so forth. Lie Ryan's
challenge is nothing but trivial, because it's about implementing very much more
than the algorithm. I did implement the algorithm for him, in Python, and posted
that in this thread.


> I will, however, observe that your definition of a square wave is what I
> would have to call a "'square' wave" (and would prefer to call a "pulse
> train"), as I envisage a square wave as a waveform having a 50% duty
> cycle, as in
>
> ___ ___
> | | | |
> | | | |
> | | | |
> +---+---+---+---+ and so on ad infinitum, (though I might allow you
> | | | | to adjust the position
> | | | | of y=0 if you want)
> |___| |___|
>
> as opposed to your
>
> _
> | |
> | |
> ______| |______ ______
> | |
> | |
> |_|
>

Try to read again, a sufficient number of times, how to generate the latter by
summing *two instances of the former*.

I'm sorry to say this but I find it hard to explain things simple enough for
you, because at the level of 2+2 any explanation is far more complex than the
concept itself.

That is, of course, a challenge to me! :-)

So, thanks for challenging my pedagogical abilities.

I know they're not as good as they should be, and need some exercise!


> So I can see how we might be at cross purposes. I could cite authorities
> for differentiating between a square wave and a symmetric pulse train,
> but will content myself with observing only that my impression is the
> common definition of an ideal square wave (one with a zero transition
> time) admits of only two instantaneous values, eschewing the zero you
> use. If that is the case, we could perhaps agree that we differ merely
> on terminology.

No, we don't differ on terminology: we seem to differ in that one of us has
severe difficulties understanding the very simplest things, such as what graph
one gets by summing two squares waves of same frequency but out of phase.

The one of us who has trouble understanding that is also apparently too lazy to
try out the earlier advice given him of graphing this on a piece of paper, and
instead prefers to spout innuendu, personal attacks and misleading statements.

That's a real challenge to the other person.


> Or, best of all, you could show me how to synthesize any waveform by
> adding square waves with a 50% duty cycle. Then I *will* be impressed.

You would, yes?

Perhaps you'd also admit to being wrong, and retract your innuoendo etc.?

Well, just epress the waveform as a sum of sine waves (Fourier transform);
synthesize each sine wave by a set of 50% duty cycle square waves (I've earlier
posted Python code for that in this thread); add all the square waves. The hard
part of this is implementing the Fourier transform, I leave that to you. ;-)


Cheers & htfh.,

- Alf
First  |  Prev  |  Next  |  Last
Pages: 1 2 3 4 5 6 7 8
Prev: dict's as dict's key.
Next: enhancing 'list'