COCKOS
CONFEDERATED FORUMS
Cockos : REAPER : NINJAM : Forums
Forum Home : Register : FAQ : Members List : Search :
Old 08-23-2017, 05:55 AM   #1
nosonic
Human being with feelings
 
Join Date: Aug 2017
Posts: 6
Default Some more iPlug examples?

Hi!

here is a new one :-) I've just started with iPlug a couple of days ago using wdl-ol repo. It worked fine so far, at least I'm able to build examples and now I'm in process of checking these reading Audio Programming book in parallel...

I have a simple kind of sampler plugin in my mind to start with and looking for some more iplug examples:

a) an "audio player" class as well some visualisation component that shows you something similar you see on soundcloud.com.
b) peak/rms/(lufs) meters. Here I mean visual as well non visual libraries/classes.
c) spectrum analyser
d) filters
Is something similar existing already for iplug?

And more general:
Can you suggest a good "general" c++ audio library that everybody is using here? :-)
Are there any other cool examples or reposistories one must check?

I'm still very unsure if I want to go a JUCE way, despite quite high license costs. But I wanted to give a good try with iPlug first!

Thanks!
Alex
nosonic is offline   Reply With Quote
Old 08-24-2017, 09:40 AM   #2
bozmillar
Human being with feelings
 
bozmillar's Avatar
 
Join Date: Sep 2009
Posts: 576
Default

I remember STK being a good resource when I was starting out. https://ccrma.stanford.edu/software/stk/

I personally don't like using other people's libraries because I like my code to all be formatted in a way that I can read and use it without having to look stuff up, and it's easier to make things work they way you want them to work when it's your own code. It just takes time to build up your own library of code. But something like STK is a really good place to start.

For filters, this is a great place to start: http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt

Here's another good resource for code. It just has a ton of user submitted algorithms. Some can be useful, some not, but it's a good place to get ideas.

http://www.musicdsp.org/archive.php?classid=3

As far as going JUCE, it's not a terrible idea. It has a much larger user base, and the people running it have a financial interest in keeping it current. You can get JUCE and use it for free as long as you release your code. If you are going commercial, that $1000 licensing fee will be the least of your worries. I would happily pay $1000 for wdl if I knew it was going to help keep it alive and growing. The fact that wdl works as well as it does is pretty amazing considering how few people are making it happen.
__________________
http://www.bozdigitallabs.com
bozmillar is offline   Reply With Quote
Old 08-24-2017, 09:49 AM   #3
Youlean
Human being with feelings
 
Youlean's Avatar
 
Join Date: May 2015
Location: Serbia
Posts: 537
Default

Quote:
Originally Posted by bozmillar View Post
The fact that wdl works as well as it does is pretty amazing considering how few people are making it happen.
We will make WDL/IPlug alive for long into a future. The thing is that WDL is much easier to work than JUCE, or at least for me. I tried JUCE when I was starting and I couldn't understand a thing, so then I tried WDL-OL and I made my first plugin in one week. I got JUCE licence after winning the KVR developer challenge but I didn't even bother to install it on my PC...
__________________
Website | Facebook Page | IPlug-Youlean
Youlean is offline   Reply With Quote
Old 08-24-2017, 11:22 AM   #4
bozmillar
Human being with feelings
 
bozmillar's Avatar
 
Join Date: Sep 2009
Posts: 576
Default

Quote:
Originally Posted by Youlean View Post
We will make WDL/IPlug alive for long into a future. The thing is that WDL is much easier to work than JUCE, or at least for me.
My experience is the same. I've tried switching to JUCE a number of times, and I always come back to wdl. I just can't tell at this point if it's because I'm so comfortable with wdl or if it really that much easier to use.

I just worry a little bit that being completely free and open source and only really being held up by a couple of people, that when one person gets burned out, it can fall to dust quickly. I'd be completely happy if wdl decided to go the JUCE route and charge for pro licenses, in exchange for paying people to keep it running smoothly and adding features. That money could go to people creating more example projects, keeping things up to date, and all sorts of stuff.

It's not that wdl is doing a bad job of it now, it's just that it could collapse at a minute's notice due to just a couple people changing their focus. Also, it would help ease the guilt I feel every once in a while for being able to support a family off of someone else's hard work.
__________________
http://www.bozdigitallabs.com
bozmillar is offline   Reply With Quote
Old 08-24-2017, 12:02 PM   #5
Youlean
Human being with feelings
 
Youlean's Avatar
 
Join Date: May 2015
Location: Serbia
Posts: 537
Default

Quote:
Originally Posted by bozmillar View Post
My experience is the same. I've tried switching to JUCE a number of times, and I always come back to wdl. I just can't tell at this point if it's because I'm so comfortable with wdl or if it really that much easier to use.

I just worry a little bit that being completely free and open source and only really being held up by a couple of people, that when one person gets burned out, it can fall to dust quickly. I'd be completely happy if wdl decided to go the JUCE route and charge for pro licenses, in exchange for paying people to keep it running smoothly and adding features. That money could go to people creating more example projects, keeping things up to date, and all sorts of stuff.

It's not that wdl is doing a bad job of it now, it's just that it could collapse at a minute's notice due to just a couple people changing their focus. Also, it would help ease the guilt I feel every once in a while for being able to support a family off of someone else's hard work.
Indeed, WDL is very fragile, and this is the biggest disadvantage of it. Not sure what is the best strategy for keeping WDL alive. One of the most important thing is to have as much people on board as possible. That would benefit us all. I have plans how to make this happen, but we will see...

The biggest problem with WDL is to make people contribute to it. I have spent more than year implementing proper cairo support, gui resizing and live edit and for that time I could make couple of plugins instead, but I have vision how my plugins should work and that's why I decided to do all this things. Now, income for contributing to framework will encourage more people to contribute to it but how should this be handled? Who decides who did more work? This thing that I worked was nothing compared to years of Olis addons and not to mention Cockos... Only thing that comes to my mind is to people donate for framework that they are using. Or maybe to make team that will work on WDL, but then this team will need to be payed...
__________________
Website | Facebook Page | IPlug-Youlean
Youlean is offline   Reply With Quote
Old 08-24-2017, 10:43 PM   #6
nosonic
Human being with feelings
 
Join Date: Aug 2017
Posts: 6
Default

@bozmillar thanks a lot! :-)
Any chance you could point me to some routines or maybe ready classes for painting waveforms? Actually I'm looking for something to render a raw preview of a wav/mp3 files acound 5-10 mins long. So I can play it and show current position later.

Still playing with both iplug and juce. My first impression juce is helping you here and there. It is well engineered. For iplug you have to do almost everything from scratch. On the other hand, if you have all your stuff in place you don't need all these dependencies. You're not a hostage of a framework anymore ))).

So currently I would prefer to donate for iplug, but we will see...

PS:
yesterday I checked Youlean's repo. Had no problems at all building examples on Sierra with Xcode 8.

Last edited by nosonic; 08-25-2017 at 12:47 AM.
nosonic is offline   Reply With Quote
Old 08-24-2017, 11:07 PM   #7
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: Holland
Posts: 2,834
Default

Quote:
Originally Posted by Youlean View Post
Indeed, WDL is very fragile, and this is the biggest disadvantage of it.
Is it, really? Zlib in being maintained by a single person (Mark Adler), and almost every piece of software I know (including IPlug, your internet router, etc.) depends on it. I think this is just how open-source software works. And with Git in a way we are all maintainers (of IPlug, zlib, etc.), right?

BTW, I also doubt that this is different for JUCE (I'd say its development depends largely on Jules Storer, and not so much on ROLI).
Tale is offline   Reply With Quote
Old 08-24-2017, 11:52 PM   #8
Anomaly
Human being with feelings
 
Anomaly's Avatar
 
Join Date: Sep 2007
Posts: 636
Default

Perhaps one thing that bothers me with the current state of WDL/IPlug is that there are number of highly talented people who make their own forks instead of joining their efforts to maintain one uber branch. I believe that would give the best benefits for whole user base. Also, it would be easier for more people to join in.
The whole weight of development would not fall entirely on one persons shoulders, but instead, everyone could do their contribution in capacity best suited for them.

Youlean, Tale, Oli, have you considered that?
__________________
___________________________
Sonic Anomaly | free JSFX & VST Plugins
Anomaly is offline   Reply With Quote
Old 08-25-2017, 01:02 AM   #9
Youlean
Human being with feelings
 
Youlean's Avatar
 
Join Date: May 2015
Location: Serbia
Posts: 537
Default

Quote:
Originally Posted by Tale View Post
Is it, really? Zlib in being maintained by a single person (Mark Adler), and almost every piece of software I know (including IPlug, your internet router, etc.) depends on it. I think this is just how open-source software works. And with Git in a way we are all maintainers (of IPlug, zlib, etc.), right?

BTW, I also doubt that this is different for JUCE (I'd say its development depends largely on Jules Storer, and not so much on ROLI).
Yes, but the huge difference is if something broke with Zlib there will be gazillion people to help Mark, and if Apple broke something with their AU format for example and couple of people that are using WDL don't know how to fix that it is game over, or it will take much longer to fix the problem...
__________________
Website | Facebook Page | IPlug-Youlean
Youlean is offline   Reply With Quote
Old 08-25-2017, 05:06 AM   #10
Bobflip
Human being with feelings
 
Join Date: Nov 2016
Posts: 149
Default

Quote:
Originally Posted by Anomaly View Post
Perhaps one thing that bothers me with the current state of WDL/IPlug is that there are number of highly talented people who make their own forks instead of joining their efforts to maintain one uber branch. I believe that would give the best benefits for whole user base. Also, it would be easier for more people to join in.
The whole weight of development would not fall entirely on one persons shoulders, but instead, everyone could do their contribution in capacity best suited for them.

Youlean, Tale, Oli, have you considered that?
I wonder about this as well. I started out with the WDL-OL fork as per the Martin Finke tutorial, then a couple of months later moved to WDL-Youlean for the Cairo support. I still hop back to WDL-OL to reference the examples from time to time though.

I also wonder if it's worth updating Martin's tutorial at some point. Not sure if he's still on the scene, but that's an excellent resource for people to get started, however a few bits and pieces aren't the way things are done any more.

Either way, I think WDL/IPlug is an excellent resource to have available, and am really grateful for all the hard work everyone's put in to their own branches! I remember looking into writing plugins 10 years ago, and it was a lot harder then, hahahah!
Bobflip is offline   Reply With Quote
Old 08-25-2017, 09:46 AM   #11
earlevel
Human being with feelings
 
Join Date: Dec 2015
Posts: 254
Default

Quote:
Originally Posted by Anomaly View Post
Perhaps one thing that bothers me with the current state of WDL/IPlug is that there are number of highly talented people who make their own forks instead of joining their efforts to maintain one uber branch. I believe that would give the best benefits for whole user base. Also, it would be easier for more people to join in.
The whole weight of development would not fall entirely on one persons shoulders, but instead, everyone could do their contribution in capacity best suited for them.

Youlean, Tale, Oli, have you considered that?
I'm not sure if you speak from experience, in which case more detailed suggestions are welcome, or don't understand the magnitude of what you're asking. There are a lot of details—upkeep of support for the different plugin formats, development system and OS compatibilities, breadth of features (UI, audio, midi, etc.). It would be best if there were group design goals, and that requires commitment, organization, and agreement (probably easier if there is an original developer involved that owns the "vision", but the original developer was Cockos). Or it can be done with pull requests to a single developer, but that's the way things have run so far.

Ultimately, people are using it and forking it because they want to get plugins done, not develop a framework. I didn't want to flesh out the AAX support, I needed it. (Honestly, I would have gone with JUCE if I had known up front that AAX didn't work. this is a commercial venture, and the side development was a schedule hit.) Youlean needed resizing. Tale needed other things, but AAX wasn't one of them, so his branch doesn't work for me, etc.

I issued pull requests for my AAX changes, and some other things like arbitrary parameter control curves, to wdl-ol. It still means that Oli has to take time to see what they do, hopefully determine that that they doesn't break something else, have the design sense that he deems fit, and merge it. But some of my changes require c++11, and that's another decision with impact. I developed AAX because I needed it—now Oli needs to burn his time to implement it, even though he doesn't need it.

Anyway, not belittling your comment—it's a good point to bring up—I'm just not completely sure what it is asking for.
earlevel is online now   Reply With Quote
Old 08-25-2017, 10:52 AM   #12
Anomaly
Human being with feelings
 
Anomaly's Avatar
 
Join Date: Sep 2007
Posts: 636
Default

Quote:
Originally Posted by earlevel View Post
I'm not sure if you speak from experience, in which case more detailed suggestions are welcome, or don't understand the magnitude of what you're asking...
Certainly not from experience. But it was an ideal, from my (the user) perspective at least. I appreciate that people who make their own forks may see it differently (for a reason) and I respect that. So unfortunately I can't give any educated suggestions how to make it all work. You are certainly right about the tedious task of maintaining the integrity with multiple commits.
__________________
___________________________
Sonic Anomaly | free JSFX & VST Plugins
Anomaly is offline   Reply With Quote
Old 08-25-2017, 11:35 AM   #13
Youlean
Human being with feelings
 
Youlean's Avatar
 
Join Date: May 2015
Location: Serbia
Posts: 537
Default

Indeed, there should be one leader that should decide the way it should new features be implemented and the rest should contribute based on that. This in our case will be difficult to implement since nobody here want to just develop the framework and we all have specific needs.

I am really happy that WDL/IPlug have contributors like earlevel, Tale and Oli (sorry if I missed someone).

I think the best strategy for us will be:

-Multiple people having their branches and contribute to it.
-People can pick what they need from other branches.
-There should be one guy that glues all contributions together.

What I will try to do in the future with my branch:

-Get more users to it by doing various things like implementing features that people needs.
-Looking at other branches and picking what I think I need.
-Looking a way to earn some money for maintaining branch via donations. (this was planned long time ago before this thread)
-Develop branch in a way I think it will be the best for my plugins.

The key point is as long as we can pick features one from another it doesn't matter if someone is having all users and getting all donations because we all get what we need, a better framework that we can use to build the plugins.

I am really interested to hear what you need for making the plugins. This is especially pointed to people like Boz, LVC-Audio, earlevel etc. Why not release your version of framework and let me integrate that in my framework so you can use my features too?

You can post here your needs: https://forum.cockos.com/showthread.php?t=195213

As goes for earlevel, I am very interested in AAX, so I will definitely look at your branch.
__________________
Website | Facebook Page | IPlug-Youlean
Youlean is offline   Reply With Quote
Old 08-25-2017, 02:48 PM   #14
earlevel
Human being with feelings
 
Join Date: Dec 2015
Posts: 254
Default

Quote:
Originally Posted by Anomaly View Post
Certainly not from experience. But it was an ideal, from my (the user) perspective at least. I appreciate that people who make their own forks may see it differently (for a reason) and I respect that. So unfortunately I can't give any educated suggestions how to make it all work. You are certainly right about the tedious task of maintaining the integrity with multiple commits.
OK, thanks for the clarification. Here's a somewhat arbitrary article on collaboration with Githib:

http://www.ericbmerritt.com/2012/11/...th-github.html

As you can seen, forks are a normal way of developing with multiple contributors. A developer then issues pull requests for key elements. The person controlling the main repository merges those changes in. So, we're pretty much doing that now, but maybe need to up the level of organization and activity. I have issued pull requests for my changes, and I know Oli is looking at them as he has time.

That is, roughly speaking, it's already going the right way. But it all runs a lot easier if the main repository and the forks track fairly well. If the main repository and the development forks of others are going their own ways for a long time, it's gets harder to merge changes, and is more difficult if developers don't plan for the collaboration and make logical and bit-size commits and group them into pull requests. Of crows, it helps efficiency if you don't have people implementing the same functions at the same time, different ways. So, yeah, "organization".
earlevel is online now   Reply With Quote
Old 08-25-2017, 02:55 PM   #15
earlevel
Human being with feelings
 
Join Date: Dec 2015
Posts: 254
Default

Quote:
Originally Posted by Youlean View Post
As goes for earlevel, I am very interested in AAX, so I will definitely look at your branch.
I tried to be fairly organized in my commits and minimize impact. I'll have to double check when I get a chance to make sure I maintained that, and also what changes happened after I submitted a pull request to Oli's branch. (Also, mine is based on an older version of wdl-ol and haven't brought it up to date—plugin dev has been a weekend project for me the past couple of years, so my development time has been spread over a long calendar time.)
earlevel is online now   Reply With Quote
Old 08-25-2017, 03:04 PM   #16
Youlean
Human being with feelings
 
Youlean's Avatar
 
Join Date: May 2015
Location: Serbia
Posts: 537
Default

Quote:
Originally Posted by earlevel View Post
I tried to be fairly organized in my commits and minimize impact. I'll have to double check when I get a chance to make sure I maintained that, and also what changes happened after I submitted a pull request to Oli's branch. (Also, mine is based on an older version of wdl-ol and haven't brought it up to date—plugin dev has been a weekend project for me the past couple of years, so my development time has been spread over a long calendar time.)
No problem, I will go through out code and see what is going on. I wasn't really organized with my branch so Oli will have hard time understanding in... Thanks for your commitments BTW!
__________________
Website | Facebook Page | IPlug-Youlean
Youlean is offline   Reply With Quote
Old 08-25-2017, 05:17 PM   #17
olilarkin
Human being with feelings
 
olilarkin's Avatar
 
Join Date: Apr 2009
Location: Huddersfield, UK
Posts: 1,016
Default

It's great to see a bit of activity on this forum again! Those people who haven't been around these parts for very long (gulp 6 years!) won't remember wdl-ce https://github.com/audio-plugins/wdl-ce

Originally I thought that It was better to cooperate on a peer-reviewed WDL community edition because I wasn't so confident in my C++ skills, but It was very slow progress and frustrating. At that time I was able to dedicate a lot of time to it and wanted to get making cool stuff asap. In the end I decided to be a dictator and just do my own version so I just went for it. I learnt a lot of stuff, but with hindsight the cost of the juce license wasn't so bad at all. At that stage Juce was not so appealing and the possibility of "owning" my own framework with no cost, and being able to fix whatever bug was a appealing. Still holds true, even though these days Juice Is extremely cool & appealing :-)

Nevertheless it's good to have options! In fact the other day I made my first Iplug-youlean plugin. I was able to port a max msp object to a plug-in in a very short amount of time, Since the max jgraphics api is basically cairo.
__________________
VirtualCZ | pMix | Endless Series | WDL-OL | Linkedin | Facebook
Available for Audio Dev tuition via Skype (IPlug/JUCE/C++)
olilarkin is offline   Reply With Quote
Old 08-26-2017, 01:03 AM   #18
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: Holland
Posts: 2,834
Default

Quote:
Originally Posted by Anomaly View Post
Youlean, Tale, Oli, have you considered that?
Yeah, we did, and I for one have always rejected it. The reason is that I would much more like to cherry-pick from someone's IPlug repository that he actually uses for his plug-ins, then to have a version that might be noob-friendly, but that no one really uses in practice.

Another problem is that I don't think we agree on what direction IPlug should go in (remove LICE? no way!). But because we all use Git (right?), I don't see a problem with lots of different but related IPlug repositories, all going in different directions.
Tale is offline   Reply With Quote
Old 08-26-2017, 05:34 AM   #19
Youlean
Human being with feelings
 
Youlean's Avatar
 
Join Date: May 2015
Location: Serbia
Posts: 537
Default

Quote:
Originally Posted by Tale View Post
Yeah, we did, and I for one have always rejected it. The reason is that I would much more like to cherry-pick from someone's IPlug repository that he actually uses for his plug-ins, then to have a version that might be noob-friendly, but that no one really uses in practice.

Another problem is that I don't think we agree on what direction IPlug should go in (remove LICE? no way!). But because we all use Git (right?), I don't see a problem with lots of different but related IPlug repositories, all going in different directions.
Indeed, we might disagree on IPlug development direction but that is fine as long as we have separate repos.

BTW, I am interested why you think LICE should not be removed?
__________________
Website | Facebook Page | IPlug-Youlean
Youlean is offline   Reply With Quote
Old 08-26-2017, 05:41 AM   #20
Youlean
Human being with feelings
 
Youlean's Avatar
 
Join Date: May 2015
Location: Serbia
Posts: 537
Default

Quote:
Originally Posted by olilarkin View Post
Nevertheless it's good to have options! In fact the other day I made my first Iplug-youlean plugin. I was able to port a max msp object to a plug-in in a very short amount of time, Since the max jgraphics api is basically cairo.
There is also this repo on github to convert SVG in cairo code. So you can basically draw whatever you want in Incscape and convert that to cairo code...
https://github.com/akrinke/svg2cairo

Cairo is very powerful, well documented and easy to code IMO.

Anyways, I will try to add in the future librsvg support so we can use SVGs like bitmaps in WDL-OL now.
__________________
Website | Facebook Page | IPlug-Youlean
Youlean is offline   Reply With Quote
Old 08-27-2017, 03:21 AM   #21
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: Holland
Posts: 2,834
Default

Quote:
Originally Posted by Youlean View Post
BTW, I am interested why you think LICE should not be removed?
Well, because I use that to draw stuff, doh!

But seriously:

a) I wouldn't want to rewrite all LICE controls I already have.
b) It's easy to use (for me, YMMV).
c) It seems reasonable efficient, giving reasonable quality.
d) LICE is pretty light-weight.

Having more options (like Cairo) is nice to those who want them, but I wouldn't remove LICE.

However, if your goal is to totally redo IPlug, then you might as well remove WDL entirely, and use STL instead, as most programmers seem to favor C++ modernisms these days. Note again that I wouldn't do that, I would prefer WDL over STL almost any day (especially for a DSP stuff).
Tale is offline   Reply With Quote
Old 08-27-2017, 05:05 AM   #22
Youlean
Human being with feelings
 
Youlean's Avatar
 
Join Date: May 2015
Location: Serbia
Posts: 537
Default

Quote:
Originally Posted by Tale View Post
Well, because I use that to draw stuff, doh!

But seriously:

a) I wouldn't want to rewrite all LICE controls I already have.
b) It's easy to use (for me, YMMV).
c) It seems reasonable efficient, giving reasonable quality.
d) LICE is pretty light-weight.

Having more options (like Cairo) is nice to those who want them, but I wouldn't remove LICE.

However, if your goal is to totally redo IPlug, then you might as well remove WDL entirely, and use STL instead, as most programmers seem to favor C++ modernisms these days. Note again that I wouldn't do that, I would prefer WDL over STL almost any day (especially for a DSP stuff).
a) I was thinking about that. It wouldn't be that hard to make the wrapper for LICE. I indeed might remove WDL entirely, but this won't happen in the near future. My goal in not necessary to redo IPlug but to add support for other platforms too like mobile and if this means removing WDL so be it.
b, c, d) Indeed!
__________________
Website | Facebook Page | IPlug-Youlean
Youlean is offline   Reply With Quote
Old 08-29-2017, 06:08 AM   #23
olilarkin
Human being with feelings
 
olilarkin's Avatar
 
Join Date: Apr 2009
Location: Huddersfield, UK
Posts: 1,016
Default

originally there was IGraphics and IGraphicsLice. In my IPlug2 (bit of a dead end i think) i separated the GUI from DSP/Controller part. One of these directions could be good... IGraphicsCairo etc, but i think it is important to work out how this all behaves with HiDPI
__________________
VirtualCZ | pMix | Endless Series | WDL-OL | Linkedin | Facebook
Available for Audio Dev tuition via Skype (IPlug/JUCE/C++)
olilarkin is offline   Reply With Quote
Old 08-29-2017, 06:53 AM   #24
Youlean
Human being with feelings
 
Youlean's Avatar
 
Join Date: May 2015
Location: Serbia
Posts: 537
Default

Quote:
Originally Posted by olilarkin View Post
originally there was IGraphics and IGraphicsLice. In my IPlug2 (bit of a dead end i think) i separated the GUI from DSP/Controller part. One of these directions could be good... IGraphicsCairo etc, but i think it is important to work out how this all behaves with HiDPI
You mean to have IGraphicsLice and IGraphicsCairo? This might work but it will be hard to support since we will need IGraphisWinLice etc. too and there is too much work that is not worth the effort IMO. It would be easier to make app/script that will convert lice to cairo from the source files...

To take full advantage with cairo we need to to following:
Create and use openGL surface, alternatively use native win mac surface directly. This will make drawing performance much better.
__________________
Website | Facebook Page | IPlug-Youlean
Youlean 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 02:26 AM.


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