00:00:26 -!- Sgeo has joined.
00:01:54 <oklopol> nah... it would convert everything and you need just some
00:02:02 <oklopol> i don't know if that's why though :)=
00:02:27 <RodgerTheGreat> plus, a \ in the "source" has to be escaped as \\, I think
00:02:28 <oerjan> it would loop. You can _never_ have the result contained in the source, even after unescaping
00:05:04 <oklopol> won't help... i'd need an interpreter...
00:05:08 <oerjan> secondly, you cannot essentially have any source be a single character.
00:05:21 <oerjan> the interpreter is on the wiki page
00:05:41 <oklopol> i should do some dl'ing then
00:05:53 <oerjan> i just considered adding a debugging option
00:05:59 <oklopol> i'd have to do that anyway :P
00:06:09 -!- jix has quit (Read error: 110 (Connection timed out)).
00:17:47 <SevenInchBread> /sufficiently nonsential enough for much mass production/\/ (but mother(\/\\/pancreas polly\\/\\\/\\/\/ //pancreas polly/\/sufficiently nonsential enough for much mass production\/\
00:18:29 <SevenInchBread> I have no clue what that will turn out as... but it seems like a step in the right direction... despite being utterly mind bending.
00:19:49 <SevenInchBread> ...attempting to interpret myself just leaves me going in circles.... but I'm hoping it's asynchronous circles. :)
00:21:57 <oklopol> you loos snefmmp right away there
00:22:49 <oklopol> sufficiently nonsential enough for much mass production
00:22:58 <oerjan> ok the implementation now prints the program at each step if you give it the -d option.
00:23:39 <SevenInchBread> well.... that was indended to be an "inbetween" encoding... I was hoping it would turn out as (mother being the equivalent of /
00:24:16 <oklopol> i don't know what that means
00:24:32 <oklopol> there is no use in an inbetween encoding
00:24:48 <SevenInchBread> basically I'm thinking you need a replacement that replaces something with a replacement followed by /
00:26:44 <oerjan> in order to be able to recreate an inbetween coding you need something like storing it somewhere as two separate subpieces
00:32:45 <oerjan> hm, this debugging was hard to separate from the output. Adding some brackets.
00:37:43 <oerjan> i am sure that trusty old Mfit and Shanty will be happy to use different characters for / and \ :)
00:39:05 <SevenInchBread> that's essentially what we need.... multiple interpreters.
00:39:39 <oerjan> btw someone asked whether the names Mfit and Shanty mean anything?
00:46:24 <oerjan> shanty isn't a nonsense word.
00:48:19 <oerjan> there are several things called Mfit apparently.
00:59:00 <oklopol> i don't think i'm capable of making anything with ///, it took me 15 minutes to figure out how to make a quine in python :D
00:59:55 -!- tgwizard has quit (Remote closed the connection).
01:12:46 <oerjan> a kitschy plastic cup with inscription?
01:14:45 <oklopol> well, i didn't remember you can do ';', neither that you can do "%s"
01:16:03 <oerjan> there is no actual %s format in that code
01:16:33 <oklopol> print(lambda a:a+chr(34)+a+chr(34)+chr(41))("print(lambda a:a+chr(34)+a+chr(34)+chr(41))(")
01:16:58 <oklopol> that is not the original though, took me < 2 min this time
01:17:20 <oklopol> so i can make it in 20 sec
01:18:05 <oklopol> hehe wrote an interpreter for slashes... and python jammed, it's gone :D
01:18:31 <bsmntbombdood> how does python crashing make you lose your source?
01:18:40 <oklopol> why do they make all interpreters such that infinite loops kill them?
01:18:54 <oklopol> because i don't save it anywhere
01:19:45 <oklopol> i think i just installed it though
01:20:33 <RodgerTheGreat> this is a triumph of speech recognition: http://www.youtube.com/watch?v=KyLqUf4cdwc&mode=related&search=
01:21:00 <RodgerTheGreat> and this is why speech recognition is a really flawed idea for coding
01:21:33 <bsmntbombdood> It would be terrible to code with speech recognition
01:21:48 <SevenInchBread> I'm writting up the info for my collaboration thing....
01:21:53 <oerjan> it might work with some languages, maybe forth, which has few delimiters
01:22:40 <SevenInchBread> basically you just need to submit an interpreter in any language... the main process will feed the tokens one by one to the interpreters...
01:22:40 <RodgerTheGreat> Perl is pretty much the worst language he could be using here in terms of character use
01:23:24 <SevenInchBread> the only problem is that.... I don't have languages like C easily accessible on my computer (I still haven't figured out how to properly run C in Windows)
01:23:49 <oklopol> i didn't know speech recognition is that good yet
01:25:11 -!- graue has quit ("Leaving").
01:26:04 <oklopol> he just doesn't know how to use it
01:26:33 <oklopol> if 'press capital I' means 'I', i think it's pretty obvious 'capital I' does not work
01:26:57 -!- GreaseMonkey has joined.
01:28:23 <oklopol> i'd prefer it to understand certain syllables as 0,1,2,3...E,F and do the rest myself
01:29:33 <oklopol> i've never seen anything like that :|
01:32:53 <RodgerTheGreat> OSX has pretty nifty recognition, but it isn't designed to control the whole interface
01:33:11 <RodgerTheGreat> I wouldn't be surprised if 10.5 has better integration
01:33:47 <oklopol> http://www.youtube.com/watch?v=S9T3RXFDtfo&NR
01:37:20 <bsmntbombdood> how long does it take to say "go to active window", compared to M-k k?
01:37:51 <oklopol> why do you have to day "go to active window"?
01:38:00 <oklopol> why can't you say "em kay kay"
01:39:10 <oklopol> well, i talk faster than type
01:39:22 <bsmntbombdood> I've heard of speech recognition software causing speech problems
01:40:00 <oklopol> well, i don't see why you'd want to use english
01:40:38 <oklopol> you could easily make it recognize certaing murmurs
01:40:54 <oklopol> a phone did that 5 years ago i recall
01:41:35 <oklopol> of course, coding would be idiotic if you have hand to do it with
01:42:01 <oklopol> but i think it's be a faster way to navigate around the os
01:43:07 <oklopol> (that last part had no relation to the former ones)
01:45:18 <oklopol> i'm starting to think it'd not be faster, but i still think it's cooler
01:54:00 <RodgerTheGreat> speech recognition in star trek is pretty crazy, because LCARS (the OS, kinda) is supposed to use speech commands to assemble application software on the fly to perform the requested commands
01:54:36 <RodgerTheGreat> essentially, LCARS has no programs- they're all created from LCARS's modular libraries at runtime
01:54:45 <oklopol> well, at that point i don't think there'd really be any need for humans on the ship...
01:55:25 <RodgerTheGreat> LCARS would require a ludicrous amount of AI under the hood to work in speech mode
01:56:26 <RodgerTheGreat> the idea of an interface consisting almost entirely of contextual menus and controls seems pretty workable
01:58:23 <SevenInchBread> eh, if a GUI makes something easier, then I'm all for it.
01:59:11 <RodgerTheGreat> in most cases, the minimalist GUIs we see on TV would never work, but LCARS is actually very well thought out
02:00:34 <RodgerTheGreat> it's only real failing is multitasking, but multitasking isn't always what it's cracked up to be
02:01:02 <RodgerTheGreat> plus, on star trek there's always plenty of screens allocated for the various tasks being done
02:03:02 <RodgerTheGreat> I just like how the operating system and the interface are deeply integrated, rather than the latter being an afterthought built seperately
02:07:58 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
02:18:06 <oklopol> SevenInchBread i don't get that :D
02:18:47 <SevenInchBread> I couldn't think of a way to allow an arbitrary number of interpreters globally alter the source code...
02:19:07 <oklopol> they get the code, they return the code
02:19:29 <oklopol> plus, they always get a number indicating which token they are running
02:19:41 <oklopol> and they return another number indicating the next token
02:19:55 <SevenInchBread> right right... but the problem with that is that there's no -order- in which they return them... unless I wait for each of them to output something before sending the token to another one.
02:20:54 <oklopol> well, make stdout the main program running the code
02:21:16 <oklopol> normal output is done like '\info \info' to the main program,
02:21:26 <SevenInchBread> and if I let the interpreters affect the control flow of every other interpreter... there'd be countless race conditions.
02:21:47 <oklopol> output: ... endvalues: string number
02:22:15 <oklopol> well, i meant you'd just assign one at the time
02:22:26 <oklopol> i can't figure out another way to do it with just stdio
02:23:14 <oklopol> it's boring if there's no self-modification
02:23:21 <oklopol> then there's really no language
02:24:04 <SevenInchBread> ...I guess the interpreters could be simply be put in order...
02:24:29 <oklopol> well, that's what i implicitly suggested
02:25:29 <SevenInchBread> not sure how the parser would no where to start over during a self-modification though...
02:27:10 <oklopol> i'm pretty sure that's not a sentence :|
02:27:36 <oklopol> SevenInchBread i already solver that
02:27:56 <oklopol> they get code and code pointer, they return new code and new code pointer
02:28:03 <oklopol> oh yeah, you're afraid of pointers
02:29:05 <SevenInchBread> ...include Python (which I'll probably be implementing it in... or maybe Ruby)
02:29:27 <oklopol> you mean they wouldn't understand a pointer given them?
02:29:56 <oklopol> 1. that's stupid, pointer can't be anything more than a number, because everything is a number 2. yes
02:30:31 <oklopol> pointer is just a way to imply a number means an index, nothing more
02:30:44 <oklopol> just that it usually means an index to all the memory
02:30:54 <oklopol> i don't see why you go all berzerk every time you see it :)
02:31:32 <oklopol> anyways, i have some serious sleeping to do -------------------------->
02:43:22 <SevenInchBread> I have nothing against pointers... they're very useful.
02:56:00 <SevenInchBread> ....I could take a dupdog-ian approach that doesn't use tokens.
02:59:50 <RodgerTheGreat> the more this new language becomes like dupdog, the more fun I predict programming with it shall become
03:01:56 -!- ShadowHntr has joined.
03:02:50 <oerjan> i just managed to run the Hello World program in the Haskell interpreter
03:04:18 <oerjan> Yeah, after I fixed a bug in the interpreter
03:05:53 <SevenInchBread> heh, funny that dupdog remained unnoticed for a couple of months... :)
03:08:21 <RodgerTheGreat> and then a crack team of bored IRCers found it and started using it
03:14:40 <SevenInchBread> Kallisti 5.0 - http://esoteric.voxelperfect.net/wiki/E%9AE1EBEBE%AFF%83F%84%E1F%83
03:30:27 <RodgerTheGreat> The Adjudicated Blind Collaborative Design Esoteric Factory is an important name that deserves more than an acronym.
03:36:10 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
03:36:12 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
03:45:43 <SevenInchBread> RodgerTheGreat, where is the Haskell interpreter for dupdog at?
03:45:57 <oerjan> i haven't put it up yet
03:46:23 <oerjan> need to add a few features such as a main function :)
03:46:25 * SevenInchBread lost interest in dupdog... so never got around to fully fixing his implementation.
03:46:41 <oerjan> there is another implementation in thutu however.
03:47:39 <oerjan> for some reason ais523 (i think it was him) didn't put a link on the wiki
03:48:08 <oerjan> it was on the channel recently, a pastebin link i think
03:50:50 <SevenInchBread> ...I think Stue is the only one of my languages that had an implementation before it had a specification... still haven't written it up yet.
03:52:32 <oerjan> http://pastebin.ca/raw/397577 but you need to change 128 to 257, the current Hello World assumes mod 257 wrapping
03:55:37 <oerjan> for some reason ais523 hasn't told us the original thutu.
04:01:09 <oerjan> you think she's a she?
04:02:32 <oerjan> anyhow i hope my interpreter will deal better with lots of duplications. Shared functional data structure.
04:02:51 <oerjan> although with Haskell you never know about space.
04:03:32 <SevenInchBread> nah, wasn't sure. I kind of prefer she over he when the gender is unknown.
04:06:24 <oerjan> i intend to make it an option
04:06:52 <SevenInchBread> in the meantime I should write the specification for Stue... and maybe fix up the interpreter a bit.
04:07:01 <oerjan> indeed i intend to have two: one used for output and one for internal/debugging use
04:07:18 <SevenInchBread> and work on some of my unfinished languages... I've got one based on gravity sources.
04:07:52 <SevenInchBread> not using any complicated math though... just simple spatial relations.
04:24:36 -!- wooby has joined.
04:32:09 -!- Arrogant has joined.
04:41:51 -!- GregorR_ has joined.
04:43:05 -!- GregorR_ has quit (Remote closed the connection).
04:59:03 -!- wooby has quit (Read error: 104 (Connection reset by peer)).
04:59:16 -!- wooby has joined.
05:02:37 -!- GreaseMonkey has quit (Remote closed the connection).
05:27:15 -!- ShadowHntr has quit ("End of line.").
05:29:50 -!- GreaseMonkey has joined.
05:31:32 <GreaseMonkey> ok, my bot works, now it's onto coding the lang
05:37:35 <GreaseMonkey> my new bot is named "RoboMonkey" and has exactly the same functionality as it did in the very early stages of GreaseBot.... raw commands, and that's it.
05:40:07 <GreaseMonkey> my new bot has several things of the old bot: the "PASS/NICK/USER" join method, and raw commands are like:
05:57:02 -!- SevenInchBread has quit (Read error: 145 (Connection timed out)).
06:00:15 -!- Arrogant has quit ("Leaving").
06:39:20 <GregorR> Woooooooh, I have the best LCARS theme evar ^^
06:40:11 <GreaseMonkey> hi gregor, i'm working on an esolang for my bot
06:43:13 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~fu (.+)", lambda x,y: bot.raw("PRIVMSG %s :fuck you, %s" % (y.group(1), y.group(2))))
06:44:29 <GreaseMonkey> hmm, i cud replicate that in brainsecks code....
06:46:03 <GreaseMonkey> x00>"PRIVMSG "%1[>,]" :"%0[>,]x0A>x00<[<]>[.>]
06:46:14 <GreaseMonkey> x00>"PRIVMSG "%1[>,]" :fuck you, "%0[>,]x0A>x00<[<]>[.>]
07:00:31 <GreaseMonkey> for(i=0;array[i];i++){ /* stuff goes here */ }
07:02:39 <GreaseMonkey> oh, and there's always: for(p=str;*p;p++){/* stuff goes here */}
07:07:35 <GreaseMonkey> on #uncyclopedia , there's a SupyBot under the nick "AutoRTB"
07:40:49 -!- RodgerTheGreat has quit.
07:50:54 -!- anonfunc has joined.
07:51:20 -!- oerjan has quit ("ZZNNNNRRRKKKK").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:25:03 -!- ShadowHntr has joined.
09:27:00 -!- ShadowHntr has quit (Client Quit).
09:31:42 <Sgeo> twos = iterate (2^) 0
09:51:31 -!- Sukoshi has joined.
09:53:42 -!- RoboMonkey has joined.
09:54:15 <RoboMonkey> sadly only one command can be used though
09:54:39 <GreaseMonkey> that program: x00>"PRIVMSG "%2[>,]>x01%0[>,]x0A>x00<[<]" :"[<]>[.>]
09:55:07 <GreaseMonkey> ?x00>"PRIVMSG "%1[>,]>x01>"ACTION ">x01%0[>,]x01>x0A>x00<[<]" :"[<]>[.>]
09:55:08 <Sgeo> twos = iterate (2^) 0
09:55:51 <GreaseMonkey> ?x00>"PRIVMSG "%1[>,]>x01>x01>"ACTION "%0[>,]x01>x0A>x00<[<]" :"[<]>[.>]
09:57:12 <Sgeo> Someone please find number of digits of 2^(2^(2^(2^(2^(2^(2^0))))))
09:59:39 <Sgeo> (2^(2^(2^(2^(2^(2^0))))) has over 19 thousand digits
10:00:22 <GreaseMonkey> 2^(2^(2^(2^(2^(2^(2^0)))))) -> 2^(2^(2^(2^(2^(2^1))))) -> 2^(2^(2^(2^(2^2))))
10:00:43 <GreaseMonkey> 2^(2^(2^(2^(2^2)))) -> 2^(2^(2^(2^4))) -> 2^(2^(2^16))
10:01:01 <Sgeo> length $ show $ (2^(2^(2^(2^(2^(2^0))))))
10:01:15 <Sgeo> Put another 2^ in front
10:01:19 <Sgeo> how many digits?
10:01:22 <Sukoshi> Someone can do math *clap clap clap*.
10:02:43 -!- RoboMonkey has quit.
10:03:13 <Sgeo> g'night GreaseMonkey
10:04:01 <GreaseMonkey> ?x00>"PRIVMSG #esoteric :gnight">x0A>x00<[<]>[.>]
10:04:10 -!- GreaseMonkey has quit ("Woot! RoboMonkey works! Woot again!").
10:05:38 <Sukoshi> Or a cheap embedded device preferrably with a FORTH on-die, but not neccessarily so.
10:07:25 * Sgeo asks in Yahoo! Answers
10:10:11 <Sukoshi> Thanks. That's sure to get answers.
10:11:37 <Sgeo> I meant about my question
10:13:25 -!- nazgjunk has joined.
10:32:38 -!- wooby has quit (Read error: 104 (Connection reset by peer)).
10:35:25 -!- sebbu has joined.
11:03:11 -!- UpTheDownstair has joined.
11:03:43 -!- Sukoshi has quit ("さあ、ね。もう帰るわ!待ってね!").
11:14:27 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
11:47:48 -!- UpTheDownstair has changed nick to nazgjunk.
11:52:29 -!- jix has joined.
12:04:59 -!- Sgeo has quit ("Leaving").
13:04:28 -!- UpTheDownstair has joined.
13:05:45 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
13:05:50 -!- UpTheDownstair has changed nick to nazgjunk.
13:06:56 -!- sebbu2 has joined.
13:25:41 -!- sebbu has quit (Read error: 110 (Connection timed out)).
13:55:01 -!- RodgerTheGreat has joined.
13:58:35 <oklopol> woke up 2 hours ago, had a kebab, been reading about this racist mp wannabe... not that i'm a racist, but i like it when people have strong opinions, we have the elections today, but i don't think i'll bother to vote
13:58:51 <oklopol> i'd like to make my lang complete today
13:59:02 <oklopol> i gotta read for my matriculation exams tomorrow
13:59:59 <RodgerTheGreat> I'm probably going to need to do some homework, but for now I'm just surfing
14:00:24 <oklopol> i had this idea about a lang where you have a concurrent for-each
14:00:31 <oklopol> everything is done at the same time
14:00:45 <oklopol> this is an issue when doing cellular automatons etc
14:00:51 <oklopol> you need to do the same thing for all
14:00:55 <RodgerTheGreat> hm. so a foreach would essentially just thread everything out?
14:01:10 <oklopol> you can have two lists and copy from one to one, swapping all the time
14:01:20 <RodgerTheGreat> lol- you should call it a noweach instead of a foreach
14:01:31 <oklopol> BUT that requires the whole array to be copied every time
14:01:43 <oklopol> so you have to manually optimize in each case
14:02:10 <oklopol> you can't just have the array and move, for example with wireworld, everything like the rules say
14:02:17 <oklopol> because only some parts move
14:02:34 <oklopol> that's very tedious to do, and the thing inherent in cellular automatons fades
14:02:39 <oklopol> the fact you only have one rule
14:02:54 <oklopol> so noweach would make those optimizations automatically
14:03:00 <oklopol> since i think i know how to do it
14:03:29 <oklopol> you just have to know how far the thingies CAN check for other living things, a living thing being one where rules apply
14:03:55 <oklopol> so... i'd optimize memory usage and cut out redundancy automatically for simple automatons like wirewordl
14:04:11 <oklopol> had this idea when making lopoda, which is kinda a cellular automaton
14:04:22 <oklopol> it's not really one though
14:05:18 <oklopol> cellular automatons can be done like that already, for example with mark something's cellebration
14:05:33 <oklopol> it's just it's not really a language, just a set of modifiable rules
14:05:48 <RodgerTheGreat> I think a noweach would be a genuinely useful feature- something not often seen in esolangs
14:05:57 <oklopol> you know, textboxes for "live while n neighbours"
14:07:04 <oklopol> i'm using an iterator that can change current cell, check neighbour cells and leave messages for current cells
14:07:25 <oklopol> *leave messages for neigbour cells
14:08:04 <oklopol> this is not the language i've designed really, it was just something i couldn't get outta my head when reading english
14:08:31 <oklopol> btw does bnf have a parser?
14:08:38 <RodgerTheGreat> well, since foreach loops are generally just done on a group of objects, operating on each only individually, there probably wouldn't be a lot of difference. If you did something relating adjacent objects in an array or something your results might be counterintuitive from a programming standpoint, because programmers naturally thing iteratively
14:08:41 <oklopol> i've been making one, i don't think i'm the first :\
14:09:24 <oklopol> hmm, i use bnf with simplified regexes... and regexes postfix -> prefix
14:09:30 <oklopol> because it's easier to parse
14:09:45 <oklopol> and math is pre-/infix, why shouldn't regexes be
14:10:07 <oklopol> and i like it when things are counterintuitive
14:10:18 <oklopol> i suppose that's why i'm on this chan
14:10:40 <oklopol> you got my brain going again :<
14:10:53 <oklopol> how can i read the big book of tautologies now?
14:12:09 <oklopol> 'the' had some sick quirks, but most of it i would've known 8 years ago
14:12:26 <oklopol> remember explaining one of the things i read there to a friend on the first grade
14:12:37 <oklopol> but, still it takes me ages to read
14:12:46 <oklopol> because i'm so slow at understanding text
14:13:08 <oklopol> something i wrote about this
14:15:42 <oklopol> noweach, lopoda, nopol implementation, oklotalk, nestor
14:15:54 <oklopol> i'd have some esoteric month doing those
14:16:03 <oklopol> oklotalk is not that esoteric though
14:16:36 <oklopol> an apl (or just apl if you consider the 'a' is an article in it's own right) thingie
14:16:48 <oklopol> that borrows the best of haskell and lisp
14:16:57 <oklopol> quoting from lisp, actually
14:17:27 <oklopol> i don't know what's from haskell since i can't remember all the things i've already thought through
14:18:20 <oklopol> because i like python... but it doesn't use tail recursion (i think) and it isn't lazy
14:18:53 <oklopol> fib=[1 {--n+-n}] would be haskellish
14:19:11 <oklopol> you can specify a list as it's first values and a lambda to calc the rest
14:19:22 <oklopol> the lambda is fed an iterator object
14:19:40 <oklopol> in this case n, because it's the only free var in the lambda, so no need to specify explicitly
14:20:03 <oklopol> - is unary minus, but with an iterator it means "last"
14:20:19 <oklopol> and actually, the lambda should be {!--n+!-n} since we need the values
14:20:39 <oklopol> adding iterators is defined, as everything is always defined (:P) but makes no sence in this case
14:21:06 -!- anonfunc has quit.
14:21:20 <oklopol> in oklotalk everything is a valid program, but since the debugger makes tokenizing, nesting and running explicit in that you can do it as step by step as you like
14:21:45 <oklopol> plus, i'm making all optimizations explicit as well of course
14:21:52 <oklopol> and you can suggest optimizations
14:22:00 <oklopol> without need to alter code
14:22:09 <oklopol> you can have code and optimization separate
14:22:30 <oklopol> but, these are of course the more ambitious things i design for all my langs
14:22:48 <oklopol> that i'm able to code in ten years if i'm lucky :)
14:23:12 <oklopol> i'm making apl purely functional for one
14:24:10 <oklopol> you can quote lambdas to add them in a list `+ `{_*_} `{_-1} would make a list of 3 lambdas, or functions, no difference in oklotalk
14:24:25 <RodgerTheGreat> you know, your ideas for "intelligent books" would be an interesting thing to apply to wiki-based books, or wikis in general
14:24:26 <oklopol> and that'd be pretty mych exactly the same as . in haskell
14:24:38 <oklopol> yeah, i thought about that too
14:24:53 <oklopol> then again, if it's in my head i consider it done
14:25:02 <oklopol> one reason for me not being that productive that often
14:25:39 <oklopol> i.must.go.feck.this.all------------------------------>
14:30:04 <SimonRC> oklopol: Go read Tim Berners-Lee's writings on the "Semantic Web".
14:31:26 <oklopol> i might, if you link it to me
14:32:21 <oklopol> if you read it in 45 secs, by the way, i'm quite impressed :)
14:32:32 <oklopol> now, really, REALLY really ---------------------------------->
14:56:12 <oklopol> {^(inc=`+)|(dec=`-)|(nxt=`>)|(prv=`<)|(out=`.)|(in=`,)|(loop=`[*.`])}
14:56:12 <oklopol> >>> <in object, content: ",">
14:56:22 <oklopol> rego ------------------------------>
15:18:24 -!- helios24 has quit ("Leaving").
15:45:37 -!- oerjan has joined.
15:49:00 -!- UpTheDownstair has joined.
15:51:26 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
15:58:28 -!- UpTheDownstair has quit ("Leaving").
16:32:25 -!- sekhmet_ has joined.
16:32:43 -!- sekhmet has quit (Nick collision from services.).
16:33:00 -!- sekhmet_ has changed nick to sekhmet.
16:47:49 <oklopol> http://www.vjn.fi/beepiano.py
16:48:02 <oklopol> made this at school :PP fun toy
16:50:37 <oerjan> Somehow I didn't have the impression that okokokoko was about music.
16:51:06 <oklopol> i wasn't specifically, it's about everything
16:51:46 <oerjan> i see. btw does the word "oklopol" mean anything?
16:52:09 <oklopol> it's a make-believe world we've written a few stories about
16:52:20 <oklopol> www.vjn.fi read when you learn finnish :)
16:52:30 <oerjan> when i first saw your name i assumed you were polish :)
16:52:42 <RodgerTheGreat> what's the difference between a real word and a make-believe word?
16:52:57 <oklopol> make-believe is some other one
16:53:14 <oklopol> in oklopol, you'd call this one a bake-believe world
16:54:07 <oklopol> real is just a this pointer
16:54:22 <oerjan> i have a vague recall that "oklo" means window in Czech, so "oklopol" would be a window Pole whatever that is
16:55:28 * oerjan recalls the pole vault exercise from the FRC Hellympics
16:59:20 <oklopol> btw if you can tell me a way to give the loudspeaker values directly, please enlighten me
16:59:34 <oklopol> i can only make square with that obviously
16:59:46 <oklopol> plus, you have to specify lenght beforehand
17:00:03 <oklopol> it'd get ugly to make holding mean a longer tone
17:00:34 <oklopol> i know how to access the pc speaker with asm, but that's no good since pc speaker is just square
17:02:13 <oklopol> hehe learning black diamond now :P
17:02:30 <oklopol> screw the exam, i'm playing beepiano!
17:06:56 <oerjan> i suppose the PlaySound function might be what you want
17:09:10 <oerjan> the winsound module you already use
17:09:29 <oerjan> it seems more flexible than Beep
17:09:37 <oklopol> with my brainfuck player for example
17:09:43 <oklopol> but it requires me to create a wav
17:09:55 <oklopol> which is easy but imo idiotic to do real time
17:11:04 <oerjan> but perhaps you could pregenerate one for each frequency and use SND_LOOP
17:12:34 <oklopol> i first though i'd make real-time tone creating possible in the player
17:12:41 <oklopol> i might start thinking about that then
17:13:33 <oerjan> whoops. there appears to be a stupid restriction.
17:14:25 <oerjan> you cannot use string data except to play a single time synchronously, it seems
17:19:51 <oerjan> and using actual WAV files might give too much delay, though I don't know
17:26:20 -!- SevenInchBread has joined.
17:26:59 <oklopol> i'd just be too ashamed to use a file like that
17:27:41 <oerjan> i don't see any such restriction mentioned for the underlying function: http://msdn2.microsoft.com/en-us/library/ms712879.aspx
17:27:47 <oklopol> and great, i'm stuck inside the house now, didn't let my drunk father in so he tried to open a special lock we have in the door that prevents opening from the inside
17:28:15 <oklopol> i tried to tell him i just won't let him in and he kept saying 'don't worry i'll get the door open'
17:29:30 <oerjan> can such a lock be complying with fire regulations?
17:31:19 <oklopol> i have no idea, but it's a 50 euro fee to get someone to open the door and my father went out getting one since he thought there was something wrong with the door :D
17:31:50 <oklopol> so... 50 euros to open a door given the key to that door
17:32:23 <oerjan> you _do_ realize this event does nothing to relax our stereotypes about the Finnish? ;)
17:32:55 <oklopol> well, i think those stereotypes are correct
17:33:18 <oklopol> since most ppl i know are either drunks or absolutists
17:35:05 <oerjan> It seems like you should be able to write it in C. It occurs to me that Python's problem with strings might have something to do with garbage collection.
17:35:43 <oklopol> but you could prolly circumvent that by keeping a pointer to the string in the code
17:36:08 <oklopol> smth="teh str"; and then use smth, i don't see how there could be a problem
17:36:14 <RodgerTheGreat> best logic ever: "I'm not stereotyping, because the stereotypes are true!"
17:36:51 <oklopol> indeed, that's not my logic there though
17:37:10 <oerjan> yes, but then the module would have to do so automatically, and that might cause sound strings never to be freed if not done properly. I guess the Python implementers didn't bother.
17:37:22 <SevenInchBread> yeah, as long as you've got a reference to the string, it shouldn't go away.... unless Python's GC goes wonky or something.
17:37:37 <oerjan> if it is copying things could be strange.
17:38:30 <SevenInchBread> If I remember correctly, Python stores strings in const variables.... at least on the C end of things.
17:38:34 <oerjan> with the string being moved rather than deleted
17:39:59 <oerjan> i don't think const prevents the GC from moving things
17:40:43 <oerjan> it would have to be saved in some FFI unmovable format. There probably is something like that available, but there would be overhead.
17:42:07 <oerjan> oklopol is writing a simple piano program
17:42:49 <oklopol> i can write it in c as well
17:43:01 <oklopol> it's just python was the only one i knew sound stuff with
17:43:23 <oklopol> __import__("winsound").Beep(interva,freq)
17:44:09 <oklopol> hmm i have that same beep in c as well, it seems to be in stdio
17:44:14 <oklopol> BUT again it's just square
17:44:52 <oerjan> yeah but PlaySound is a Windows function.
17:45:28 <oerjan> Winmm.lib it says on the page i linked
17:45:36 <oklopol> i know, i've used it as i said
17:45:42 <oklopol> but you said something about strings
17:46:00 <oerjan> i think that is only a problem with Python strings
17:46:14 <oklopol> but... can you play strings?
17:46:41 <oerjan> well a memory block in .wav format
17:47:39 <oerjan> >i don't see any such restriction mentioned for the underlying function: http://msdn2.microsoft.com/en-us/library/ms712879.aspx
17:48:33 <oerjan> anyhow i found it just by googling for PlaySound
17:48:45 <oklopol> mm well, maybe i'd have as well then
17:51:13 <oklopol> nice... i can't both read and scroll that page simultaneously
17:51:50 <oklopol> hmmm i can only play one sound at a time with that?
17:53:16 <oerjan> wait... you may be right.
17:53:37 <oklopol> then you must end all at once
17:54:12 <oklopol> i'd like being able to pres a key down and play a melody at the same time
17:56:34 <oerjan> i suppose you could calculate the sum on the fly then
17:57:28 <oklopol> i'll just make a string for the next 50 ms every time
17:58:11 <oklopol> though, i've noticed an awful click in the beginnin when playing stuff with playsound
17:58:30 <oerjan> yeah, boundary condition worries me too
17:58:54 <oerjan> you really want something that can change sound smoothly
17:59:04 <oklopol> you mean waves going .-'-.-'-.-'--'-.-'-.-'-.-'--'-.-'-.-'-
17:59:58 <oklopol> that is easy, you just check where that wave leaves by sin(clicks in 50 ms * current tone pitch)
18:00:35 <oerjan> i am also thinking of the inevitable short timing mismatch
18:00:50 <oerjan> because of delay and imprecision
18:00:52 <oklopol> i mean, you can create the whole sound at once, then cut it into sequences of 50 ms and adding the wav header
18:01:11 <oklopol> but i think strings don't have much delay
18:01:20 <oklopol> because there's no file openage
18:04:02 <oklopol> by the way, piano is confusing since i use the accordions note system
18:04:17 <oklopol> i just named it piano because people don't know what an accordion is :)
18:04:21 -!- nazgjunk has joined.
18:04:51 <oerjan> i know what an accordion is. i think.
18:05:42 <oklopol> well, in finnish it's 'haitari', so not everyone knows what it is in english
18:06:45 -!- Sgeo has joined.
18:16:14 <oerjan> You might want to look at http://msdn2.microsoft.com/en-us/library/ms713503.aspx
18:16:26 <oerjan> A more powerful system, it seems
18:21:30 <oklopol> i'd like unsigned char set_lp(unsigned char newvalue) best :P
18:21:55 <oklopol> 'cept of course in my brainfuck... and many of my unimplemented langs
18:23:13 <oklopol> haha i can play stratovarious's black diamond on beepiano now :DD
18:56:13 <oklopol> http://pb.vjn.fi/p245463223.txt black diamond
18:56:48 <oerjan> Basically set_lp is only going to work in a system with hard real timing, which does not include the modern consumer OSes
18:58:03 <oerjan> indeed i sometimes feel slightly annoyed at esoteric languages that call themselves concurrent while having exact scheduling.
18:59:39 <oklopol> are you referring to... what?
19:00:09 <oerjan> i don't think you were particularly precise on that
19:01:09 <oklopol> because i don't know the spesifics
19:01:17 <oerjan> although i don't understand why you don't use a purely functional updating for it.
19:01:18 <oklopol> just wondering what you were referring to
19:01:33 <oklopol> mmh maybe because i don't know what you mean
19:02:05 -!- sekhmet has quit ("ups ftw \o/").
19:02:15 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
19:02:22 -!- UpTheDownstair has joined.
19:02:28 <oerjan> ok yours is strictly scheduled as dataflow (because it's CA inspired) but not in exact timing
19:02:59 <oerjan> what i mean is that each step could simply calculate the next in parallel.
19:03:23 <oerjan> since the previous step is not modified, you don't get those timing issues
19:03:47 <oklopol> i think that might result in deadlock
19:03:53 <oklopol> since they can refer to each other
19:04:18 <oerjan> no, because each refers only to the _previous_ state of the others, not to the one currently being calculated.
19:04:19 <oklopol> they can refer to the new state as well
19:04:30 <oerjan> in that case you have a problem
19:04:49 -!- UpTheDownstair has changed nick to nazgjunk.
19:04:59 <oklopol> but, indeed it's still easiest to do concurrently
19:05:38 <oklopol> and, it's not supposed to be used in anything where that might result in problems
19:05:41 <oerjan> CAs don't require copying, btw. You just switch which array you calculate from
19:06:41 <oklopol> anyway, i think cellular automatons are easier to optimize in lang development than in an existing lang
19:06:49 <oklopol> nops, places that aren't used currently
19:07:04 <oklopol> it automatically skips those when optimizing
19:07:09 <oerjan> ah you mean things that don't change.
19:07:38 <oerjan> well you can keep those in big blocks
19:08:05 <oerjan> so you only copy block pointers
19:08:53 <oerjan> i think that's how the popular CA engines do it
19:09:36 <oklopol> seems like the easiest way out
19:09:44 <oklopol> i had a lot more complicated thing in mind
19:10:05 <bsmntbombdood> who can come up with the slowest way to calculate fibonacci numbers?
19:10:20 <oerjan> the usual recursion without memoing is pretty slow.
19:11:01 <oerjan> then you can define addition using succ.
19:11:31 <oklopol> int fib(int n){sleep(2^2^2^2^2^2);if(n==1||n==2)return 1;return fib(n-1)+fib(n-2);}
19:11:51 <oklopol> you did not specify that as illegal
19:11:59 <oerjan> you mean sleep(ackermann(n,n)) :)
19:13:40 <bsmntbombdood> I don't understand when people say stuff like "add a (succ b) = succ (add a b)"
19:13:57 <bsmntbombdood> How do you compute that without a predeccesor function?
19:13:58 <SevenInchBread> ...create an entire network of processes that pass around data and perform single computations one at time... communicating the data in the least signifigant bits of manipulated bitmaps of adorable kittens.
19:14:06 <oklopol> bsmntbombdood take a bf interpreter in bf, then make a function that takes a number n and makes bf interpret bf interpret bf... n times, the last one calculating next fib
19:14:10 <oerjan> you need a base case of course
19:15:37 <oerjan> the idea is to think of natural numbers as defined as being either zero or the succ of something.
19:15:56 <oerjan> so the first succ is simply pattern matching on the definition
19:16:22 <oerjan> in Haskell, essentially:
19:16:36 <oklopol> bsmntbombdood the same way as prev_num (n+1) = n
19:16:39 <oerjan> data Nat = Zero | Succ {pred :: Nat}
19:17:14 <oerjan> pred is not an ordinary function, but a field
19:17:14 <oklopol> you can pattern match certain things when ...their counterfunction is obvious :)
19:17:25 <oklopol> *with functions in the pattern
19:18:23 <oerjan> yes, but Succ is a constructor, so it is not just a function but also a pattern you can match on. Thus it really contains pred implicitly.
19:19:10 <oerjan> (and Haskell allows you to name both simultaneously)
19:20:38 -!- sekhmet has joined.
19:21:17 <oerjan> you could think of it another way: add a (Succ b) = Succ (add a b) is a defining axiom, not just a calculation.
19:23:33 <bsmntbombdood> the book i'm reading informally defines it using that definition, then formally defines it in lambda calculus using some primitive recursion function
19:24:03 <oerjan> you might want to look at something like the Coq proof assistant, which has inductive type definitions built in.
19:24:21 <oerjan> of course you cannot do it in pure lambda calculus.
19:25:34 <oerjan> consider the function to be constructed in order to fit the defining axiom, however.
19:27:11 <oerjan> there is a standard trick for embedding such datatypes and pattern matching into lambda calculus, however.
19:29:33 <oerjan> i think that prim is something like what Coq defines automatically given the data type definition
19:33:11 -!- oerjan has quit ("Hunting for food").
20:07:16 <SevenInchBread> ...hrm, I can't get my HTTP server to work. Help? http://deadbeefbabe.org/paste/4036
20:15:25 -!- nazgjunk has quit ("Leaving").
20:25:42 -!- nazgjunk has joined.
20:27:32 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
20:28:00 -!- nazgjunk has joined.
21:31:34 <SevenInchBread> if it would be possible to fund the operation of an ISP without charging.
21:35:12 <SevenInchBread> I'd love it if it were possible to make the Internet -completely- free...
21:40:13 <oklopol> omg commies in my internets! :D
21:42:33 <RodgerTheGreat> the internet is a breeding ground for what amounts to communisim anyway...
21:43:14 <oklopol> true, i don't like any of those though
21:44:14 <oklopol> i'm under the impression it makes programming kinda a payless occupation
21:44:29 <oklopol> if i understand 'creative commons' right
21:46:42 <RodgerTheGreat> well, things like open-source tend to de-emphasize the value of creative or innovative programmers, representing coding as more of a form of skilled labor.
21:47:26 <RodgerTheGreat> I think of programming as more of an art than a manufacturing job.
21:47:49 <oklopol> me too, but i'd like to get my pay out of it as well
21:47:56 <oklopol> since there is nothing else i can do
21:48:18 <oklopol> well, i could do porno maybe, but that's it
21:49:50 <RodgerTheGreat> the main problem is that because you can get so many things on the internet for free, people *expect* everything to be free, and feel entitled to everything without charge
21:50:20 <RodgerTheGreat> big players can survive on ad revenue, but it's impossible to make a profit as a small developer that way
21:52:20 <RodgerTheGreat> I suppose that's my main problem with open-source philosophy. I give away the source to most of what I make freely, but sometimes I want to make the decision to hang on to what I create. It should be my decision, but things like the GPL take that decision away and make it impossible to maintain control over software built on anything GPLed
21:53:02 <RodgerTheGreat> it's kinda "forced freedom" that could be considered good for the community, but it fucks over the individual
21:54:00 <RodgerTheGreat> and since I see programming as an art and something that is valuable when done properly, rather than hacked together, I think the individual should be important
21:55:25 <RodgerTheGreat> not everyone can have the luxury of living off of people's donations like Stallman. I think he's a little detached from market reality, which should make people question his motivations
21:57:01 <RodgerTheGreat> If I release software, it's either under the "Do whatever the fuck you want License" or the source is mine to keep.
21:58:02 <RodgerTheGreat> GPLed. BSD licensed. Any number of things that get in the way and create false illusions of openness or freedom.
21:58:38 <RodgerTheGreat> If I cared wether someone else "stole" the code I distributed, I wouldn't have given it away in the first place
21:59:29 <RodgerTheGreat> the GPL is just a viral method for allowing the FSF (which I find dubiously trustworthy) to control the flow of code.
22:00:29 <RodgerTheGreat> and in the same vein, I don't trust any "licenses", because all they serve to do is limit what people can do with code that's supposedly offered to a community for free
22:00:46 <GregorR> ...............................................................................................
22:01:00 <GregorR> Licenses, by definition, can only give freedoms.
22:01:49 <GregorR> In a copyright system, licenses and copyright assignment are the only ways to give anyone other than the original creator the right to copy the work.
22:02:09 <GregorR> Or rather, licenses are the only way to give anyone but the copyright holder(s) said rights.
22:02:15 <GregorR> So licenses by definition can only give freedoms.
22:04:03 <RodgerTheGreat> if you ask me, the only license that isn't a lie is this one, which I urge everyone here to adopt: http://sam.zoy.org/wtfpl/
22:04:50 -!- nazgjunk has quit ("Leaving").
22:05:30 <GregorR> Your philosophy is both bizarre and completely stupid.
22:07:53 <oklopol> indeed, the first one wasn't a correction either
22:42:16 -!- ShadowHntr has joined.
22:42:25 -!- sebbu has joined.
22:46:48 -!- oerjan has joined.
22:50:32 -!- sebbu2 has quit (Read error: 145 (Connection timed out)).
22:54:49 <oerjan> because it has to be precise
22:55:11 <oerjan> and it is already extremely simplified
22:55:49 <oerjan> i.e. who do you think invented overloading? :)
22:56:03 <SevenInchBread> but there's like... ten billion different forms of notation.
22:57:18 <oerjan> math notation is designed for extreme consiseness without being unreadable by those who use it
23:00:29 * SevenInchBread is trying to figure out the notation behind the Fourier transform.
23:01:42 <SevenInchBread> specifically, http://en.wikipedia.org/wiki/Fourier_transform#Definition
23:02:02 <SevenInchBread> I can't find an explaination on how to read the integral thing.
23:02:44 <oklopol> integrate the thingie, then take f(upper bound) and subtract f(lower bound)
23:02:51 <oerjan> you don't understand integrals?
23:03:22 <oerjan> the bounds are infinite however.
23:03:43 <oklopol> well, true, you need a big calculator
23:03:46 <SevenInchBread> so... if it helps any - I've never touched calculus...
23:03:58 <oerjan> well then you have a problem
23:04:04 <bsmntbombdood> then you are probably going to have some troubles...
23:05:08 <oklopol> well, you can't blame math for you not knowing it
23:06:40 <SevenInchBread> ...well, the problem is that I'm trying to learn it... but it's proving extremly difficult.
23:06:47 <oerjan> everything from the elongated s to dt is an integral, with upper bound infinity and lower bound minus infinity (this combines to mean integrate over all real numbers)
23:07:07 <oklopol> trying to pick it up quickly for reading that page?
23:07:32 <oklopol> well, i can't blame you, i've done the same thing
23:07:32 <oerjan> the part between is essentially a lambda term with free variable t
23:07:45 <oklopol> can't say i understand fourier transform either...
23:08:47 <oklopol> hmm i seem to get that now
23:09:01 <oklopol> but, suppose i have an array full of random stuff
23:09:08 <oklopol> upper bound is length of it
23:09:18 <oerjan> essentially you can think of integral as a higher-order function
23:09:18 <SevenInchBread> so... what's the result of that notation? Is it a function, a number?
23:09:19 <oklopol> how do i integrate an array? :P
23:09:37 <oerjan> the result is a complex number in this case
23:09:40 <oklopol> SevenInchBread integration is func -> func
23:10:23 -!- sekhmet has quit ("kernel++;").
23:10:44 <oklopol> turns a function a into another function b that at x slopes a(x)
23:10:57 <oerjan> integral :: Measure a -> (a -> Complex) -> Complex
23:12:01 <oklopol> oerjan why will that result in complex numbers?
23:12:10 <SevenInchBread> ...yeah, I've never understood that little bit of Haskell-ish notation... :)
23:12:13 <oerjan> because there is an i in the function
23:12:36 <oklopol> e^(x) always results in a real number i think
23:13:02 <oerjan> e^(ix) is a unit complex number if x is real
23:13:06 <SevenInchBread> I'm trying to read up on concepts related to sound waves.
23:13:20 <oerjan> e^(a+bi) = e^a * (cos b + i sin b)
23:14:44 <SevenInchBread> I'd like to translate the Fourier transform into an algorithm... so how do you get compute the integral of something?
23:15:17 <oklopol> i asked oerjan already, but he never answered :<
23:15:48 <oklopol> actually, i just threw it in the air
23:16:12 <oklopol> then again, most of what i say is implicitly a question for oerjan
23:16:26 <SevenInchBread> hmmm... it looks liike, in the most cases, it's just the area underneath the curve between those limits... in this case infinity.
23:16:38 <oerjan> if the function x is stepwise continuous you can use numerical methods
23:16:52 <SevenInchBread> so.....how do you compute the area of something that's infinite. :P
23:17:06 <oklopol> what if it's a wav file for example?
23:17:09 <oerjan> by an integral of course :)
23:17:49 <oerjan> the simplest way is to divide into small intervals and approximate it as constant on each
23:17:56 -!- sekhmet has joined.
23:18:09 <oerjan> then for each interval it is just the area of a square
23:18:27 <SevenInchBread> yeah... just the chunk of the wave that is repeated would be all you need.
23:18:57 <oerjan> when you take the limit of smaller intervals, that is the riemann integral
23:19:22 <oklopol> ah, that's why you use sum in actual implementations of fourier
23:19:24 <oerjan> although there are more efficient methods if your function is also differentiable
23:19:56 <oklopol> because often you don't need fourier when you've made the function yourself
23:20:05 <oklopol> because you prolly know what it is if you made it
23:20:08 <oerjan> (requiring less subdivisions for accuracy)
23:21:04 <oerjan> if it is already a sum of sine waves then it is easier to transform using the known expression for them, yeah
23:22:37 <oerjan> but expressing a signal as a limit sum of sine waves is the most basic
23:23:35 <oerjan> dividing it up by frequency rather than time
23:24:39 <bsmntbombdood> so X(a) is the amplitude of the sine wave at frequency a?
23:24:47 <SevenInchBread> is the fourier transform used to reproduce chords and multiple waves at the same time?
23:25:37 <oerjan> actually a and -a together give the sine and cosine wave parts. Complex numbers mix them a bit
23:26:01 <oerjan> That e^ix = cos x + i sin x thing
23:27:06 <oerjan> reversed as e^ix + e^(-ix) = 2 cos x and e^ix - e^(-ix) = 2 sin x
23:29:18 <oerjan> a sum of multiple waves, two for each frequency
23:32:09 <oerjan> if a signal is truly periodic with frequency f, then only frequencies that are integer multiples of f will appear
23:33:20 <oklopol> SevenInchBread no, addition is for that
23:33:56 <oerjan> That is essentially the point of Fourier _series_
23:34:12 <oerjan> Yeah, the Fourier transform is linear so it preserves addition
23:35:07 <oklopol> you do fourier transforms for the opposite
23:35:17 <oklopol> figuring out what waves have been added
23:35:32 <oklopol> (and once again correct me if i'm wrong...)
23:35:51 <oerjan> Except there are some weird problems with summing the sine waves if the original function is not nice enough.
23:36:10 <oerjan> You need to do the limit in a more clever way than simple integration
23:39:10 <oerjan> This is because the result of the Fourier transform is not necessarily itself directly Fourier transformable
23:39:58 <oerjan> otherwise it would just be a matter of repeating the process with some constants and signs changed
23:41:08 <SevenInchBread> I was thinking about making an interactive programming language for playing around with sound samples mid-play..
23:41:33 <SevenInchBread> like... some weird cross between programming and a synthesizer.
23:43:22 <oerjan> You might want to look at http://en.wikipedia.org/wiki/Discrete_Fourier_transform
23:45:17 <oerjan> It is for the case when you have a finite set of time points.
23:45:49 <oerjan> Incidentally all these different forms of Fourier transforms are united by the theory of dual groups.
23:46:51 <oerjan> Essentially for every kind of time group there is a dual frequency group. The real numbers are their own dual, as are the integers mod n
23:47:23 <oerjan> *every = every sufficiently nice (commutative, locally compact)
23:48:05 -!- sekhmet has quit ("ups tests...").
23:48:06 <SevenInchBread> -ahem- as a precaution... none of your explainations have helped me so far. -gentlemanly smile-
23:48:07 <oerjan> however the unit circle is dual to the integers, which explains why you get a Fourier _series_ from a periodic signal.
23:48:24 <oerjan> Not even the discrete fourier transform?
23:48:43 <oerjan> I admit the general stuff was mostly in case someone else was interested
23:49:06 <SevenInchBread> time group and dual frequency group means nothing to me. :(
23:49:07 <oklopol> oerjan i don't think he'll need a fourier transform for what he defined
23:49:30 <oerjan> Well he needs a way to get frequencies from samples, doesn't he?
23:50:04 <oklopol> if he's doing what i think he's doing
23:50:14 <SevenInchBread> I don't need to create sound files... I just want to mix multiple sound files together... among other things.
23:50:21 <oklopol> just a programmer's version of logic audio or guitar pro or such
23:51:00 <oerjan> Well in that case you just add amplitudes together with coefficients
23:51:11 <oklopol> that's what i've been planning to do for ages
23:51:24 <oklopol> but i've never had a direct acces to the speaker
23:51:34 <oklopol> though oerjan maybe showed me the way
23:52:12 <oerjan> that Windows audio wave thing sounds complicated but it apparently solves the time gap problem
23:52:23 <SevenInchBread> ...probablly heavily concurrent... because you need multiple "processes" playing all at once... like an interactive programming language mixed with a GUI.
23:54:12 <oerjan> There was something about mixing there too
23:55:37 <oerjan> You need that nowmap thing and a way to sum the result :)
23:56:54 <oerjan> But then concurrency may not be so important if they are independent - just loop over them for each time block, summing
23:57:15 <oerjan> assuming it is not so heavy you need multiple cores...
23:57:26 <oklopol> well, if they are done at the same time, it must be O(1) !
23:58:12 -!- jix__ has joined.
23:58:14 <oerjan> anyhow if it is anything like that audio wave thing then it will actually be event driven.
23:58:51 <oerjan> i saw something about getting a callback when the audio device is finished playing a data block
23:59:16 <oerjan> in fact there seemed to be a bunch of alternatives listed for how to do that