Old 11-14-2009, 05:30 PM   #1
liteon
Human being with feelings
 
liteon's Avatar
 
Join Date: Apr 2008
Posts: 510
Default JSfxGEN 0.2.9 Alpha

project homepage:
http://jsfxgen.googlecode.com

you can check the documentation for information about how it is working currently:
http://jsfxgen.googlecode.com/svn/tr...mentation.html

the source code:
its located in svn repository -> trunk/src folder and is basically as3 (similar to java - which helped me a lot there). around 5000-6000 lines in total, distributed in some bigger classes such as parser, editor, module, ui components and some less heavy sub-classes.

if you find bugs/issues/nitpicks or have any ideas please use the googlecode issue system or just post them in this thread.

Last edited by liteon; 11-16-2009 at 08:13 AM. Reason: edited
liteon is offline   Reply With Quote
Old 11-14-2009, 07:24 PM   #2
liteon
Human being with feelings
 
liteon's Avatar
 
Join Date: Apr 2008
Posts: 510
Default

here is a short video, that shows some of the functionality (20mb - avi, msv1):

click to download
liteon is offline   Reply With Quote
Old 11-16-2009, 07:54 AM   #3
liteon
Human being with feelings
 
liteon's Avatar
 
Join Date: Apr 2008
Posts: 510
Default 0.3.0 beta

moved out of the alpha version after making some tests. now in beta.

added the following modules:
- gfx_slider - gfx slider
- viz_scope - oscilloscope
- gen_noise - non-uniform distribution prng
- gen_sin - sine wave generator
- filter_lp6 - 6db lowpass
- vol_trim - volume trimmer
- mix_2x1 - audio joiner
- mix_1x2 - audio splitter

[test concept]:

routing:


gfx arrangement:


result:


generated code (jesusonic):
http://dl.dropbox.com/u/1627980/testgenerated.jsfx

ex: module code for mix_2x1:
Code:
// --------------------
// 2x1 joiner
// --------------------

//#mspr
//#inputs: in0[sample],in1[sample]
//#outputs: out[sample]
//#declare:

//#mspr

//#mspr
@init

//#mspr
@slider

//#mspr
@sample
// -- mix_2x1
out=(in0+in1)*0.5;

//#mspr
@block

//#mspr
@gfx

//#mspr
@serialize
ex: module code for gfx_slider:
Code:
// ---------------------
// gfx slider
// ---------------------

//#mspr
//#inputs:
//#outputs: value[gfx]
//#declare: w,wd1,h
//#declare: modxo,modyo

//#mspr

//#mspr
@init
// -- gfx_slider
w=200;wd1=1/w;h=20;
// set init value here 0-1
value=0.5;

//#mspr
@slider

//#mspr
@sample

//#mspr
@block

//#mspr
@gfx 200 20
// -- gfx_slider
gfx_r=0;gfx_b=gfx_g=gfx_a=1;
gfx_x=modxo;gfx_y=modyo;
gfx_rectto(modxo+w,modyo+h);
gfx_r=gfx_g=gfx_b=0;
gfx_x=modxo+1;gfx_y=modyo+1;
gfx_rectto(modxo+w-1,modyo+h-1);
(mouse_cap==1&&mouse_x>modxo-5&&
mouse_x<modxo+w+5&&mouse_y>modyo&&mouse_y<modyo+h)?
value=max(modx0,min(mouse_x,modxo+w)-modxo)*wd1;
gfx_r=0;gfx_b=gfx_g=1;gfx_a=0.5;
gfx_x=modxo;gfx_y=modyo;
gfx_rectto(modxo+value*w,modyo+h);
gfx_r=gfx_b=gfx_g=gfx_a=1;
gfx_x=modxo+5;gfx_y=modyo+5;
gfx_drawnumber(value,2);

//#mspr
@serialize
lubomir
liteon is offline   Reply With Quote
Old 11-16-2009, 10:21 AM   #4
hantymansy
Human being with feelings
 
Join Date: May 2008
Location: Kazakhstan
Posts: 94
Default

O-HO-HO-HO-h! AHH! nice neh!!!
really!! it's freaking awesome!!!
hantymansy is offline   Reply With Quote
Old 11-16-2009, 11:23 AM   #5
NAS
Human being with feelings
 
NAS's Avatar
 
Join Date: Dec 2007
Location: In church, burning it down
Posts: 1,345
Default

Crap on a crutch
Didn't notice this till now
Wooohooooo


NAS
__________________
Not Gods or Saints but HUMAN be
NAS is offline   Reply With Quote
Old 11-16-2009, 02:57 PM   #6
semiquaver
Human being with feelings
 
Join Date: Jun 2008
Posts: 4,923
Default

what NAS said! oh boy...
semiquaver is offline   Reply With Quote
Old 11-16-2009, 04:08 PM   #7
sinkmusic
Human being with feelings
 
sinkmusic's Avatar
 
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
Default

Liteon, this is a-ma-zing !
I installed fine, and could just create my first crappy JS (a simple sine osc, where the pitch is changed using a fader, and connected to an osc.
I could draw the interface as expected, and exported it in Reaper withouth any crash.
Thank you so much for that tool !
sinkmusic is offline   Reply With Quote
Old 11-16-2009, 04:25 PM   #8
dub3000
Human being with feelings
 
dub3000's Avatar
 
Join Date: Mar 2008
Location: Sydney, Australia
Posts: 3,955
Default

holy freaking crap this is cool. gonna check it out tonight!
dub3000 is offline   Reply With Quote
Old 11-16-2009, 04:30 PM   #9
MikeLacey
Human being with feelings
 
Join Date: Dec 2006
Location: UK
Posts: 789
Default

More than nice...
__________________
Mike Lacey, Leicestershire, UK
MikeLacey is offline   Reply With Quote
Old 11-16-2009, 04:32 PM   #10
Phisk
Human being with feelings
 
Join Date: Jul 2007
Posts: 276
Default

This is really useful!
Phisk is offline   Reply With Quote
Old 11-16-2009, 05:19 PM   #11
Fergo
Human being with feelings
 
Fergo's Avatar
 
Join Date: Mar 2009
Location: Curitiba - Brazil
Posts: 371
Default

Amazing liteon! Really awesome and very easy to use. Congratulations.

I did some tests and it worked flawlessly. I just missed a couple of things:
-Scrollbars inside the text editor
-Would be nice if could you double-click on a module in the list to add it, instead of selecting and clicking "Add Module" (or maybe drag and drop?)

Again, congratulations. I'm sure it will be a huge success.

Regards,
Fergo
__________________
My new application: Fergo JoystickMIDI - Send commands using your joystick/gamepad
Portfolio: www.fbirck.com
Homepage: www.fergonez.net - Programming stuff
Fergo is offline   Reply With Quote
Old 11-17-2009, 05:40 AM   #12
ZooTooK
Human being with feelings
 
Join Date: Jun 2007
Posts: 36
Default

Amazing!!!
ZooTooK is offline   Reply With Quote
Old 11-18-2009, 01:57 PM   #13
Jeffos
Mortal
 
Jeffos's Avatar
 
Join Date: Dec 2008
Location: France
Posts: 1,969
Default

Lieton, that's just impressive.
I'm not the typical target user but curious as i am, i tried. Nothing to really say except that it just works! as a js coder, the only minor things I see -but I'm sure you're already aware of that- is that sliders are not FX parameters (so no automation, etc..) and that a human pass on the generated code would be better.. but that's the deal, sure!
That's gonna make some noise. It just needs more modules and.. if you go also go into midi.. you'll simply sign the death of custom midi requests in the js subforum!
Jeffos is offline   Reply With Quote
Old 11-20-2009, 07:05 PM   #14
liteon
Human being with feelings
 
liteon's Avatar
 
Join Date: Apr 2008
Posts: 510
Default 0.3.1

thank you for the kind words and feedback,

i consider this more or less a "fiddle-with" project for numerous reason. for example my expectations for module contributions are in the 0-5 range ...so abandon-ware with v.1.0.0 is pretty much possible.

@ jeffos - yes, currently the js api does not allow fx parameter updates from the gfx section. i have no plans to add a lot of midi stuff as i'm a very simple midi user and never really found any special use of it (sorry there dave smith - great engineer). but if you or someone else has some cool modules ideas go ahead.

@ fergo - thank you very much for the suggestions fergo. implemented, see below.

0.3.1
- some bugfixes
- added vertical scrollbar to the code editor (the horizontal is slighly more complicated)
- added double click module add.
- added the following modules:
filter_hp6
mix_3x1
mix_1x3
midi_in - this is the midi keyboard input with velocity
float_to_freq - 0-1 range to 20-20000 hz range
_slider - js ui slider with 0-1 range

..+ fixes to older modules

some more example routings:


liteon is offline   Reply With Quote
Old 11-20-2009, 07:54 PM   #15
dub3000
Human being with feelings
 
dub3000's Avatar
 
Join Date: Mar 2008
Location: Sydney, Australia
Posts: 3,955
Default

hey liteon - still haven't had a chance to check this out (and won't for a few days) but i'm keen to contribute a few modules if i get a chance. looks good.
dub3000 is offline   Reply With Quote
Old 11-20-2009, 10:20 PM   #16
sinkmusic
Human being with feelings
 
sinkmusic's Avatar
 
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
Default

Thank you for the update, LiteOn.
Could we imagine, as Midi IN is implemented, to add (in a near future ?) a "Sysex out" module, so that we could create a "midi to sysex" controller for various hardware devices, in a graphic and easy way ?
sinkmusic is offline   Reply With Quote
Old 11-23-2009, 03:58 PM   #17
liteon
Human being with feelings
 
liteon's Avatar
 
Join Date: Apr 2008
Posts: 510
Default

Quote:
Originally Posted by dub3000 View Post
hey liteon - still haven't had a chance to check this out (and won't for a few days) but i'm keen to contribute a few modules if i get a chance. looks good.
cool, dub3000

Quote:
Originally Posted by sinkmusic View Post
Thank you for the update, LiteOn.
Could we imagine, as Midi IN is implemented, to add (in a near future ?) a "Sysex out" module, so that we could create a "midi to sysex" controller for various hardware devices, in a graphic and easy way ?
hey, i must admit that i don't have much of an idea about sysex other that reading an article(+short specification) about it. by looking at the js implementation of the message sent function, it appears that it is using a memory buffer. this could be an issue with jsfxgen modules in general, but not if the effect is only sysex control specific as i understand it. perhaps if you specify your demands of user interaction, maybe me or someone much more savvy can prepare a sysex control module and sysex control effect prototype example. note: it will most likely require module editing i.e. entering some hex values in there.

i also haven't forgotten your previous suggestion for an effect...multiband deeser. now that there is jsfxgen, things will gen much easier (and user friendly) for someone to make his own effect of such scale.
liteon is offline   Reply With Quote
Old 11-23-2009, 05:17 PM   #18
moliere
Human being with feelings
 
moliere's Avatar
 
Join Date: Mar 2007
Location: Wellington, New Zealand
Posts: 2,261
Default

I have a sysex controller set up in js for the Roland PG300.

Just some sliders that send a parameter message with a value embedded.

I've attached the file. This would be fantastic for sysex controllers as it autogenerates the GUI which bypasses the size limitation of the js window (and most sysex controllers will go over the limit, as does this one)

Maybe this can be useful.

*edit* http://forum.cockos.com/showpost.php...6&postcount=49

apparently I can't upload it twice.
moliere is offline   Reply With Quote
Old 11-24-2009, 10:24 AM   #19
plamuk
Human being with feelings
 
Join Date: Feb 2007
Posts: 3,221
Default

enormous news. i look forward to seeing what this can do for midi js in reaper
plamuk is offline   Reply With Quote
Old 11-24-2009, 10:29 AM   #20
Reflected
Human being with feelings
 
Reflected's Avatar
 
Join Date: Jul 2009
Posts: 3,294
Default

wow!!!
Nice work liteon!
Reflected is offline   Reply With Quote
Old 11-30-2009, 07:56 PM   #21
0=0
Human being with feelings
 
Join Date: Nov 2009
Location: Toronto
Posts: 102
Default

incredible! it's like Bidule/Reaktor in the reaper environment!

j

0=0
0=0 is offline   Reply With Quote
Old 12-01-2009, 08:59 PM   #22
liteon
Human being with feelings
 
liteon's Avatar
 
Join Date: Apr 2008
Posts: 510
Default 0.3.5



* updates:
Code:
0.3.2
- added support for sliderchange(index) function
- added automation support for gfx_slider

//the above update will allow automation updates from reaper to the
gfx_slider i.e. envelope controling the value and visual.
----
...
0.3.5
- added new set of modules including sysex, modulators and others.
(see docs for updated list)
- gfx_slider('s) now has a label - needs to be edited manually in the code
 (see instructions in code header)

//a total of 28 modules now
installation note: some old modules depreciated (or renamed/removed). best is to delete all bundled modules ([install dir]/modules) before installing this update.


---------
* sysex:

@ moliere: thank you very much for the example. i have implemented the sysex based on your source. you can do a couple of optimizations in there if you want. hex values in the buffer does not require |0 since they are integer and you can replace the floor(sliderx) with sliderx|0 instead, which will ease the cpu when a lot is happening.

----
how does it work in jsfxgen:

example routing:


simply insert a gfx_slider_midi (or ui slider). then edit the slider (header has instructions). set init value, minumim, maximum and label.
add a midi_sysex and edit it (header also has instructions). set the buf[x] values according to your desired sysex specifications.

add as many couples as you want, arrange gfx section, generate js.

[downsides of the gfx/module implementation]:

- the jesusonic api does not allow recording of automation via sliderchange(x). this means that when you move the gfx slider it won't record the changes to an automation lane, same does not apply when you move a ui slider.

- the sysex send function is using a set of values stored in a buffer -
buf[0], buf[1] etc. there is no way for jsfxgen to know what buffer values are stored in each midi_sysex module, so you should edit manually all midi_sysex modules and set the buffer initial values and lengths correctly so that the values does not overlap.

---
do not hesitate to post in here for any questions that you may have..

Last edited by liteon; 12-02-2009 at 05:23 PM.
liteon is offline   Reply With Quote
Old 12-01-2009, 09:01 PM   #23
moliere
Human being with feelings
 
moliere's Avatar
 
Join Date: Mar 2007
Location: Wellington, New Zealand
Posts: 2,261
Default

AWESOME! will have some fun tonight
moliere is offline   Reply With Quote
Old 12-02-2009, 01:27 AM   #24
MikeLacey
Human being with feelings
 
Join Date: Dec 2006
Location: UK
Posts: 789
Default

@liteon -- stunning stuff, and you seem to have caught people's collective imagination.
__________________
Mike Lacey, Leicestershire, UK
MikeLacey is offline   Reply With Quote
Old 12-03-2009, 01:42 AM   #25
moliere
Human being with feelings
 
moliere's Avatar
 
Join Date: Mar 2007
Location: Wellington, New Zealand
Posts: 2,261
Default

@liteon - I had a bit of a play, and there was a slight bug in the sysex module.

I've updated and attached. it wasn't passing the buffer length to the sysex call.

Works great now though! now comes the long tedious task of setting up all the sliders

Thanks so much for your work here. Hopefully in the future when the day job lets up I can contribute some modules.

Code:
// -----------------------
// midi_sysex
//
// sends sysex messages
//
// notes:
// - look at @init section
// - change the 'buf' value here depending on how many sysex modules
// you have and the length of the buffer. if this module is [0] then
// value for next module [1] should be:
// buf[1]=buf[0]+length[0] i.e. buf[1]=8
// - edit all messages buf[0], buf[1], and add/remove such
// - set the 'len' to the total number of messages
// -----------------------

//#mspr
//#inputs: value[block]
//#outputs:
//#declare: buf,len,oldvalue

//#mspr

//#mspr
@init
// ----- midi_sysex
buf=0;
len=8;
buf[0]=$x41;
buf[1]=$x36;
buf[2]=$x01;
buf[3]=$x23;
buf[4]=$x20;
buf[5]=$x01;
buf[6]=$x06;

//#mspr
@slider

//#mspr
@sample

//#mspr
@block
// ----- midi_sysex
(value!=oldvalue)?
(
  buf[7]=value|0;
  midisyx(0,buf,len);
  oldvalue=value;
);

//#mspr
@gfx

//#mspr
@serialize
Attached Files
File Type: txt midi_sysex.txt (929 Bytes, 564 views)

Last edited by moliere; 12-03-2009 at 01:58 AM.
moliere is offline   Reply With Quote
Old 12-03-2009, 02:51 AM   #26
liteon
Human being with feelings
 
liteon's Avatar
 
Join Date: Apr 2008
Posts: 510
Default

@moliere - 10x fixed.
as i can imagine it, a full sysex control setup, would require some work there. and its a custom job in a way..but perhaps some sort of a template with common synthesizer parameters + tutorial in the docs will ease things up for users to create their own control interface.

@mike - all ideas shall be assimilated for the benefits of the collective :borg: (or :korg: )
liteon is offline   Reply With Quote
Old 12-03-2009, 03:22 AM   #27
moliere
Human being with feelings
 
moliere's Avatar
 
Join Date: Mar 2007
Location: Wellington, New Zealand
Posts: 2,261
Default

seems to be a funny thing going on when generating JS from the gfx_slider_midi, it is changing gfx_drawchar($'h'); to gfx_drawchar($'_md[number]h'); //where [number] = the object number
and also on gfx_drawchar($'w') if I recall correctly.

I altered those manually in my fx after the fact.

otherwise, here's my first PG300 controller attempt! gave it a basic test, may have some things mucked up, but it seems to be spitting out the correct sysex.
Attached Files
File Type: zip pg300.zip (9.3 KB, 377 views)
moliere is offline   Reply With Quote
Old 12-03-2009, 07:18 AM   #28
amenbrother
Human being with feelings
 
amenbrother's Avatar
 
Join Date: May 2006
Posts: 143
Default

Quote:
Originally Posted by moliere View Post
seems to be a funny thing going on when generating JS from the gfx_slider_midi, it is changing gfx_drawchar($'h'); to gfx_drawchar($'_md[number]h'); //where [number] = the object number
and also on gfx_drawchar($'w') if I recall correctly.

I altered those manually in my fx after the fact.

otherwise, here's my first PG300 controller attempt! gave it a basic test, may have some things mucked up, but it seems to be spitting out the correct sysex.
Heroes!
Must try when I come home from work.
amenbrother is offline   Reply With Quote
Old 12-03-2009, 08:09 AM   #29
liteon
Human being with feelings
 
liteon's Avatar
 
Join Date: Apr 2008
Posts: 510
Default

Quote:
Originally Posted by moliere View Post
seems to be a funny thing going on when generating JS from the gfx_slider_midi, it is changing gfx_drawchar($'h'); to gfx_drawchar($'_md[number]h'); //where [number] = the object number
and also on gfx_drawchar($'w') if I recall correctly.

I altered those manually in my fx after the fact.

otherwise, here's my first PG300 controller attempt! gave it a basic test, may have some things mucked up, but it seems to be spitting out the correct sysex.
i'm happy its working ok for you.

just fixed that bug, it was due to the fact that word boundaries in a regular expression normally exclude quotes, so a char 'w' was also made module unique i.e. '_md0_w' if there is such declared variable.

this particular bit is now prettier:
Code:
// @ make all declared variables unique for this module
var ptrn:RegExp = new RegExp("(?=(([^']*?'[^']*?'[^']*)+|[^']*)$)(\\b)("+vars[k]+"){1}(\\b)","gi");
arstr = arstr.replace(ptrn,"_md"+modid+"_"+vars[k]);
regexp tend to have a similarity to "brainfuck"..

more lolz


-
liteon is offline   Reply With Quote
Old 12-03-2009, 10:12 AM   #30
liteon
Human being with feelings
 
liteon's Avatar
 
Join Date: Apr 2008
Posts: 510
Default 0.3.7

- fixed default values for gfx_slider*

@moliere - some of the sliders go out of range in the pg300.
i've tested with the most recent slider and there seems to be no problem. i'm constantly making updates and fixes (beta after all) and once a problem is fixed in a module, it has to be updated manually in older projects, since a module becomes part of a project once its inserted (i.e. independent of original source file)..
liteon is offline   Reply With Quote
Old 12-03-2009, 10:36 AM   #31
MikeLacey
Human being with feelings
 
Join Date: Dec 2006
Location: UK
Posts: 789
Default

"(?=(([^']*?'[^']*?'[^']*)+|[^']*)$)(\\b)("+vars[k]+"){1}(\\b)"

Hmm... [Mike blinks at screen, hard.]
__________________
Mike Lacey, Leicestershire, UK
MikeLacey is offline   Reply With Quote
Old 12-03-2009, 03:15 PM   #32
Fergo
Human being with feelings
 
Fergo's Avatar
 
Join Date: Mar 2009
Location: Curitiba - Brazil
Posts: 371
Default

Nice updates liteon. Congratulations.

Oh, imho the only thing worse to understand than regex have to be brainfuck

Fergo
__________________
My new application: Fergo JoystickMIDI - Send commands using your joystick/gamepad
Portfolio: www.fbirck.com
Homepage: www.fergonez.net - Programming stuff
Fergo is offline   Reply With Quote
Old 12-03-2009, 03:27 PM   #33
moliere
Human being with feelings
 
moliere's Avatar
 
Join Date: Mar 2007
Location: Wellington, New Zealand
Posts: 2,261
Default

ha, I love brainfuck. http://en.wikipedia.org/wiki/Whitesp...mming_language) whitespace is also very cool!

@liteon, I'll try and fix those out of range sliders when I get a chance. Just found the layout bit of your tool too! was a bit sleepy last night and just adjusted the y values by hand, cause I must not have read that bit in the thread

I haven't looked at the project format, is there a way to update this manually so I can just regen the JS and it will be correct? cause it would be cool to keep generating from the project file rather than editing the js manually. I plan on altering the layout so it is formatted like the actual pg300 (now that I've found the layout section)
moliere is offline   Reply With Quote
Old 12-05-2009, 05:28 AM   #34
liteon
Human being with feelings
 
liteon's Avatar
 
Join Date: Apr 2008
Posts: 510
Default

hey moliere,

the storage format (.jsfxgen) is binary,
but if you have the project file saved you can load it, edit any module in there and save/arrange/gen again.

here is the latest diff in the repository:
http://code.google.com/p/jsfxgen/sou...i.jsmod&old=26
you can also check for previous changes

- web based version to come..
- perhaps a gfx knob will be nice as well.
- contributing modules/ideas -> dev=happy panda
liteon is offline   Reply With Quote
Old 12-05-2009, 03:22 PM   #35
MikeLacey
Human being with feelings
 
Join Date: Dec 2006
Location: UK
Posts: 789
Default

How many modules are you up to now liteon?
__________________
Mike Lacey, Leicestershire, UK
MikeLacey is offline   Reply With Quote
Old 12-07-2009, 03:00 AM   #36
liteon
Human being with feelings
 
liteon's Avatar
 
Join Date: Apr 2008
Posts: 510
Default

Quote:
Originally Posted by MikeLacey View Post
How many modules are you up to now liteon?
29 - some of the basics are covered afaik. think, i'm going to download a synthmaker/synthedit demo to see what they have in there.
liteon is offline   Reply With Quote
Old 12-07-2009, 03:55 AM   #37
MikeLacey
Human being with feelings
 
Join Date: Dec 2006
Location: UK
Posts: 789
Default

I remember you saying you expected about 5 modules...
__________________
Mike Lacey, Leicestershire, UK
MikeLacey is offline   Reply With Quote
Old 12-07-2009, 05:56 AM   #38
NAS
Human being with feelings
 
NAS's Avatar
 
Join Date: Dec 2007
Location: In church, burning it down
Posts: 1,345
Default

Synthmkaer has hundreds and hundreds that will have no relevence at all
Same with Synthedit too really
They both have a huge selection of GUI related modules

I can list some stuff i would like to see but maybe JS isn't up to it yet
Hopefully Justin will move js forward a lot now to help out making this mega useful

NAS
__________________
Not Gods or Saints but HUMAN be
NAS is offline   Reply With Quote
Old 12-08-2009, 04:21 AM   #39
liteon
Human being with feelings
 
liteon's Avatar
 
Join Date: Apr 2008
Posts: 510
Default 0.3.8

added the web version:
http://jsfxgen.googlecode.com/svn/trunk/bin/index.html
+ some fixes in modules

its quite slow for no apparent reasons. the local version on the other hand has much better performance and also the project load/save functionality.
liteon is offline   Reply With Quote
Old 12-08-2009, 05:30 AM   #40
MikeLacey
Human being with feelings
 
Join Date: Dec 2006
Location: UK
Posts: 789
Default

This is irritatingly good.
__________________
Mike Lacey, Leicestershire, UK
MikeLacey is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 03:24 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.