fluid-work IRC Logs-2012-07-30

[09:13:35 CDT(-0500)] <Justin_o> yura1, anastasiac: either of you ever use a messagekey with args, in an array, with the proto style component tree

[09:14:16 CDT(-0500)] <anastasiac> Justin_o, I have not, but I'd bet money yura1 has (he's tried everything)

[09:18:40 CDT(-0500)] <Justin_o> anastasiac: okay.. i'll see what yura1 says.. so far for me it's not filling in the template at all and just rendering out the template directly with the tokens

[09:20:03 CDT(-0500)] <yura1> Justin_o: can you paste an example of your tree

[09:20:04 CDT(-0500)] <yura1> ?

[09:23:34 CDT(-0500)] <michelled> cindyli, anastasiac: feel like meeting about Floe?

[09:23:44 CDT(-0500)] <cindyli> sure, michelled

[09:23:46 CDT(-0500)] <anastasiac> indeed

[09:23:52 CDT(-0500)] <michelled> let's try the collab room

[09:25:19 CDT(-0500)] <Justin_o> yura1: here's an example http://pastebin.com/1p6BBJvY

[09:27:33 CDT(-0500)] <yura1> Justin_o: i wonder if you need the values in the array be paths within the strings/parentBundle rather than the actual values

[09:29:11 CDT(-0500)]

<Justin_o> yura: you mean instead of "

Unknown macro: {settingVal}

.attrs.min" use "$

Unknown macro: {setting}


[09:29:57 CDT(-0500)] <yura> Justin_o: well you mention that even "one" and "two" does not work

[09:30:12 CDT(-0500)] <yura> i would try to sub it first for something that points to one and two in the strings

[09:31:11 CDT(-0500)] <Justin_o> yura: okay.. that was just an example of passing in values directly.. but i'll try to see if a path would work instead

[09:31:32 CDT(-0500)] <yura> ya try passing the elPaths directly first

[09:31:35 CDT(-0500)] <yura> see if that works

[09:35:42 CDT(-0500)] <Justin_o> how would i pass in a path to the strings by the way?

[09:37:15 CDT(-0500)] <Justin_o> yura: ^

[09:42:15 CDT(-0500)] <Justin_o> yura: no sure how to pass in the strings.. so basically i just added a "one" and "two" string option.. but it still doesn't work

[09:49:55 CDT(-0500)] <michelled> cindyli1: I just updated a11y-uio with the new master

[09:50:12 CDT(-0500)] <cindyli1> ok, thx, michelled

[13:33:05 CDT(-0500)] <greggy1> FYI who ever's looking after inclusivedesign.ca the link to idrc is broken at http://inclusivedesign.ca/research/ocadu/

[13:34:48 CDT(-0500)] <colinclark> Hey avtar, greggy1 just pointed out an interesting issue. The link is broken because it points to "idrc.ocadu.ca," but our site only resolves to idrc.ocad.ca." Is this an easy fix?

[13:35:47 CDT(-0500)] <avtar> i should be able to fix that tonight

[13:37:01 CDT(-0500)] <avtar> it will involve changes to the dns servers and the idrc.ocad.ca vhost

[13:39:14 CDT(-0500)] <avtar> brb

[13:53:31 CDT(-0500)] <Justin_o> jhung: finished up the input validation.. it should all be in my bitbucket repo

[13:53:47 CDT(-0500)] <Justin_o> https://bitbucket.org/jobara/decapod-0.6-ui-iteration5

[13:56:33 CDT(-0500)] <jhung> ok. Thanks! I'll check it out probably tomorrow.

[13:57:33 CDT(-0500)] <Justin_o> jhung: sounds good.. i'm going to look at fixing the custom options for type3 pdf export now to remove the DPI option. This should play into setting up type4 pretty well

[14:09:03 CDT(-0500)] <Justin_o> Bosmon: question for you.. if i have a default model that contains an array… for example values into inputs that will get rendered out.. and i try to override it from the parent component.. what is expected to happen.

[14:11:59 CDT(-0500)] <Bosmon> Hi Justin_o - since this is part of the model, the mergePolicy will end up combining the two arrays together

[14:12:08 CDT(-0500)] <Bosmon> This may not be what you want....

[14:12:45 CDT(-0500)] <Bosmon> The algorithm used for combining models is held in fluid.model.mergeModel

[14:13:47 CDT(-0500)] <Bosmon> Which basically makes heavy reliance on jQuery.extend for anything below the root level

[14:14:05 CDT(-0500)] <Bosmon> You could write your own policy, and contribute it to the framework, if you would like a different effect (smile)

[14:14:58 CDT(-0500)] <Bosmon> Although the system for user-defined mergePolicies is still a bit dorky...

[14:15:12 CDT(-0500)] <Bosmon> You can supply a raw function handle

[14:19:50 CDT(-0500)] <Justin_o> Bosmon: yes.. i was hoping to replace the array completely..

[14:20:03 CDT(-0500)] <Justin_o> Bosmon: what do you mean by "You can supply a raw function handle"

[14:20:22 CDT(-0500)] <Bosmon> So a mergePolicy which includes a function as the value will invoke the function

[14:21:28 CDT(-0500)] <Justin_o> Bosmon: okay.. so i could say that when it sees a key called 'x' it will execute this function to handle the merging for the values attached to 'x'

[14:21:29 CDT(-0500)] <Justin_o> ?

[14:23:20 CDT(-0500)] <Bosmon> Justin_o - that's right, yes

[14:24:03 CDT(-0500)] <Bosmon> So, the default policy supplied by the modelComponent grade is at line 1128 of Fluid.js

[14:24:12 CDT(-0500)] <Bosmon> mergePolicy: {

[14:24:12 CDT(-0500)] <Bosmon> model: "preserve",

[14:24:12 CDT(-0500)] <Bosmon> applier: "nomerge"

[14:24:12 CDT(-0500)] <Bosmon> }

[14:24:37 CDT(-0500)] <Bosmon> Especially with the new, bugged framework, you should be able to override this in your own grade, and supply your own policy for merging the model

[14:25:09 CDT(-0500)] <Bosmon> I will be working on a fix for the framework bug today, but this behaviour should remain...

[14:27:10 CDT(-0500)] <Justin_o> Bosmon: okay.. thanks.. can supply a path that drills into the model or does it just work on top level options

[14:28:01 CDT(-0500)] <Bosmon> You'll unfortunately need to merge the entire model wholesale

[14:28:08 CDT(-0500)] <Bosmon> So this is clearly architecturally unsatisfying

[14:28:18 CDT(-0500)] <Bosmon> But it should at least enable you to write a workaround to get the effect you want

[14:28:38 CDT(-0500)] <Justin_o> Bosmon: okay.. thanks..

[14:29:35 CDT(-0500)] <thealphanerd> colinclark: you around?

[14:31:48 CDT(-0500)] <colinclark> I am, yes

[14:32:18 CDT(-0500)] <thealphanerd> so I'm working on the polyphony stuff / aria stuff

[14:32:25 CDT(-0500)] <colinclark> ok

[14:32:31 CDT(-0500)] <thealphanerd> and looking at your notes regarding numVoices

[14:32:54 CDT(-0500)] <Justin_o> Bosmon: i have to run now, but i'll take a look at this tomorrow.. thanks for your help.

[14:32:58 CDT(-0500)] <thealphanerd> is numVoices a current feature in flocking

[14:32:59 CDT(-0500)] <thealphanerd> ?

[14:33:49 CDT(-0500)] <colinclark> no

[14:34:00 CDT(-0500)] <colinclark> Flocking has no concept of "voices"

[14:34:03 CDT(-0500)] <colinclark> Just synths

[14:34:03 CDT(-0500)] <thealphanerd> ok cool

[14:34:13 CDT(-0500)] <colinclark> So you have to make an object that holds an array of them

[14:34:16 CDT(-0500)] <thealphanerd> so then I would need to register a synth with multiple oscillators

[14:34:24 CDT(-0500)] <colinclark> and allocates them appropriate based on noteOn events

[14:34:34 CDT(-0500)] <colinclark> No, typically you'd make multiple synths

[14:34:47 CDT(-0500)] <thealphanerd> if I make multiple synths

[14:34:54 CDT(-0500)] <thealphanerd> what do I need to do to make sure the mux properly?

[14:35:17 CDT(-0500)] <colinclark> Synths now write correctly to a Flocking bus...

[14:35:22 CDT(-0500)] <colinclark> meaning they add their signals together

[14:35:42 CDT(-0500)] <colinclark> You'll need to ensure that the total amplitude of all your currently-playing Synth instances doesn't go over 1.0

[14:35:48 CDT(-0500)] <colinclark> Which will cause distortion

[14:35:59 CDT(-0500)] <colinclark> So the point of your thing is to make this convenient for users

[14:36:25 CDT(-0500)] <colinclark> And so there are a handful of strategies for doing this

[14:36:30 CDT(-0500)] <colinclark> Sometime people use a Compressor

[14:36:39 CDT(-0500)] <colinclark> There is unfortunately no compressor ugen in Flocking yet

[14:36:50 CDT(-0500)] <thealphanerd> is there a multiplier?

[14:36:51 CDT(-0500)] <colinclark> You could use a normalizer, which would cause some amplitude modulation of the signal

[14:37:16 CDT(-0500)] <colinclark> yes. Every UGen has a "mul" input

[14:37:22 CDT(-0500)] <thealphanerd> in max/msp I always just take all the synths… add them together, then multiply the amplitude

[14:37:41 CDT(-0500)] <colinclark> Yeah, you could do that

[14:37:48 CDT(-0500)] <thealphanerd> so you could intheory update the mul of every voice based on how many are running

[14:37:53 CDT(-0500)] <thealphanerd> seems sloppy though

[14:37:53 CDT(-0500)] <colinclark> yes, that's right

[14:38:04 CDT(-0500)] <thealphanerd> like you would hear the amplitude moving

[14:38:40 CDT(-0500)] <thealphanerd> i'm guessing a limiter or compressor ugen would be a bit out of my scope to create

[14:38:51 CDT(-0500)] <colinclark> Probably not really necessary yet, anyway

[14:39:29 CDT(-0500)] <colinclark> So in general there are four strategies you could take

[14:40:06 CDT(-0500)] <colinclark> 1. Make a normalizer UGen by using the flock.normalize() function--you'll get some distortion there potentially, but it's probably fine for most cases… a "poor man's compressor"

[14:40:28 CDT(-0500)] <colinclark> 2. Implement one of two ways to scale the amplitude of your carrier unit generators

[14:40:53 CDT(-0500)] <colinclark> a. Divide their amplitude by the number of playing synths

[14:41:09 CDT(-0500)] <colinclark> b. Scale them by a fixed value (the same as your "multiplier" in Max)

[14:41:21 CDT(-0500)] <colinclark> 3. Make a compressor unit generator, which you probably don't want to do yet

[14:41:23 CDT(-0500)] <colinclark> it'd be fun

[14:41:26 CDT(-0500)] <colinclark> I guess that's it

[14:41:44 CDT(-0500)] <colinclark> I think the decision between 2a. and 2b. has a lot to do with the nature of the instrument

[14:41:55 CDT(-0500)] <colinclark> e.g. organs get louder as you press more keys

[14:42:32 CDT(-0500)] <thealphanerd> I guess a combination of 1 and 2b might be nice

[14:45:51 CDT(-0500)] <thealphanerd> btw flocking does not appear to work on firefox on windows 7

[14:46:46 CDT(-0500)] <colinclark> Yes

[14:46:57 CDT(-0500)] <colinclark> I was going to chat with you about how to file good open source bug reports. (wink)

[14:47:27 CDT(-0500)] <thealphanerd> hahah

[14:47:40 CDT(-0500)] <colinclark> But I'm not surprised--Firefox seems to have really regressed its audio support

[14:47:49 CDT(-0500)] <thealphanerd> that's too bad

[14:47:50 CDT(-0500)] <colinclark> I'll need to do some fairly in-depth triaging to figure out if there's anything we can do

[14:48:03 CDT(-0500)] <thealphanerd> did you see the moog doodle source?

[14:48:05 CDT(-0500)] <colinclark> The alternative, I think, is to introduce a Flash-based polyfill for the Audio Data API

[14:48:11 CDT(-0500)] <colinclark> I did see it, yes

[14:48:39 CDT(-0500)] <thealphanerd> I was just going to mention flash-based

[14:48:44 CDT(-0500)] <colinclark> yeah, it sucks

[14:48:47 CDT(-0500)] <thealphanerd> because that's what they did for the moog doodle

[14:48:52 CDT(-0500)] <colinclark> But I've heard others report problems with Firefox on Windows, too

[14:50:58 CDT(-0500)] <colinclark> If you have a chance to do some testing on Windows 7, I'd appreciate it--whatever you can find out

[14:51:10 CDT(-0500)] <colinclark> even try some of our competitors' sites and see if they suffer similarly

[14:54:45 CDT(-0500)] <thealphanerd> will do

[14:54:51 CDT(-0500)] <thealphanerd> although my only means of testing is in a vm

[14:54:55 CDT(-0500)] <thealphanerd> but its better than nothing

[14:56:24 CDT(-0500)] <michelled> whoa - UIO wordpress plugin - thanks for sending that link colinclark http://wordpress.org/extend/plugins/fluid-accessible-ui-options/

[14:56:46 CDT(-0500)] <colinclark> thealphanerd: Yup, a VM is cool

[14:57:06 CDT(-0500)] <thealphanerd> awesome

[15:01:36 CDT(-0500)] <colinclark> michelled: yeah, interesting, eh?

[15:02:19 CDT(-0500)] <michelled> yes - I think Johnny will find that interesting for sure

[15:13:36 CDT(-0500)] <anastasiac> michelled, do I recall you saying that http://issues.fluidproject.org/browse/FLOE-54 is not high priority?

[15:14:00 CDT(-0500)] <michelled> anastasiac: not as high priority as the other things we'd seen

[15:14:24 CDT(-0500)] <michelled> but maybe we are at that point?

[15:14:44 CDT(-0500)] <anastasiac> ok, I'll have a look

[15:18:54 CDT(-0500)] <thealphanerd> colinclark: have you played with jquery mobile?

[15:23:02 CDT(-0500)] <anastasiac> michelled, I've pushed a fix for FLOE-54 to my github: https://github.com/acheetham/OER-Commons/tree/FLOE-54

[15:26:38 CDT(-0500)] <colinclark> thealphanerd: Not a lot, unfortunately. We do have a project on the horizon that will hopefully let us spend more time with it

[15:27:02 CDT(-0500)] <thealphanerd> trying to get touch events up and running (among other things).. and getting a strange error

[15:27:16 CDT(-0500)] <colinclark> how are you doing it?

[15:27:34 CDT(-0500)] <thealphanerd> well jquery mobile has an extension for jquery to enable a virtual mouse

[15:27:52 CDT(-0500)] <thealphanerd> literally just need to change my current events from mousedown to vmousedown etc

[15:27:54 CDT(-0500)] <thealphanerd> if it would work

[15:28:19 CDT(-0500)] <thealphanerd> but getting "Uncaught ReferenceError: define is not defined "

[15:29:01 CDT(-0500)] <thealphanerd> hmm maybe they are expecting me to be including require.js

[15:29:20 CDT(-0500)] <thealphanerd> but I just want to get this script going https://github.com/jquery/jquery-mobile/blob/master/js/jquery.mobile.vmouse.js

[15:31:08 CDT(-0500)] <colinclark> I suspect you could just remove the call to define() from the file and it would work

[15:31:08 CDT(-0500)] <thealphanerd> I also have added aria roles to the markup that piano.js generates… made the group have a data-role of controlgroup

[15:31:21 CDT(-0500)] <thealphanerd> and each note have a data-role of button

[15:34:22 CDT(-0500)] <colinclark> interesting

[15:34:27 CDT(-0500)] <colinclark> have you committed that code yet?

[15:34:29 CDT(-0500)] <colinclark> i'd be curious to see it

[15:35:25 CDT(-0500)] <thealphanerd> yeah

[15:35:32 CDT(-0500)] <thealphanerd> just pushed it

[15:35:40 CDT(-0500)] <travis_84> hey colin and bosmon

[15:35:48 CDT(-0500)] <colinclark> thealphanerd: What's a controlgroup?

[15:35:53 CDT(-0500)] <colinclark> hey travis_84!

[15:36:27 CDT(-0500)] <thealphanerd> maybe that was something from jquery-mobile

[15:36:29 CDT(-0500)] <thealphanerd> which uses aria

[15:36:32 CDT(-0500)] <travis_84> Houston, we have a problem!

[15:36:39 CDT(-0500)] <thealphanerd> they were saying to use that for groups of buttons that are not inline

[15:38:36 CDT(-0500)] <colinclark> thealphanerd: I think it must be jQM-related, rather than ARIA

[15:38:38 CDT(-0500)] <travis_84> MITs servers for the voice services I have been depending on for the project have been down for two days

[15:38:44 CDT(-0500)] <thealphanerd> I think you are right

[15:39:14 CDT(-0500)] <colinclark> travis_84: uh oh!

[15:40:02 CDT(-0500)] <colinclark> travis_84: They're down for me, too

[15:40:09 CDT(-0500)] <travis_84> I have a temp work around but I need a quick hand

[15:41:08 CDT(-0500)] <colinclark> ok

[15:41:23 CDT(-0500)] <colinclark> thealphanerd: Looks like it's one of these: https://github.com/jquery/jquery-mobile/blob/master/js/jquery.mobile.controlGroup.js

[15:42:02 CDT(-0500)] <thealphanerd> well might not be the worst idea to include it

[15:42:05 CDT(-0500)] <thealphanerd> doesn't break anything

[15:42:38 CDT(-0500)] <travis_84> since we are working with strings I just made a simple input but the onclick returns an 'unknown reference

[15:44:10 CDT(-0500)] <travis_84> error even though the method that is called to fire is referenced in the bootLoader.js file linked

[15:45:22 CDT(-0500)] <colinclark> thealphanerd: It looks like, for testing and casual usage, you can link this file: https://github.com/jquery/jquery-mobile/blob/master/js/jquery.mobile.define.js

[15:45:45 CDT(-0500)] <colinclark> travis_84: Can you point us to some lines of code in your Github repo?

[15:45:46 CDT(-0500)] <thealphanerd> ahhh

[15:45:54 CDT(-0500)] <thealphanerd> I commented out the define bit and it works now

[15:46:36 CDT(-0500)] <thealphanerd> i think

[15:49:11 CDT(-0500)] <travis_84> nothing has changed, except in the index.html. I added <input type="text" id="input" cols="25"/> <button id="submit" value="input" onClick="processResults($('#input').val);"></button>

[15:50:24 CDT(-0500)] <travis_84> processResults() is on line 234 in the linked bootLoader.js

[15:51:28 CDT(-0500)] <colinclark> Can you send me a Github link, travis_84?

[15:53:20 CDT(-0500)] <travis_84> https://github.com/travis-love/Eleuthera/blob/master/assets/js/bootLoader.js

[15:56:02 CDT(-0500)] <colinclark> thanks

[15:58:01 CDT(-0500)] <colinclark> So to start, travis_84, it might be easier to debug your code if you don't put it into an onClick attribute on your button.

[15:58:22 CDT(-0500)] <colinclark> you could write a tiny bit of code with jQuery to select your button and bind the click handler to it

[15:59:07 CDT(-0500)]

<colinclark> $("#submit").click(function ()

Unknown macro: { processResults( …); }


[15:59:10 CDT(-0500)] <colinclark> or something similar

[15:59:24 CDT(-0500)] <colinclark> Then you'll be able to put a breakpoint in and have a look at the state of your code

[15:59:37 CDT(-0500)] <colinclark> using your favourite debugger, be it Firebug or the Chrome dev tools

[16:00:19 CDT(-0500)] <thealphanerd> colinclark: would calling $ to = jQuery in a closure bypass any changes made by a plugin such as jquery mobile to

[16:00:21 CDT(-0500)] <thealphanerd> $?

[16:00:31 CDT(-0500)] <colinclark> umm

[16:00:39 CDT(-0500)] <colinclark> I don't know exactly what you mean

[16:00:44 CDT(-0500)] <colinclark> but I'm going to say no (smile)

[16:01:09 CDT(-0500)] <thealphanerd> running the jQuery mobile script modifies $

[16:01:24 CDT(-0500)] <colinclark> thealphanerd: Are you asking about one of these thingies? https://github.com/TheAlphaNerd/Piano/blob/master/js/piano.js#L21

[16:01:33 CDT(-0500)] <thealphanerd> yeah

[16:01:35 CDT(-0500)] <colinclark> No

[16:01:51 CDT(-0500)] <thealphanerd> so that wouldn't reset $ to jQuery prior to the modifications another script made to it?

[16:01:56 CDT(-0500)] <colinclark> no

[16:02:04 CDT(-0500)] <colinclark> it's just an alias

[16:02:25 CDT(-0500)] <colinclark> you're just assigning the name "jQuery" to the local name of "$". The underlying reference is still to the same object

[16:02:47 CDT(-0500)] <thealphanerd> then does it make sense

[16:02:51 CDT(-0500)] <thealphanerd> that changes are not sticking

[16:02:55 CDT(-0500)] <colinclark> Just make sure your scripts are loading in the right order, so that you load jQuery first, and then all the requisite plugins, then your code

[16:02:56 CDT(-0500)] * thealphanerd is very confused

[16:03:06 CDT(-0500)] <thealphanerd> that is what I have going on right now

[16:03:09 CDT(-0500)] <colinclark> What do you mean by "not sticking?"

[16:03:18 CDT(-0500)] <thealphanerd> jquery.mobile.vmouse.js

[16:03:26 CDT(-0500)] <thealphanerd> it adds an object $.vmouse

[16:03:30 CDT(-0500)] <thealphanerd> and the events

[16:03:38 CDT(-0500)] <thealphanerd> BUT… after all my code has run

[16:03:45 CDT(-0500)] <thealphanerd> there is no $.vmouse

[16:04:11 CDT(-0500)] <colinclark> Start by making sure your scripts are included in the correct order

[16:04:59 CDT(-0500)] <thealphanerd> I have jquery, than the mobile vmouse script, then flocking, then d3, then infusion, then dat gui, then custom code

[16:05:30 CDT(-0500)] <colinclark> seems about right

[16:31:55 CDT(-0500)] <colinclark> thealphanerd: Quick question?

[16:37:21 CDT(-0500)] <travis_84> colin: I guess I am not seeing how the 'click' event fixes the reference issue. I guess all I am asking is how to use a function made in a loaded js file from index.html, linking to the script should be it right? I changed to the jquery method as you said and still get "Uncaught ReferenceError: processResults is not defined"

[16:37:55 CDT(-0500)] <colinclark> travis_84: I wasn't suggesting that it would change the outcome...

[16:38:04 CDT(-0500)] <colinclark> I was suggesting that it would give you a way to determine what the bug is

[16:38:10 CDT(-0500)] <colinclark> using a debugger

[16:40:54 CDT(-0500)] <colinclark> But it looks like your first problem is that you're defining processResults inside a function, so it's not visible to calling code

[16:42:56 CDT(-0500)] <travis_84> so the .ready() makes inner functions unuseable outside the bootLoader file?

[16:43:02 CDT(-0500)] <colinclark> That's right

[16:43:17 CDT(-0500)] <colinclark> A function has its own, private scope

[16:43:27 CDT(-0500)] <colinclark> So you have to expose your public functions to a namespace object

[16:43:51 CDT(-0500)] <colinclark> So, Infusion has things to help with this sort of thing

[16:44:02 CDT(-0500)] <colinclark> but since you haven't yet started to use it, you can do it the old fashioned way

[16:44:13 CDT(-0500)] <colinclark> Pick a single global name that represents the top level of your namespace

[16:44:35 CDT(-0500)] <colinclark> Maybe "eleu" or something like that

[16:44:56 CDT(-0500)] <colinclark> Then, at the top of your file, you'll define that name globally

[16:45:14 CDT(-0500)] <colinclark> var eleu = {};

[16:45:30 CDT(-0500)] <colinclark> and then, for functions you want to expose publicly, you'll assign them to your eleu object

[16:45:39 CDT(-0500)]

<colinclark> eleu.processResults = function ()

Unknown macro: {…}


[16:47:33 CDT(-0500)] <travis_84> will I need to prefix all fn's that don't need to be global if another inner function calls it?

[16:53:08 CDT(-0500)] <colinclark> yes

[16:53:32 CDT(-0500)] <colinclark> Your public functions will from then on be official known as "eleu.foo()" or whatever

[16:53:44 CDT(-0500)] <colinclark> just like, say, fluid.each()

[16:53:49 CDT(-0500)] <colinclark> or $.extend()

[16:53:51 CDT(-0500)] <colinclark> etc.

[16:54:03 CDT(-0500)] <travis_84> kk

[17:38:30 CDT(-0500)] <travis_84> this is correct; $('#input').val() right? returns the string value of #input?

[17:41:01 CDT(-0500)] <colinclark> yup, that's right

[20:50:22 CDT(-0500)] <colinclark> hey thealphanerd, you around?

[20:50:32 CDT(-0500)] <thealphanerd> hey what's up?

[20:50:44 CDT(-0500)] <thealphanerd> good timing.. just got back in

[20:50:54 CDT(-0500)] <colinclark> me too (smile)

[20:51:09 CDT(-0500)] <colinclark> So, I've done some triage of the issue in Firefox on Windows 7

[20:51:17 CDT(-0500)] <colinclark> not super awesome

[20:51:24 CDT(-0500)] <colinclark> Two issues actually came up

[20:51:31 CDT(-0500)] <colinclark> 1. It's a latency issue

[20:51:54 CDT(-0500)] <colinclark> 2. Firefox seems to have a problem with setInterval loops in a Web Worker

[20:52:40 CDT(-0500)] <colinclark> So, for #1, you can get it to make sound by adding couple of lines like this:

[20:52:59 CDT(-0500)] <colinclark> At line 58 of your Oscillator.js

[20:53:12 CDT(-0500)]

<colinclark> flock.enviro.shared = flock.enviro(

Unknown macro: {bufferSize}


[20:53:31 CDT(-0500)] <colinclark> That line is a bit ugly for various stupid reasons that will be fixed soon, but it'll get sound out

[20:53:39 CDT(-0500)] <colinclark> Unfortunately it brings with it a pretty high latency

[20:54:49 CDT(-0500)] <colinclark> There's a noticeable delay when you press a key

[20:54:56 CDT(-0500)] <colinclark> but I'll see if I can improve it this weekend

[20:55:02 CDT(-0500)] <colinclark> Issue #2 sucks more

[20:55:03 CDT(-0500)] <thealphanerd> well then it looks like firefox is going to have to go without audio (big grin)

[20:55:14 CDT(-0500)] <thealphanerd> what are the setinterval loops?

[20:55:15 CDT(-0500)] <colinclark> Or maybe Flash will end up being better

[20:55:28 CDT(-0500)] <colinclark> I use a Web Worker to run a constant loop to feed Firefox with audio samples

[20:55:41 CDT(-0500)] <colinclark> The Audio Data API is a bit lacking--it's not even a callback-based system

[20:56:05 CDT(-0500)] <colinclark> so I make my own callback using setInterval

[20:56:16 CDT(-0500)] <colinclark> I do it in a WebWorker so that it doesn't get throttled when the tab is in the background

[20:56:27 CDT(-0500)] <thealphanerd> do you want me to get us a meeting with someone from firefox?

[20:56:34 CDT(-0500)] <thealphanerd> my friend runs their toronto office

[20:56:37 CDT(-0500)] <thealphanerd> well office manager

[20:56:44 CDT(-0500)] <thealphanerd> not exactly "runs"

[21:00:24 CDT(-0500)] <colinclark> lol

[21:00:26 CDT(-0500)] <colinclark> yes, I know her

[21:00:29 CDT(-0500)] <colinclark> No, don't sweat it

[21:00:34 CDT(-0500)] <colinclark> This is an API they are going to replace

[21:01:56 CDT(-0500)] <thealphanerd> ahhh

[21:02:30 CDT(-0500)] <thealphanerd> brb

[21:03:59 CDT(-0500)] <colinclark> Anyway, the result of this issue in Firefox is that the user sees the "this script might be unresponsive" dialog on a regular basis

[21:04:06 CDT(-0500)] <colinclark> So I'll see if I can work around this one as well

[21:06:40 CDT(-0500)] <thealphanerd> yeah that was coming up a bunch

[21:06:47 CDT(-0500)] <thealphanerd> even on osx firefox

[21:07:23 CDT(-0500)] <colinclark> ?!

[21:07:28 CDT(-0500)] <colinclark> You've seen it on OS X?

[21:07:38 CDT(-0500)] <thealphanerd> yup

[21:07:52 CDT(-0500)] <thealphanerd> the audio works

[21:07:56 CDT(-0500)] <thealphanerd> but the script error comes up

[21:09:02 CDT(-0500)] <colinclark> when?

[21:09:13 CDT(-0500)] <colinclark> How do I reproduce?

[21:10:11 CDT(-0500)] <thealphanerd> it has been completely random

[21:10:15 CDT(-0500)] <thealphanerd> and I cannot reproduce it right now

[21:10:41 CDT(-0500)] <thealphanerd> was happening when I originally launched the new website

[21:10:51 CDT(-0500)] <thealphanerd> completely slipped my mind until you just brought it up

[21:16:16 CDT(-0500)] <colinclark> ok

[21:16:22 CDT(-0500)] <colinclark> I'll get it fixed for sure this weekend

[21:16:30 CDT(-0500)] <colinclark> In the meantime, you've got a workaround for Windows

[21:16:44 CDT(-0500)] <travis_84> colin: when you get a chance could you take a look at my recent commit? I globalized everything, and getting no erriors but not all functions work

[21:16:52 CDT(-0500)] <thealphanerd> would you be able to post that solution on the github?

[21:17:36 CDT(-0500)] <thealphanerd> and can I make that line only run on firefox on windows?

[21:17:53 CDT(-0500)] <thealphanerd> as an aside… linux land has been having all sorts of troubles with the audio

[21:18:33 CDT(-0500)] <colinclark> yes

[21:18:38 CDT(-0500)] <colinclark> Linux audio is a mess

[21:18:51 CDT(-0500)] <colinclark> Last I looked on Fedora 17, Chrome could bare squeak out a sound

[21:19:07 CDT(-0500)] <colinclark> travis_84: Yup, I'll take a quick look

[21:19:49 CDT(-0500)] <thealphanerd> chrome on ubuntu was making noise

[21:20:09 CDT(-0500)] <colinclark> oh wow

[21:20:12 CDT(-0500)] <colinclark> what did it sound like?

[21:20:16 CDT(-0500)] <colinclark> (smile)

[21:20:39 CDT(-0500)] <thealphanerd> shitty

[21:20:39 CDT(-0500)] <thealphanerd> ha

[21:21:16 CDT(-0500)] <colinclark> not surprised

[21:21:19 CDT(-0500)] <colinclark> Firefox was silent?

[21:21:25 CDT(-0500)] <colinclark> Perhaps for the same reasons

[21:23:24 CDT(-0500)] <thealphanerd> one secon

[21:23:29 CDT(-0500)] <thealphanerd> just retesting

[21:23:59 CDT(-0500)] <thealphanerd> chrome

[21:24:01 CDT(-0500)] <thealphanerd> audio is delayed

[21:24:05 CDT(-0500)] <thealphanerd> stuttered

[21:24:09 CDT(-0500)] <thealphanerd> kinda sounds like a spaceship

[21:24:40 CDT(-0500)] <thealphanerd> firefox not a peep

[21:26:54 CDT(-0500)] <colinclark> latency in both cases is my guess

[21:27:02 CDT(-0500)] <colinclark> larger buffer sizes will probably do the trick

[21:28:03 CDT(-0500)] <thealphanerd> but that will cause poor response

[21:28:26 CDT(-0500)] <colinclark> yup

[21:28:47 CDT(-0500)] <colinclark> makes you realize just how dependent we are on good implementations in the browser

[21:28:56 CDT(-0500)] <colinclark> and these are still really early days

[21:29:24 CDT(-0500)] <thealphanerd> so with a smaller buffer

[21:29:32 CDT(-0500)] <thealphanerd> the windows firefox just can't do it?

[21:31:24 CDT(-0500)] <colinclark> seems like it

[21:31:36 CDT(-0500)] <colinclark> It could be a bug somewhere in Flocking

[21:32:08 CDT(-0500)] <colinclark> but it's notable that other comparable libraries to Flocking also ship with much larger buffer sizes by default

[21:32:39 CDT(-0500)] <colinclark> right

[21:33:38 CDT(-0500)] <thealphanerd> hmmm

[21:33:46 CDT(-0500)] <thealphanerd> just seems strange to need such a large buffer

[21:34:16 CDT(-0500)] <colinclark> It is quite strange, yes

[21:34:30 CDT(-0500)] <colinclark> It's pretty interesting to see how things perform

[21:34:47 CDT(-0500)] <colinclark> Chrome on Windows seems fine with a buffer size of 1024, which is pretty reasonable

[21:35:04 CDT(-0500)] <colinclark> But when really maxing out the CPU, Firefox seems to perform better than Chrome

[21:35:19 CDT(-0500)] <thealphanerd> and firefox displays the svg right

[21:35:25 CDT(-0500)] <thealphanerd> whereas current webkit does not

[21:36:52 CDT(-0500)] <colinclark> yes, that seems to be the case

[21:37:06 CDT(-0500)] <thealphanerd> but upstream webkit kinda fix's it with my hack

[21:37:07 CDT(-0500)] <thealphanerd> blegh

[21:37:48 CDT(-0500)] <colinclark> yeah

[21:38:22 CDT(-0500)] <thealphanerd> btw… has there been any interest in publishing infusion or flocking with npm?

[21:39:51 CDT(-0500)] <colinclark> We'll publish Infusion 1.5 in the npm registry

[21:39:58 CDT(-0500)] <colinclark> Since it is now fully Node.js compatible

[21:40:12 CDT(-0500)] <colinclark> I don't really see any reason to publish Flocking if it can't make sound in the Node environment

[21:40:26 CDT(-0500)] <thealphanerd> I guess that makes sense

[21:40:31 CDT(-0500)] <thealphanerd> npm is really for server side stuff

[21:40:52 CDT(-0500)] <thealphanerd> have you designed many node apps with infusion?

[21:41:01 CDT(-0500)] <thealphanerd> it would be really neat to make something like express for infusion

[21:42:22 CDT(-0500)] <colinclark> We have a growing collection of Node apps built with Infusion

[21:42:26 CDT(-0500)] <colinclark> and Express (smile)

[21:43:02 CDT(-0500)] <colinclark> https://github.com/GPII/universal

[21:44:32 CDT(-0500)] <thealphanerd> I was playing with express a bit last night

[21:44:43 CDT(-0500)] <thealphanerd> just thinking about different ways to deploy the piano

[21:44:52 CDT(-0500)] <thealphanerd> especially if i want to integrate osc or midi support

[21:45:26 CDT(-0500)] <colinclark> okay, the report is in:

[21:45:41 CDT(-0500)] <colinclark> Audio in Firefox on Linux is just plain broken

[21:45:51 CDT(-0500)] <colinclark> On Chrome, it's just a question of buffer sizers

[21:45:53 CDT(-0500)] <colinclark> sizes

[21:46:27 CDT(-0500)] <thealphanerd> btw can you give me an elevator pitch of GPII?

[21:47:01 CDT(-0500)] <colinclark> some day, yes (smile)

[21:47:06 CDT(-0500)] <colinclark> or you can watch the video

[21:47:08 CDT(-0500)] <colinclark> that might be cooler

[21:47:11 CDT(-0500)] <thealphanerd> oh there is a video

[21:47:14 CDT(-0500)] <thealphanerd> ima watch that

[21:47:14 CDT(-0500)] <colinclark> http://gpii.net

[21:47:21 CDT(-0500)] <thealphanerd> btw tomorrow at 3 right

[21:47:21 CDT(-0500)] <thealphanerd> ?

[21:47:57 CDT(-0500)] <colinclark> yuip

[21:48:34 CDT(-0500)] <thealphanerd> ok cool

[21:48:42 CDT(-0500)] <thealphanerd> I'm going to try and get the touch stuff figured out tonight

[21:48:47 CDT(-0500)] <thealphanerd> and get a start going on the polyphony…

[21:56:02 CDT(-0500)] <colinclark> thealphanerd: Great. I'll have a pull request for you shortly as a workaround

[22:04:17 CDT(-0500)] <thealphanerd> colinclark: awesome!

[22:06:12 CDT(-0500)] <colinclark> You may find that you'll need to adjust the bufferSize depending on the speed of the machine.

[22:06:20 CDT(-0500)] <colinclark> I guess most soft synths have a setting for this somewhere

[22:09:59 CDT(-0500)] <thealphanerd> so I've merged it in

[22:10:03 CDT(-0500)] <thealphanerd> just runnning some tests

[22:14:04 CDT(-0500)] <colinclark> I've got to get some dishes done, but hopefully it all works for you

[22:14:07 CDT(-0500)] <colinclark> see you at 3 pm tomorrow

[22:18:46 CDT(-0500)] <thealphanerd> see you then