electro-music.com   Dedicated to experimental electro-acoustic
and electronic music
 
    Front Page  |  Radio
 |  Media  |  Forum  |  Wiki  |  Links
Forum with support of Syndicator RSS
 FAQFAQ   CalendarCalendar   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   LinksLinks
 RegisterRegister   ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in  Chat RoomChat Room 
 Forum index » DIY Hardware and Software » ChucK programming language
Guitar Lab and Synth Lab
Post new topic   Reply to topic Moderators: Kassen
Page 1 of 1 [11 Posts]
View unread posts
View new posts in the last week
Mark the topic unread :: View previous topic :: View next topic

What do you think of Guitar Lab and Synth Lab?
They rock! Keep making me fun software like this.
100%
 100%  [ 2 ]
They're OK. I could take 'em or leave 'em.
0%
 0%  [ 0 ]
They suck! Go do something useful with your time!
0%
 0%  [ 0 ]
Total Votes : 2

Author Message
Inventor
Stream Operator


Joined: Oct 13, 2007
Posts: 6221
Location: near Austin, Tx, USA
Audio files: 267

PostPosted: Tue Mar 25, 2008 6:05 pm    Post subject: Guitar Lab and Synth Lab
Subject description: Source code and progress updates
Reply with quote  Mark this post and the followings unread

With help from Frostburn, I have managed to unify my two music laboratory programs, Guitar Lab and Synth Lab. Since they now work together I will be reporting progress updates and posting source code for either program in this combined electromusic.com thread.

You can run the two programs together on the ChucK miniAudicle and the output of Guitar Lab will get sent to Synth Lab for effects processing or other purposes. You can still run them separately if you want, though now they both require the file Communication.ck to run. There are three configurations:

1. ChucK up Communication.ck and then Guitar_Lab*.ck to run Guitar Lab by itself.

2. ChucK up Communication.ck and then Synth_Lab*.ck to run Synth Lab by itself.

2. ChucK up Communication.ck, then Guitar_Lab*.ck, then Synth_Lab*.ck to run them both together.

At the moment Guitar Lab is a bit of a CPU hog just by itself, and both of the programs combined are creating a total of 537 shreds. On my 3-year old 1.25 GHz G5 eMac things slow down quite a bit, but new computers are probably several times faster than that machine, so people with new computers should not have much trouble I suppose. I am putting Guitar Lab on a diet and exercise program to slim it down a bit, so look for the situation to get more manageable in the near future.

Also there are now so many windows that the clutter is getting out of hand, making it difficult to get to the window that you want at any given time. To deal with this I recommend using the Window pull-down menu of the ChucK miniAudicle to select your desired window. That works just fine and is plenty convenient.

I must also thank my net-buddy kijjaz for suggesting this Chuck Grand Unification Theory in another thread. Now our ChucK programs can interact and share audio easily, which will help us to work together more effectively as programmers and music enthusiasts. Wow.

Of course, it would be a cruel tease if I got you all exited about this improvement and didn't post the source code, so here it is. Please use this code for good and not evil, as it is powerful and dangerous!


Communication.ck
 Description:
A very simple and effective little communication bridge between Guitar Lab and Synth Lab. ChucK this one up first.

Download (listen)
 Filename:  Communication.ck
 Filesize:  375 Bytes
 Downloaded:  222 Time(s)


Guitar_Lab29.ck
 Description:
"Forget all about that macho stuff and learn how to play Guitar Lab"

Download (listen)
 Filename:  Guitar_Lab29.ck
 Filesize:  88.02 KB
 Downloaded:  219 Time(s)


Synth_Lab31.ck
 Description:
"Synth Lab: making quality music since, um, last week"

Download (listen)
 Filename:  Synth_Lab31.ck
 Filesize:  119.58 KB
 Downloaded:  233 Time(s)

Back to top
View user's profile Send private message Send e-mail
Inventor
Stream Operator


Joined: Oct 13, 2007
Posts: 6221
Location: near Austin, Tx, USA
Audio files: 267

PostPosted: Tue Mar 25, 2008 8:18 pm    Post subject: Reply with quote  Mark this post and the followings unread

Good news. I figured out how to significantly reduce the CPU burden of Guitar Lab. I tested it on the Boolean Sequencing logic matrix buttons and it worked. The idea is to remove sporked shreds that are not in use at the moment.

To accomplish this, I put a global two dimensional integer array variable at the top of the file to hold all the ID's of the button shreds, put a me.id () function call at the beginning of the button-watching function, and wrote sporking and removing functions that are called by the "play" button shred. Now the program starts up with the buttons functioning but when you press "play", all 96 of those shreds get removed by Machine.remove (int). When you press "stop", all the button watching shreds get shreduled up again. I didn't do this before because I was unfamiliar and didn't know how to get the shred ID's or how to use the Machine library functions. Live and learn, eh?

Unfortunately with this approach we do lose the capability of adjusting the matrix buttons while the music is playing, but that is a small price to pay to make the application become user friendly again. I can also do this trick with the instrument buttons and sliders, so hopefully the shred count will soon be a lot lower. Score one for ChucK again!
Back to top
View user's profile Send private message Send e-mail
Inventor
Stream Operator


Joined: Oct 13, 2007
Posts: 6221
Location: near Austin, Tx, USA
Audio files: 267

PostPosted: Wed Mar 26, 2008 6:30 pm    Post subject: Reply with quote  Mark this post and the followings unread

Just when you thought you'd downloaded the latest Guitar Lab, here's another one with one big fat improvement: it's lean and mean now. I optimized the shred sporking so that a minimum of shreds are spawned at any given time. Now it only has 37 shreds (down from 250 or so) when playing a single guitar, so it's way faster. When the play button is off, it does spork up 182 shreds, but that's when all the CPU intensive evaluation of the logic matrix is not occurring, so there's plenty of processing power to service the shreds.

I also went through the logic evaluation section and recoded the old clunky algorithm for efficiency, so that will help too. Plus I did lots of commenting and reorganizing in the function definition section so the code is much more readable if anyone bothers to look at it.

More good news is that I can do a similar thing to speed up Synth Lab so that they can run together properly on slower systems and you won't have to close down other applications while you run them. That will take some time, though. So update your Guitar Lab and you'll be cruising in style!


Guitar_Lab32.ck
 Description:
Ultra-slim Guitar Lab, now with fewer calories plus drastically lower CPU consumption!

Download (listen)
 Filename:  Guitar_Lab32.ck
 Filesize:  110.7 KB
 Downloaded:  199 Time(s)


_________________
"Let's make noise for peace." - Kijjaz
Back to top
View user's profile Send private message Send e-mail
Inventor
Stream Operator


Joined: Oct 13, 2007
Posts: 6221
Location: near Austin, Tx, USA
Audio files: 267

PostPosted: Thu Mar 27, 2008 6:55 am    Post subject: Reply with quote  Mark this post and the followings unread

Wish List and To Do list for Guitar Lab and Synth Lab

o Optimize Synth Lab shred sporking - top priority
o Add DigitalTape to Synth Lab with signal control interface
o Redo Guitar Lab user interface (reposition and resize MAUI thingies)
o Arbitrary Waveform Generator
o FFT/IFFT Interface
o FFT/IFFT Unrealizable filter(s)
o Ping/Pong Delay
o Morph Module (echo, reverb, and feedback)
o Guitar Thunder Module (plays thunder in respose to guitar input)
o Phase Detector (identifies and tracks peak frequencies)
o Phase Locked Loop
o Do something with moving MAUI objects

Above are some future improvements for my Lab programs. If you have any wish list items, you can post them here.

_________________
"Let's make noise for peace." - Kijjaz
Back to top
View user's profile Send private message Send e-mail
Inventor
Stream Operator


Joined: Oct 13, 2007
Posts: 6221
Location: near Austin, Tx, USA
Audio files: 267

PostPosted: Fri Mar 28, 2008 7:00 am    Post subject: Reply with quote  Mark this post and the followings unread

I just reduced the defaults on Synth Lab in the startup screen and now it only sporks 193 shreds. That's a lot more reasonable than 400 or so. I'd recommend running Synth Lab with only the pieces that you need instead of everything but the kitchen sink, and that will help with CPU consumption a lot.

I may further reduce the shred count with some optimizations as well, but that's a lot of work for little gain. We will see how it goes...

_________________
"Let's make noise for peace." - Kijjaz
Back to top
View user's profile Send private message Send e-mail
Inventor
Stream Operator


Joined: Oct 13, 2007
Posts: 6221
Location: near Austin, Tx, USA
Audio files: 267

PostPosted: Fri Mar 28, 2008 3:42 pm    Post subject: Reply with quote  Mark this post and the followings unread

Found a bug in Synth Lab today. I wasn't sizing matrices of ugens to their maximum but rather to their nominal values. This breaks the program if you increase any resource above the default value - major oops! I fixed it and it will roll out with the next release. So for now don't increase any resources above the default value.
_________________
"Let's make noise for peace." - Kijjaz
Back to top
View user's profile Send private message Send e-mail
Inventor
Stream Operator


Joined: Oct 13, 2007
Posts: 6221
Location: near Austin, Tx, USA
Audio files: 267

PostPosted: Mon Mar 31, 2008 2:10 am    Post subject: Reply with quote  Mark this post and the followings unread

Also on the to-do list:

o Make keyboard interface authentic
o Find Jammer keyboard layout
o Add Guitar Thunderstorm module with rain & thunder
o Put both programs into a big class with "in" and "out" nodes

_________________
"Let's make noise for peace." - Kijjaz
Back to top
View user's profile Send private message Send e-mail
Inventor
Stream Operator


Joined: Oct 13, 2007
Posts: 6221
Location: near Austin, Tx, USA
Audio files: 267

PostPosted: Mon Mar 31, 2008 2:12 am    Post subject: Reply with quote  Mark this post and the followings unread

o Fix LiSa multiple voices feature (do not disengage play on up of play button).
_________________
"Let's make noise for peace." - Kijjaz
Back to top
View user's profile Send private message Send e-mail
NeKro_Phyl



Joined: Jan 29, 2008
Posts: 11
Location: Berlin

PostPosted: Wed Apr 16, 2008 2:36 pm    Post subject: Reply with quote  Mark this post and the followings unread

Hi! Any news on the Lab-Front?
Back to top
View user's profile Send private message
Inventor
Stream Operator


Joined: Oct 13, 2007
Posts: 6221
Location: near Austin, Tx, USA
Audio files: 267

PostPosted: Wed Apr 16, 2008 2:50 pm    Post subject: Reply with quote  Mark this post and the followings unread

NeKro_Phyl wrote:
Hi! Any news on the Lab-Front?


Hi NeKro-Phyl! I have been taking a break from the Labs as I have been totally fascinated with my guitar project. I have discovered a second bug, which is that Once you have Guitar Lab playing into Synth Lab, if you stop Guitar Lab then it won't start up again. This bug has not been fixed yet.

Also the new LiSa module is hopelessly broken and I'm planning to redo it completely soon. Plus the bug of exceeding array size limits when selecting start-up resources greater than defaults has been fixed.

Also I want to set up the Communication module so it auto-launches Guitar Lab and Synth Lab based on a menu selection as the current interface is a bit klunky.

So I was just waiting for inspiration to clean up a few things and then I'll make a release. Fortunately my car is fixed now, so I can once again go out for coffee, which will in turn motivate me to spruce up the Labs.

Thanks for asking, and I hope you're enjoying the Labs!

_________________
"Let's make noise for peace." - Kijjaz
Back to top
View user's profile Send private message Send e-mail
Inventor
Stream Operator


Joined: Oct 13, 2007
Posts: 6221
Location: near Austin, Tx, USA
Audio files: 267

PostPosted: Thu Apr 17, 2008 11:53 am    Post subject: Reply with quote  Mark this post and the followings unread

I decided to invest a little time into Guitar Lab and Synth Lab today, and it was productive. I combined both of them into one single file called "ChucK_Lab1.ck". It's a monster at over 7,000 lines of code, and it runs both Guitar Lab and Synth Lab. Later I plan to add a pop-up window that allows you to select one or the other.

I fixed the bug where you could only use the Guitar Lab play button once, it was a sneaky little hard to find mistake, but I eventually found it. The only thing currently broken is the LiSa module, which I will fix at some point.

So NeKro-Phyl, you are my most vocal customer, have at it and let me know what you think - I love feedback! Everyone else enjoy as well. Cheers!


ChucK_Lab1.ck
 Description:
Guitar Lab + Synth Lab = ChucK Lab! Grab the latest now!

Download (listen)
 Filename:  ChucK_Lab1.ck
 Filesize:  247.35 KB
 Downloaded:  208 Time(s)


_________________
"Let's make noise for peace." - Kijjaz
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic Moderators: Kassen
Page 1 of 1 [11 Posts]
View unread posts
View new posts in the last week
Mark the topic unread :: View previous topic :: View next topic
 Forum index » DIY Hardware and Software » ChucK programming language
Jump to:  

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Forum with support of Syndicator RSS
Powered by phpBB © 2001, 2005 phpBB Group
Copyright © 2003 through 2009 by electro-music.com - Conditions Of Use