←2007-02-18 2007-02-19 2007-02-20→ ↑2007 ↑all
00:00:05 <oerjan> C C# D D# E F F# G G# A B B# if that is right in English.
00:00:20 <oklopol> almost
00:00:37 <oerjan> Or do they use H for B# too?
00:00:41 <oklopol> C C# D D# E F F# G G# A A# B is english
00:00:44 <oklopol> no
00:00:48 <oklopol> oh
00:00:51 <oklopol> sorry :)
00:00:54 <oklopol> they do
00:00:58 <oklopol> too many standards
00:01:02 <oerjan> wait, I got that backwards
00:01:07 <oklopol> and all of them too crappy to use
00:01:18 <oerjan> better look it up
00:01:19 <SevenInchBread> wow... I didn't even realize there was another standard.
00:01:24 <oklopol> aah
00:01:27 <oklopol> Bb B
00:01:31 <oklopol> Bb is A#
00:01:39 <oerjan> right.
00:01:41 <oklopol> it was you who misguided me :P
00:01:47 <SevenInchBread> why don't we just use like... 12 letters?
00:01:59 <SevenInchBread> so we don't have to deal with those missing half-tones.
00:02:05 <oerjan> in Norwegian at least, for historical reasons Bb is B while B is H
00:02:05 <oklopol> because pythagoras was an idiot
00:02:09 <oklopol> or pascal
00:02:12 <oklopol> i can't remember :)
00:02:15 <oerjan> typographical reasons, in fact.
00:02:26 <oklopol> in finnish too
00:02:31 <oklopol> i don't know the reasons
00:02:35 <oklopol> please tell me
00:03:03 <oerjan> They were written as different font versions of B, and one of them resembled H...
00:03:18 <oerjan> so eventually turned into it.
00:03:20 <SevenInchBread> base 24 if we wanted to include some microtones..
00:03:37 <oklopol> you hear them?
00:04:00 <SevenInchBread> eh... there's a subtle difference.
00:04:04 <SevenInchBread> it's common in Indian music
00:04:09 <oklopol> i don't hear clearly other than 12, since i didn't hear them early enough
00:04:09 <oklopol> i know
00:04:29 <oklopol> note ear i one thing you only learn young (note ear?)
00:04:55 <oerjan> It's 7 because that is how many there are in a single scale
00:05:11 <oklopol> yeah, but it's a stupid system
00:06:49 <oklopol> i should make my music language... then i could start playing with automatic music generation
00:06:59 <oerjan> i mean, the scales are harmonic. it's only when you want to mix scales and use dissonances that you need more notes.
00:07:07 <oklopol> that's pretty no-man's-land
00:07:18 <SevenInchBread> yeah... Western music is based on harmony.
00:07:43 <oklopol> wouter's page has a nice article on that
00:07:45 <SevenInchBread> yeah... I had an idea for a rhythm-based language... that broke up a beats into infinitely-divisible sub beats...
00:07:48 <oklopol> i mean
00:07:51 <oklopol> the scales
00:08:04 <SevenInchBread> even on a finite tape of memory its theoretically infinite due to fractional divisions
00:08:19 <oklopol> but the whole scale thing is just a too-far-gone abstraction...
00:08:40 <oerjan> hm... brainfuck with an infinitely divisible tape might be something
00:09:05 <SevenInchBread> well..
00:09:27 <SevenInchBread> you could use the numbers to represent microtones.
00:09:37 <SevenInchBread> and have a finite limit to the tape.
00:10:02 <SevenInchBread> divisions just "expand" the tape... as things kind of break down
00:14:13 <oerjan> You mean http://wouter.fov120.com/rants/hertz_12notes.html ?
00:14:35 <oklopol> yeah
00:14:51 <oklopol> the only rational thing i've heard said about numbers
00:14:56 <oklopol> okay
00:14:59 <oklopol> not the only on
00:15:00 <oklopol> *on
00:15:03 <oklopol> *one
00:15:13 <oklopol> but most musicians have no idea... about anything
00:15:50 <oklopol> it's hard explaining why a riff is good if ppl can't understand it's mathematical idea
00:16:09 <oklopol> wouter of course talked about a different thing that riffs etc
00:16:18 <oklopol> but scales instead
00:16:34 <oklopol> though it's a lot similat
00:16:36 <oklopol> *r
00:19:28 <oklopol> well, of course what has a good idea always sounds good
00:22:37 <SevenInchBread> it's a fairly context sensitive means of expression...
00:23:02 <SevenInchBread> If we just used instruments capable of bending across any number of frequencies... you'd have the full range of options...
00:23:25 <SevenInchBread> sitars do something like this... you can tune them to some stalbe notes... while having quite a bit of leeway with bending the strings.
00:23:42 <oklopol> stalbe means?
00:24:23 <SevenInchBread> ...stable
00:24:45 <SevenInchBread> the frets serve as landmarks... but most of the tones are somewhere inbetween.
00:25:03 <SevenInchBread> can't do that with a piano... which always has an exact tone for an exact position.
00:25:21 <oklopol> you can do that with most instruments
00:25:24 <oklopol> but you never do
00:25:30 <oklopol> in western music
00:25:41 <SevenInchBread> yeah.
00:26:05 <SevenInchBread> For blues and jazz guitar... nothing quite sounds right if it's not somewhere near (or slightly off of) the penatonic scale.
00:26:40 <oklopol> in western music you always have more than one note playing at the same time, the division to twelwe maintains a nice set of harmonical chords
00:26:57 <SevenInchBread> styles, I guess... both genres center heavily on the penatonic.
00:27:41 <oklopol> well, subsetting the 12 notes can be done but it's merely a way of abstraction and only helpful for a composer
00:28:15 <SevenInchBread> that's true... istars are usually one note at a time, with the resonating strings usually doing octaves.
00:28:38 <oklopol> indeed, it gets too complicated otherwise
00:28:41 -!- wooby has quit.
00:28:41 <oklopol> for the ear
00:28:53 <oklopol> i've always liked dissonance though
00:28:54 <SevenInchBread> I was suggesting that the solution to the "perfect" musical system is that there isn't one... you just pick your frequencies for the song.
00:29:12 <oklopol> my piano teacher always yelled at me when i played tritonus all the time in my compositions
00:29:41 <SevenInchBread> hmm...
00:30:06 <SevenInchBread> it would be interesting to find some way to represent near-human-like performances via something like a programming language.
00:30:34 <oklopol> you mean like... make the computer sound like a human playing?
00:30:42 <SevenInchBread> like... you could create frequency abstractions... rhythm abstractions... melodic patterns (and a way to make slight changes to that pattern)...
00:30:51 <SevenInchBread> yeah.
00:31:16 <oklopol> dl quitar pro 5 and see how good the technology is today...
00:31:19 <SevenInchBread> very minute changes patterns.
00:31:37 <oklopol> everything is recorded from real instruments and it sounds terrible
00:31:40 <oklopol> (
00:31:54 <oklopol> (though prolly not the best possible program for it...)
00:31:55 * SevenInchBread is kind of fuzzy on how sound is encoded.
00:32:04 <oklopol> wav
00:32:12 <oklopol> uses 0...255 values
00:32:15 <oklopol> just raw in there
00:32:27 <oklopol> and there is this tiny thingie in the loudspeaker
00:32:38 <oklopol> that can be up (255) or down (0)
00:32:42 * oerjan only now went to the logs. Good grief how you have been talking!
00:32:45 <SevenInchBread> ah... so wav is like the bitmap of sound files. :)
00:33:00 <oklopol> and at certain intervals it takes the next number and moves the thingien in there in the right place
00:33:01 <oklopol> yes
00:33:05 <oklopol> exactly
00:33:31 <oklopol> mp3 uses something very mathematical and clever, but everything is always reduced to wav when playing
00:33:50 <oklopol> since the physical way to represent sound in a loudspeaker is done like that
00:34:02 <oklopol> with a moving thingie
00:34:04 <SevenInchBread> hmm... so if you could make abstractions of all the various musical patterns (rhythm, harmony, melody, timbre(?))
00:34:40 <oklopol> i don't care about sound that much, i'm more interested in melody
00:34:49 <oklopol> i mean, mathematically at least
00:35:01 <oklopol> but
00:35:11 <SevenInchBread> I want to create worthwhile music with nothing but a computer program... basically.
00:36:02 <oklopol> to make a square wave (the simplest wave) with note "a" you make the wave change the position 440 times in a second and put in a file 0 255 0 255 0 255...
00:36:03 <oklopol> sorry
00:36:06 <oklopol> 880 times a second
00:36:28 <oklopol> since 0 255 is one wave only
00:36:41 <oklopol> you get it?
00:36:49 <oklopol> usually it's 44000 b/s
00:36:53 <oklopol> *B
00:37:24 <oklopol> so you do 50 0's, then 50 255's, then 50 0's etc to make the "a" note
00:37:41 <SevenInchBread> but it wouldn't sound very good...
00:37:55 <oklopol> if you don't like square
00:38:19 <SevenInchBread> you would need very very very subtle changes in the frequency... to make it sounds good.
00:38:22 <oklopol> square is used in old games and a the base of a few soloish tunes of a synthesizer
00:38:29 <oklopol> *tunes -> sounds
00:38:43 <oklopol> and i like it, but
00:38:49 <oklopol> you can use a sine wave
00:38:55 <SevenInchBread> I'm looking for natural sounds. :)
00:38:59 <SevenInchBread> so yeah
00:39:01 <SevenInchBread> a sine wave
00:39:04 <oklopol> that is done - suprisingly - with a sin()
00:39:12 <SevenInchBread> or like... some sort of imaginary number oscillator thing?
00:39:20 <oklopol> sin(t*something)
00:39:21 <oklopol> yeah
00:39:43 <oklopol> t meaning we are playing the t:t'h time step of the note
00:39:52 <SevenInchBread> but even then... that's going to be a very very steady wave... hardly "the real deal".
00:40:02 <oklopol> natural sounds are done with addition of sine waves and random generation
00:40:10 <oklopol> and i don't care about it that much
00:40:16 <oklopol> so i can't tell you a lot about is
00:40:18 <oklopol> *it
00:40:22 <SevenInchBread> maybe some dynamical systems stuff?
00:40:28 <oklopol> ?
00:40:47 <SevenInchBread> chaos theoy, fractals, etc?
00:40:57 <oklopol> you can't make natural sounds since NO ONE has EVER been able to do them
00:41:00 <oklopol> period.
00:41:12 <SevenInchBread> ...then I'll make unnatural natural sounds.
00:41:16 <SevenInchBread> :)
00:41:18 <oklopol> you can record them and clone them as you wish
00:41:25 <oklopol> but it's the same as cloning humans
00:41:41 <oklopol> it works but how it really works is unknown
00:41:59 <SevenInchBread> heh... you'd basically need to simulate a recording... at which point you might as well just go record someone.
00:42:08 -!- sebbu has quit ("@+").
00:42:26 <SevenInchBread> simulate the release of air from vocal chords pressing against a microphone.. etc
00:42:28 <oklopol> you can make a continuation in python that returns values for the thingie (0-255) one step at the time
00:42:36 <oklopol> and use it to fill a wav file
00:42:38 <oklopol> and play it
00:42:40 <SevenInchBread> yeah yeah... I get how that would work.
00:42:57 <SevenInchBread> with some couroutinal crap you could send in some input for mild alterations based on surrounding stuff.
00:43:03 <oklopol> i did a random music generator once :P
00:43:11 <oklopol> it randomized the tone and the melody
00:43:11 <SevenInchBread> ....how'd that go?
00:43:25 <oklopol> i liked the melodies... no one else did
00:44:13 <oklopol> and i was like 14 then (okay.. you're that age now and better than me so fuck you but anyway) annnnnnnnnnnnnd i didn't understand the wave things
00:44:19 <oklopol> so i made it in a bad way
00:44:24 <SevenInchBread> It would be cool to apply some fractal-like mathematic stuff...
00:44:28 <SevenInchBread> that's vague but...
00:44:29 <SevenInchBread> yeah
00:44:44 <oklopol> i randomized a sequence for the thingie, not a mathematical formula for the sine waves
00:44:51 <oklopol> so it rarely randomised good tones
00:45:14 <SevenInchBread> ah
00:45:25 <SevenInchBread> you used a random sample of some typical tones?
00:45:32 <SevenInchBread> like... the notes?
00:45:43 <SevenInchBread> or was it just... totally random byte values?
00:46:12 <oerjan> yeah, oklopol is just really fond of white noise :)
00:46:15 <oklopol> i used [int(random.random()*256) for i in range(10000)] and then put those values in slower or faster according to the current pitch
00:46:53 <oklopol> oerjan i can send you some, it sounds terrible though, prolly, but i could create random tones and play them at varying pitches :)
00:47:06 <oklopol> so it has some coolness in it
00:47:18 <oklopol> but, i must confess, i like white noice
00:48:16 <oklopol> i have this experimental project called - who'd've thank it - brainfuck, i make white noiceish pieces using random generated tones and misuse of audacity
00:48:20 <oklopol> and i like it
00:48:24 <SevenInchBread> I don't know why it never occured to me that I could play around with sound using programs.
00:48:25 <oklopol> mmmmmmh it's nice
00:48:28 <SevenInchBread> being the huge music nut I am...
00:48:44 * SevenInchBread goes off to learn some basic stuff.
00:48:50 <oklopol> yeah, i love to find out i've actually done stuff in the past
00:49:11 <oklopol> with a bad memory like me you often get a feeling you've wasted 17 years and archieved nothing
00:49:16 <SevenInchBread> hmmm... maybe a BF-like language that does something with sine waves?
00:49:35 <oklopol> i've been designing brainsick
00:49:49 <oklopol> brAInSICk that is
00:50:00 <oklopol> *BrAinSICk
00:50:03 <oklopol> anyway
00:50:23 <oklopol> brainfuck with everything in it, music, 3d graphics, networking, gui, etc
00:50:27 <oklopol> but only brainfuck
00:51:23 <oklopol> eh
00:51:24 <oklopol> actualy
00:51:26 <oklopol> *ll
00:51:48 <oklopol> i once made a language for creating music... i don't think i ever finished it
00:53:02 <oklopol> i've always been a big fan of c++, but realized just now i could actually use inheritance with it too and avoid having to make manual memory handling to get different datatypes to work :)
00:53:13 <oklopol> just now == 4 months or smth
00:53:48 <oklopol> i've done a lot of interpreters, always used one data class with a void pointer and enum for type :D
00:53:55 <oklopol> very oo...
00:54:09 <oklopol> maybe i'll stop the monolog and go to sleep
00:54:13 <oklopol> ----------------------->
00:56:08 <SevenInchBread> ...I don't like C++
00:56:36 <SevenInchBread> hrm... I'm a bit rusty on my wave physics / mathematical represenatations of that.
00:57:11 <oklopol> hmm
00:57:22 <SevenInchBread> if you have two wave functions going over the same medium... they usually add together right?
00:57:36 <SevenInchBread> if the mediam is at 0
00:57:51 <oerjan> superposition, yes i think so
00:57:59 <SevenInchBread> yeah... that's right
00:58:02 <oklopol> yes
00:58:44 <SevenInchBread> of course.... there's more to it than that.
00:59:02 <oklopol> what?
00:59:14 <SevenInchBread> string instruments produce standing waves, harmonics, fundamental frequency, partial tones etc
00:59:30 <oklopol> hmm
00:59:38 <oklopol> standing waves are the same thing
00:59:53 <oklopol> because we only consider the wave, not how it begins
00:59:56 <oklopol> *is created
01:00:14 <oklopol> harmonics -> result of the addition
01:00:16 <SevenInchBread> ah yeah...
01:00:33 <oklopol> fundamental frequency
01:00:34 <oklopol> hmm
01:00:36 <SevenInchBread> the standing wave is the result of the original wave being plcuked and reflrected across the string.
01:00:41 <oklopol> i don't know what that is
01:00:42 <SevenInchBread> which results in... all of that occuring naturally.
01:00:59 <oklopol> yes, it results in a wave in air :)
01:01:28 <SevenInchBread> if you can simulated a string stretched across frets... and a point of pressure from a finger... then you can simply create all of that without knowing what it is exactly.
01:02:02 <oklopol> partial tones: actual_note sin(n) = sin(n) + 1/2*sin(n*2^(7/12)) + 1/4*sin(2n)
01:02:29 <SevenInchBread> ...I don't know Haskell..
01:02:45 <oklopol> partial tones mean for a wave with a certain pitch there are always weaker one with a pitch that is a certain factor of it
01:02:52 <oklopol> that wasn't haskell
01:02:55 <SevenInchBread> hmmm... oh that's neat... Haskell can define functions implicitly?
01:03:01 <oklopol> haskell couldn't understand that
01:03:12 <oklopol> but, yes
01:03:28 <oklopol> if i understand what you mean
01:04:05 <SevenInchBread> well see... I'm trying to get more than just the note here..
01:04:09 <oerjan> it's nearly correct Haskell, just change ^ to ** and add a missing * I think
01:04:22 <oklopol> yeah, prolly
01:04:29 <oklopol> but it's not what i meant :)
01:04:32 <oklopol> hmm
01:04:32 <SevenInchBread> you start off with a simple wave... from plucking... which oscilates and reflects over itself.
01:04:37 <oklopol> might be haskellish :P
01:04:39 <oklopol> indeed
01:05:02 <SevenInchBread> I want the sound of that initial startoff too... not just the result of it.
01:05:55 <oerjan> partial tones is essentially the result of Fourier transforming any period signal - it is pure mathematics.
01:06:02 <SevenInchBread> and a harmonic is caused by the vibrations of the string on the other side of your finger... which may or may not happen (and has a very likely chance of occuring on certain frets)
01:06:21 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
01:06:50 <oerjan> essentially any periodic signal is the sum of a series of sine-like waves with periods that are fractions of the big one.
01:07:23 -!- oklofok has joined.
01:08:40 <oklofok> did i miss a lot?
01:08:45 -!- oklofok has changed nick to oklopol.
01:08:56 <oerjan> you may have missed:
01:08:58 <oerjan> partial tones is essentially the result of Fourier transforming any period signal - it is pure mathematics.
01:09:01 <oerjan> essentially any periodic signal is the sum of a series of sine-like waves with periods that are fractions of the big one.
01:09:02 -!- crathman has joined.
01:09:08 <oklopol> yeah
01:09:16 <oklopol> that's what i was trying to say earlier
01:09:54 <oklopol> i just don't know fourier... except it's another trivial thing someone named after themselves because they were the first to publish the idea
01:10:06 <SevenInchBread> yes, unsurprisingly, the mathematics behind music is pure mathematics... however there's obviously something missing from a mathematical model.
01:10:18 <oklopol> there is a lot missing from it
01:10:37 <oklopol> there is no mathematics behind music yet, i mean no popular theories
01:10:41 -!- crathman has quit (Connection reset by peer).
01:10:44 <oklopol> i've not found at least
01:10:55 -!- crathman__ has joined.
01:10:57 -!- crathman__ has changed nick to crathman.
01:10:59 <oklopol> there is wave theory but that's trivial
01:11:35 <oklopol> anyways, functions can't represent waves that well
01:11:44 <oklopol> i have a brilliant idea for the music lang
01:11:53 <oklopol> but it's not in it's final form yet
01:12:02 <oklopol> and requires some learning
01:12:15 <oerjan> heh the earlier mention of list slicing syntax:
01:12:31 <oklopol> it's basically you can use a function as a list of all it's values... but a bit different
01:12:47 <SevenInchBread> I think you could use coroutines to effect the iteration of the wave function in subtle ways... based on certain conditions (i.e. previous notes).
01:12:52 <oerjan> You _could_ do map (list !!) [10..20] in Haskell, but it would be horribly inefficient.
01:12:54 <oklopol> makes certain things handy... i wish i had more time :\
01:13:14 <oklopol> SevenInchBread yeah, it's kinda like that
01:13:24 <oklopol> you do a continuation for the wave
01:13:29 <oklopol> then generalize it into a note
01:13:46 <oklopol> since these things are always used the same way i'll insert them into the language
01:14:12 <SevenInchBread> like for string instruments there's a natural descrease in amplitute... it starts off very sharp and then dies down in profressively more gradual steps.
01:14:26 <oklopol> if you know the language well, it's a perfect composition tool assuming i get the playing without wav files working
01:14:30 <SevenInchBread> so you feed values into the coroutine to create that change.
01:14:38 <oklopol> but you can also play with harmonics etc easily
01:14:46 <oklopol> yeah
01:14:59 <oklopol> that's basically what i'll insert into the language
01:15:14 <oklopol> you have maths for sine wave so that basically you only change the derivative
01:15:27 <oklopol> as if you were just calcing more values to a list
01:15:28 <oklopol> BUT
01:15:45 <oklopol> it's all calculated to a simple sine function that just changes over time
01:15:52 <oklopol> hmm
01:16:13 <oklopol> i don't know if that makes sence, i'm not good at explaining my thoughts
01:16:38 <SevenInchBread> heh... OO SHALL SAVE US
01:16:41 <SevenInchBread> MAKE WAVE OBJECTS
01:16:48 <SevenInchBread> AND ADD THEM TOGETHER WITH THE __ADD__ FUNCTION
01:17:05 <SevenInchBread> and to handle the addition we shall isntantiate WaveHandlerHandlers.
01:17:21 <SevenInchBread> to the WaveHandlerHandlerMetaclass as a metaclass
01:17:23 <oklopol> you know the bad thing is you have to understand math to make a wave gradually decrease in pinch
01:17:37 <SevenInchBread> sounds like a square root.
01:17:40 <oklopol> but with changing the derivative only it's a trivial mental task
01:18:04 <oklopol> SevenInchBread what does?
01:18:05 <SevenInchBread> a square root function thing over the amplitude.
01:18:09 <oklopol> eh
01:18:11 <oklopol> hmm
01:18:21 <oklopol> i'd need paper at this point...
01:18:24 <oklopol> anyway
01:18:39 <SevenInchBread> http://en.wikipedia.org/wiki/Image:Square_root.png
01:18:47 <oklopol> if the wave slows down at a certain rate, there are errors if you only change the pitch
01:19:02 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]").
01:19:13 <SevenInchBread> amplitude... not pitch.
01:19:29 <oklopol> amplitude is trivial
01:19:35 <oklopol> it needs no language support
01:20:02 <oklopol> that you can do with power or 1/x
01:20:26 <oklopol> changing pitch at a rapid rate on the other hand is complicated
01:20:33 <SevenInchBread> ....what are you talking about?
01:20:39 <SevenInchBread> I'm just talking about in general... making waves.
01:20:42 <oklopol> and i have _some_ methods of making it easy to do
01:21:06 <oklopol> i'm saying it is complex to make pitch change over time
01:21:15 <SevenInchBread> well... lets's figure out why the change in pitch occurs.
01:21:20 <oklopol> amplitude is of course not
01:21:51 <oklopol> ...because the programmer wants it to?
01:22:24 <SevenInchBread> I think you could use a combination of math and some randomality to make it sound more natural.
01:22:44 <oklopol> yes, randomality is another thing of complexity
01:22:53 <SevenInchBread> I mean... what occurs in the instrument to make rapid pitch changes... and how does it effect the wave if we were to slow it down.
01:23:03 <SevenInchBread> the best way is to simply look at some waves in action. :)
01:23:33 <oklopol> because not only separate values of the wave change randomly - that leads to white noise on the backround - you have to change the pitch and amplitude randomly
01:24:06 <oklopol> well, you can deduce the math for changing pitch on the fly
01:24:39 <oklopol> i've been designing this 2d-music generator where you make blocks more in patterns you specify
01:24:46 <SevenInchBread> og... duh.
01:24:52 <SevenInchBread> they're totally different waves.
01:25:07 <SevenInchBread> depending on the instrument... and how you transition between notes.
01:25:08 <oklopol> and little circles bounce around making waves that - when hit the ceiling - produce sound
01:25:16 <SevenInchBread> there's going to be some interplay of multiple pitches going on
01:25:28 <oklopol> yes, as oerjan said earlier
01:26:08 <oklopol> partial tones exactly
01:27:11 <oklopol> you mean when changing pitch?
01:27:24 <SevenInchBread> hmmm... I bet Erland would be good for this kind of job...
01:27:30 <SevenInchBread> ...Erlang
01:27:38 <oklopol> :P
01:27:48 <SevenInchBread> yeah... when changing pitch.
01:27:50 <SevenInchBread> like... notes
01:27:57 <oklopol> yeah, same thing
01:28:22 <SevenInchBread> OH.
01:28:24 <SevenInchBread> hmm...
01:28:41 <oklopol> except of course notes refer to an abstraction of pitch where the growth has been changed to fit the working of the human ear
01:28:45 -!- ShadowHntr has joined.
01:29:37 <SevenInchBread> the speed of change in a slurred note from one pitch to the next would be based on the physical distance between the two notes and when the next note needs to played.
01:30:03 <SevenInchBread> not always... but something close to that.
01:30:09 <oklopol> pitch n = 440 * (2^(n/12)), where n is the distance between "a" and the wanted note in half-steps
01:30:25 <oklopol> that's the difference
01:30:36 <SevenInchBread> assuming we're on guitar... the pitches would change in stair-case like manner...
01:30:50 <oklopol> yeah
01:30:51 <SevenInchBread> because of well... the frets.
01:31:28 <SevenInchBread> heh... and then there's the squeek. :)
01:31:35 <oklopol> hmm?
01:31:47 <SevenInchBread> guitar squeeks :)
01:32:02 <oklopol> aah
01:32:05 <oklopol> harmonics
01:32:15 <SevenInchBread> when you slide across the strings really fast.. it makes a shrill little screech.
01:32:17 <oklopol> confusing term
01:32:23 <oklopol> oh
01:32:30 <oklopol> that i'm not familiar with
01:32:33 <oklopol> ah
01:32:34 <oklopol> okay
01:32:37 <oklopol> now i see
01:32:47 <oklopol> that's not really a guitar thing... random noise
01:32:49 <SevenInchBread> It's just background noise.
01:33:03 <oklopol> you could implement smashing the quitar then as well :P
01:33:08 <oklopol> *into a wall
01:33:37 <SevenInchBread> the only way to produce natural-sounding music is to take into the account the dynamics between notes... and the transitions... rather than having a single value for each note.
01:33:45 <SevenInchBread> you could.
01:34:14 <SevenInchBread> and the clicking of the pick... a function of the picks density, the material used, the speed of the thrust, the thickness and the number of the strings.
01:34:14 <oklopol> yes
01:34:21 <SevenInchBread> ...
01:34:30 * SevenInchBread is obviously stumbling off into semi-sarcasm.
01:34:49 <oklopol> well, i don't care about real life
01:35:14 <oklopol> it does not have to sound like a guitar if you ask me
01:35:23 <oklopol> or natural
01:35:34 <oklopol> by the way... sleep ->
01:35:59 <oerjan> sweet dreams
01:36:06 <oklopol> sure! ->
01:36:07 <oklopol> ->
01:56:18 -!- ihope has joined.
02:18:51 <bsmntbombdood> crappy day
02:19:20 <ihope> Stop using the calendar as toilet paper.
02:19:22 <ihope> (...)
02:19:38 <oerjan> and stay away from fans.
02:19:42 <oerjan> just in case.
02:20:12 <ihope> Especially if you're in North Korea.
02:20:13 <bsmntbombdood> justin case is a loser
02:20:25 <ihope> Justin Case, eh?
02:22:39 <ihope> Anyway, about those ordinal numbers...
02:25:13 <bsmntbombdood> oh god
02:26:04 <ihope> :-P
02:26:24 <oerjan> yes?
02:26:48 <ihope> Well, grok them yet?
02:27:08 <bsmntbombdood> i don't know and i don't care right now
02:27:39 <oerjan> i already know enough
02:46:36 -!- oerjan has quit ("leaving").
03:09:50 -!- SevenInchBread has quit (Read error: 113 (No route to host)).
03:10:52 -!- ihope has quit (Read error: 54 (Connection reset by peer)).
03:42:38 -!- meatmanek has joined.
03:44:45 -!- oerjan has joined.
03:50:43 <bsmntbombdood> Y = SII(\f.\g.g ((f f) g)) right?
03:51:50 <oerjan> seems right
03:54:37 <oerjan> alternatively, \g.SII(\f.g (f f))
03:56:07 <bsmntbombdood> no
03:56:32 <oerjan> ?
03:58:12 <bsmntbombdood> oh
03:58:14 <bsmntbombdood> yeah
03:58:17 <bsmntbombdood> sorry
04:08:14 -!- ooooo has quit (Nick collision from services.).
04:15:02 <bsmntbombdood> !bf ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
04:15:05 <EgoBot> Hello World!
04:15:29 <oerjan> hey egobot, long time no see
05:01:26 -!- wooby has joined.
05:42:42 -!- oerjan has quit ("leaving").
05:51:59 -!- ShadowHntr has quit ("End of line.").
05:57:57 -!- Sgeo has quit (Remote closed the connection).
06:20:38 -!- Arrogant has joined.
06:22:33 -!- digital_me has quit (Read error: 110 (Connection timed out)).
06:25:35 -!- goban has quit ("Konversation terminated!").
06:29:15 -!- goban has joined.
06:44:19 -!- goban has quit ("Konversation terminated!").
06:48:24 -!- goban has joined.
06:51:05 -!- Arrogant has quit ("Leaving").
07:17:37 -!- goban has quit (Remote closed the connection).
07:18:04 -!- goban has joined.
07:50:13 -!- puzzlet has quit (Read error: 145 (Connection timed out)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:01:14 -!- GreaseMonkey has joined.
08:01:47 <GreaseMonkey> Uryyb rirelbar! V whfg znqr n EBG13 rapbqre/qrpbqre :Q
08:02:30 <GreaseMonkey> man ROT13 is fun once you have a decoder/encoder
08:03:03 <wooby> :Q is a funny emote
08:03:27 <wooby> person holding magnifying glass to mouth / person smoking
08:03:28 -!- puzzlet has joined.
08:03:28 <GreaseMonkey> so :D is a funny emote in ROT13?
08:04:07 <wooby> indeed
08:07:01 <GreaseMonkey> http://pastebin.ca/363217 <-- my encoder/decoder
08:07:41 <GreaseMonkey> Should we talk in ROT13 for now?
08:07:54 <GreaseMonkey> Fubhyq jr gnyx va EBG13 sbe abj?
08:09:26 <GreaseMonkey> yays
08:09:53 <GreaseMonkey> 29 lines of C code. converts fast apart from the console routines
08:11:07 <wooby> GreaseMonkey: nice
08:11:11 <wooby> i shall attempt a shorter one :)
08:11:16 <GreaseMonkey> oh, and btw, i managed to beat hackthissite.org's permanent programming challenge
08:11:49 <GreaseMonkey> excluding includes and blank lines, 25 lines of code.
08:12:01 <GreaseMonkey> sorry
08:12:04 <GreaseMonkey> 21 lines
08:12:10 <GreaseMonkey> there's those commented-out lines
08:12:27 <GreaseMonkey> which is Z<->A, Y<->B, X<->C, etc
08:12:53 <GreaseMonkey> sadly, the console routines suck :\
08:13:06 <wooby> indeed
08:14:34 <GreaseMonkey> the algorithm itself is quite good though.
08:15:36 <GreaseMonkey> my code for perm programming challenge 1 basically got a count of every instance of every letter in every word in the wordlist and the 10 strings, and compared them one-by-one
08:16:12 <GreaseMonkey> the code will expire in 20 secs
08:16:25 <GreaseMonkey> i stuck a 10 minute timer on pastebin.ca
08:21:16 <wooby> k
08:22:14 -!- nazgjunk has joined.
08:22:17 -!- nooga has joined.
08:22:23 <nooga> hi
08:22:45 <GreaseMonkey> Terrgvatf anmtwhax naq abbtn!!!
08:23:32 <nooga> Zmglvgs bvvamgrt ;p
08:23:35 <wooby> yby
08:26:10 <nooga> Smngro amnrr pu?
08:28:33 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
08:28:51 -!- puzzlet has joined.
08:48:49 <wooby> oh here we go
08:49:28 <wooby> http://pastebin.ca/363277
08:53:13 -!- GreaseMonkey has quit (Read error: 110 (Connection timed out)).
09:01:31 <wooby> an attempt without a lookup table
09:07:11 <nooga> simple rot13? ;p
09:07:50 <wooby> ;)
10:02:29 -!- UpTheDownstair has joined.
10:02:53 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)).
10:03:42 -!- UpTheDownstair has changed nick to nazgjunk.
10:08:21 <wooby> whoa
10:08:22 <wooby> main(a){while(a=~getchar())putchar(~a-1/(~(a|32)/13*2-11)*13);}
10:15:42 -!- nazgjunk has quit ("Bi-la Kaifa").
10:22:48 -!- voodooattack has joined.
11:12:48 -!- oklofok has joined.
11:23:31 -!- oklopol has quit (Read error: 110 (Connection timed out)).
12:02:35 -!- wooby has quit.
13:37:45 -!- Keymaker has joined.
13:40:28 <Keymaker> if anyone's interested (at some time someone here was, can't remember who), here's a solution to the prolan/m problem in IOI 1990, sum.prm :) i finally got around finishing it
13:40:30 <Keymaker> http://koti.mbnet.fi/yiap/programs/miscellaneous/SUM.PRM
13:41:23 <Keymaker> oh, run it in that javascript interpreter, the c interpreter has some weird bug in it
13:44:11 -!- Keymaker has left (?).
13:44:30 <oklofok> nooga, finally, i made the quicksort
13:44:48 <oklofok> and the other thing... don't remember
13:44:51 -!- oklofok has changed nick to oklopol.
13:50:09 -!- Keymaker has joined.
13:58:31 <Keymaker> i just noticed that the program also works with more than two numbers it was designed to work with (as the competition required it to sum only two numbers)! this is completely unintentional, yet of course a good thing. :) all my tests with more input numbers worked, but can't say everything works, as it wasn't designed so. however every two-number input should work
13:59:41 -!- anonfunc has joined.
14:00:04 <Keymaker> and yeah, the input is given like "43+51=?", as defined in that competition
14:00:22 -!- Keymaker has quit.
14:55:02 -!- nazgjunk has joined.
14:58:16 -!- anonfunc has quit.
14:58:53 -!- jix__ has joined.
15:35:33 -!- crathman has joined.
16:02:37 -!- helios24 has quit ("Leaving").
16:02:40 -!- helios24 has joined.
16:27:46 -!- UpTheDownstair has joined.
16:36:11 -!- UpTheDownstair has quit (Operation timed out).
16:40:05 -!- jix__ has changed nick to jix.
16:44:23 -!- nazgjunk has quit (Connection timed out).
16:55:22 -!- nazgjunk has joined.
17:00:32 -!- tgwizard has joined.
17:02:13 -!- goban has quit (Read error: 104 (Connection reset by peer)).
17:02:28 -!- goban has joined.
17:12:40 -!- goban has quit (Read error: 104 (Connection reset by peer)).
17:12:55 -!- goban has joined.
17:16:59 -!- goban has quit (Connection reset by peer).
17:17:14 -!- goban has joined.
17:20:27 -!- SevenInchBread has joined.
17:56:03 -!- FabioNET has joined.
17:58:45 -!- digital_me has joined.
18:02:56 -!- goban has quit (Connection timed out).
18:06:01 -!- goban has joined.
18:07:57 * SimonRC has been working hard
18:23:07 -!- Sgeo has joined.
18:27:51 -!- calamari has joined.
18:45:05 -!- ShadowHntr has joined.
18:45:21 -!- sebbu has joined.
18:49:21 -!- sebbu2 has joined.
19:00:47 -!- sebbu has quit (Read error: 104 (Connection reset by peer)).
19:05:38 -!- _FabioNET_ has joined.
19:06:05 -!- _FabioNET_ has quit (Read error: 104 (Connection reset by peer)).
19:09:41 -!- FabioNET has quit (Read error: 110 (Connection timed out)).
19:18:25 -!- FabioNET has joined.
19:22:33 -!- helios_ has joined.
19:22:34 -!- helios24 has quit (Read error: 54 (Connection reset by peer)).
19:28:42 -!- helios_ has changed nick to helios.
19:28:51 -!- helios has changed nick to helios24.
19:29:16 * SevenInchBread is making a do-hickey for obfuscating Python.
19:35:46 -!- FabioNET has quit (Remote closed the connection).
19:57:54 <bsmntbombdood> bargle
19:59:26 -!- tgwizard has quit (Read error: 110 (Connection timed out)).
20:07:58 -!- calamari has quit ("Leaving").
20:11:37 -!- UpTheDownstair has joined.
20:11:41 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)).
20:20:15 -!- FabioNET has joined.
20:34:46 -!- helios24 has quit ("Leaving").
20:54:49 <voodooattack> hahaha http://fukung.net/v/720/school.gif
21:07:43 <SevenInchBread> hahahaha
21:07:53 <SevenInchBread> that's pretty funny.
21:08:35 -!- kxspxr has joined.
21:12:42 <SevenInchBread> pfft... if he weren't writing it in C he would have saved some time. :P
21:12:52 <SevenInchBread> with its... almost-low-levelness
21:22:19 -!- UpTheDownstair has changed nick to nazgjunk.
21:23:28 <bsmntbombdood> for i in range(500): print "I will not throw paper airplanes in class"
21:24:28 <bsmntbombdood> one line bitches
21:24:42 <voodooattack> hehe
21:25:02 <voodooattack> for i as integer = 0 to 500:print "I will not throw paper airplanes in class":next
21:25:09 <voodooattack> ^^ FreeBASIC :p
21:25:13 <bsmntbombdood> lame
21:25:27 <voodooattack> no xD
21:26:01 <voodooattack> more like.. sophisticated and elegant :p
21:26:25 <SevenInchBread> print "I will not throw paper airplanes in class" * 500
21:26:29 <SevenInchBread> print "I will not throw paper airplanes in class\n" * 500
21:26:45 <bsmntbombdood> clevar
21:27:27 <SevenInchBread> hurray for string multiplication and its aid to spammers worldwide.
21:27:45 <bsmntbombdood> ~exec sys.stdout("I will not throw paper airplanes in class\n" * 3)
21:27:47 <bsmnt_bot> I will not throw paper airplanes in class
21:27:47 <bsmnt_bot> I will not throw paper airplanes in class
21:27:47 <bsmnt_bot> I will not throw paper airplanes in class
21:28:08 <bsmntbombdood> ~ps
21:28:08 <bsmnt_bot> None
21:28:40 <bsmntbombdood> what is the bot that logs this channel?
21:29:03 <voodooattack> do:var i=0:print "I will not throw paper airplanes in class":i+=1:loop while i<500
21:29:30 <SevenInchBread> ~exec print self
21:29:40 <SevenInchBread> ~exec sys.stdout(self+"\n")
21:29:40 <voodooattack> self
21:29:41 <bsmntbombdood> print doesn't work
21:29:55 <bsmntbombdood> and join #bsmnt_bot_errors
21:29:56 <SevenInchBread> ~exec sys.stdout.write(self+"\n")
21:30:12 <bsmntbombdood> ~exec sys.stdout(self)
21:30:13 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c3206c>
21:30:25 <SevenInchBread> oh... duh. :OP
21:30:53 <voodooattack> lol
21:30:57 <bsmntbombdood> ~exec sys.stdout(dir(self))
21:30:57 <bsmnt_bot> ['COMMAND_CHAR', 'THREADING', '__doc__', '__init__', '__module__', 'chan', 'commands_running', 'commands_running_lock', 'connect', 'connected', 'disconnect', 'do_callbacks', 'do_ctcp', 'do_exec', 'do_kill', 'do_ps', 'do_quit', 'do_raw', 'errorchan', 'exec_execer', 'get_message', 'host', 'ident', 'ihope', 'listen', 'load_callbacks', 'message_re', 'nick', 'owner', 'pong', 'p
21:30:58 <bsmnt_bot> ort', 'print_callbacks', 'raw', 'raw_regex_queue', 'readbuffer', 'realname', 'register_raw', 'save_callbacks', 'socket', 'sockfile', 'verbose']
21:31:12 <bsmntbombdood> ~exec self.print_callbacks()
21:31:23 <bsmntbombdood> ooh idea
21:33:00 <bsmntbombdood> ~quit
21:33:01 -!- bsmnt_bot has quit.
21:33:05 -!- bsmnt_bot has joined.
21:33:11 <bsmntbombdood> ~exec self.print_callbacks(sys.stdout)
21:33:12 <bsmnt_bot> [('^PING (.*)$', 'pong'),
21:33:13 <bsmnt_bot> ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~quit ?(.*)', 'do_quit'),
21:33:13 <bsmnt_bot> ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~raw (.*)', 'do_raw'),
21:33:13 <bsmnt_bot> ('^\\S+ PRIVMSG \\S+ :~ctcp (\\S+) (.+)', 'do_ctcp'),
21:33:14 <bsmnt_bot> ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG (\\S*) :~pexec (.*)', 'do_exec'),
21:33:15 <bsmnt_bot> ('\\S+ PRIVMSG (#esoteric|#baadf00d|#bsmnt_bot_errors) :~exec (.*)',
21:33:16 <bsmnt_bot> 'do_exec'),
21:33:17 <bsmnt_bot> ('\\S+ PRIVMSG \\S+ :~ps', 'do_ps'),
21:33:19 <bsmnt_bot> ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~kill (.*)', 'do_kill'),
21:33:21 <bsmnt_bot> ('^ERROR :Closing Link:.*', '<lambda>')]
21:33:25 <bsmntbombdood> perfec
21:33:27 <bsmntbombdood> t
21:33:49 <bsmntbombdood> ~exec self.print_callbacks(sys.stderr)
21:38:24 <SevenInchBread> ~exec shouldA = lambda char: char in __import__("string").letters; trans = {"?":"!?!?", "!":"!!!",".":"!"}; Achar = lambda char: trans.get(char, (char,"A")[shouldA(char)]); self.AAAAAAAAA = lambda stuff: "".join(map(Achar, stuff)) + "!"
21:38:25 -!- goban has quit (Remote closed the connection).
21:38:34 -!- goban has joined.
21:39:21 <SevenInchBread> ~exec sys.stdout.write(self.AAAAAAAA("bsmnt is a terrible bucket cleaner!?"))
21:39:39 <SevenInchBread> ~exec sys.stdout.write(self.AAAAAAAAA("bsmnt is a terrible bucket cleaner!?"))
21:40:27 <SevenInchBread> bsmntboobdood, your hackish thread thing doesn't update the global scope.
21:40:40 <bsmntbombdood> nope
21:40:52 <SevenInchBread> or... for that matter... it's making closures mess up.
21:40:52 <bsmntbombdood> that's intentional
21:41:10 <bsmntbombdood> it doesn't have to do with the threads though
21:42:12 <SevenInchBread> ~exec self.shouldA = lambda char: char in __import__("string").letters; self.trans = {"?":"!?!?", "!":"!!!",".":"!"}; self.Achar = lambda char: self.trans.get(char, (char,"A")[self.shouldA(char)]); self.AAAAAAAAA = lambda stuff: "".join(map(self.Achar, stuff)) + "!"
21:42:15 <SevenInchBread> ~exec sys.stdout.write(self.AAAAAAAAA("bsmnt is a terrible bucket cleaner!?"))
21:42:52 <SevenInchBread> ~exec self.shouldA = lambda self,char: char in __import__("string").letters; self.trans = {"?":"!?!?", "!":"!!!",".":"!"}; self.Achar = lambda self,char: self.trans.get(char, (char,"A")[self.shouldA(char)]); self.AAAAAAAAA = lambda self,stuff: "".join(map(self.Achar, stuff)) + "!"
21:42:54 <SevenInchBread> ~exec sys.stdout.write(self.AAAAAAAAA("bsmnt is a terrible bucket cleaner!?"))
21:44:05 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:47:34 <bsmntbombdood> ~exec for i in xrange(100): self.raw("PRIVMSG #bsmnt_bot_errors :%s" % i); time.sleep(1)
21:47:34 -!- goban has quit (Operation timed out).
21:47:37 -!- goban has joined.
21:48:42 <bsmntbombdood> ~ps
21:49:07 -!- bsmnt_bot has quit (Excess Flood).
21:49:10 -!- bsmnt_bot has joined.
21:53:41 <bsmntbombdood> ~exec self.foo = ""
21:54:10 <bsmntbombdood> ~exec for i in range(100): self.foo += "%s\n" % i
21:54:23 <bsmntbombdood> ~exec sys.stdout(len(foo))
21:54:30 <bsmntbombdood> ~exec sys.stdout(len(self.foo))
21:54:31 <bsmnt_bot> 290
21:54:39 <bsmntbombdood> ~exec sys.stderr(self.foo)
21:55:27 <bsmntbombdood> ~exec for i in range(10999): self.raw("PDASD")
21:55:28 -!- bsmnt_bot has quit (Excess Flood).
21:55:30 -!- bsmnt_bot has joined.
21:56:35 <bsmntbombdood> i'm bored
22:04:12 -!- calamari has joined.
22:06:03 -!- voodooattack has quit.
22:24:49 -!- goban has quit (Read error: 60 (Operation timed out)).
22:28:33 -!- goban has joined.
22:29:08 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)).
22:43:24 -!- goban has quit (Operation timed out).
22:43:34 -!- goban has joined.
23:02:13 -!- calamari has quit ("Leaving").
23:04:30 -!- FabioNET has quit (Client Quit).
23:08:16 -!- UpTheDownstair has joined.
23:08:28 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
23:10:17 -!- UpTheDownstair has changed nick to nazgjunk.
23:37:31 -!- crathman has quit (Read error: 113 (No route to host)).
23:37:34 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
23:41:10 <GregorR> Y'know what would be awesome?
23:41:13 <GregorR> A pneumatic computer.
23:42:27 <lament> make one!
23:42:54 <GregorR> Pneumatic AND/OR gates are possible, right?
23:43:21 <lament> i don't see why not.
23:43:35 <bsmntbombdood> one great computer
←2007-02-18 2007-02-19 2007-02-20→ ↑2007 ↑all