COCKOS
CONFEDERATED FORUMS
Cockos : REAPER : NINJAM : Forums
Forum Home : Register : FAQ : Members List : Search :
Old 05-28-2006, 02:25 PM   #1
tanstaafl
Human being with feelings
 
Join Date: Apr 2006
Posts: 3
Default GSoC: Server-side mixing

Hi

I'm one of the Summer of Code students for ninjam with the intention to implement Serverside mixing and I see this post as the real start of the project . so far I has mostly looked at the source and tried figuring out what changes are needed to implement serverside mixing.

Although the main effort will lie in the implementation of server side mixing, I will also try to enhance ninjams voting system both by making it possible to kick users and change some mixing parameters.

I plan to start with the coding of the voting system ASAP, since it is a simpler project and will hopefully make me more acquaintance with ninjams source, and I would really appreciate it if some more seasoned ninjam users could comment on how they would like this to work. Right now I'm planning to do something like this:
  • Every user has one vote (maybe changeable from the config so that only registered users may vote)
  • /vote kick <user> Gives user <user> one kick vote
  • When some on issues an kick vote all users gets an message like user <user> has gain an kickvote
  • If the number of votes for one user exceeds a user configurable threshold (default 50%+1) the user is kicked
    out

Some people has proposed the idea that when an kickvote is issued all users on the channel (except the one being voted of) would get some kind of dialog where they can answer yes/no an if more than the threshold answer yes the user is kicked.

Which of these would be the preferred? (each user issues his own kickvotes, or one issues the kickvote all other answers yes/no).

The change in mixing parameters will be implemented later when the server side mixing is in place, which I will start on as soon as the votekick is in place.

If someone would like to reach me please feel free to send me an mail at andreas.burman<at>gmail.com or msg me at the ninjam irc channel (same nick as here).

Since ninjam doesn't seem to use cvs/svn I guess it is best if I manage my own downloads for the time being.
These downloads will be updated as often as possible.

Downloads:

Server

Linux: N/A
Windows: N/A
Source: N/A
Patch: N/A
Client

Linux: N/A
Windows: N/A
Source: N/A
Patch: N/A
__________________
To steal ideas from one person is plagiarism, to steal from many is research.
tanstaafl is offline   Reply With Quote
Old 06-03-2006, 05:39 PM   #2
johnny
Human being with feelings
 
Join Date: Apr 2006
Location: Serbia and Montenegro
Posts: 7
Default

First, congratulations for the success at SoC. I also applied, but wasn't accepted. Maybe they thought I'm too ambitious because I applied both for Qt client and for arranging the voting system and preparing all for server-side mixing (which I think should be trivial when administrative things are well-planned). Whatever, as long as I can see, lots of my ideas will be implemented by you. Well, good luck.
Since I'm not on Google's SoC I'm on my own summer of code, I have some projects of my own. So no code from me so far...

I would like to throw in some ideas now I thought about, you should maybe consider some of them:

At first, I think KICK shouldn't be the only voting command, maybe sometimes MUTE is enough, KICK is too harsh. Also, is it really needed to constantly kick annoying users? Maybe some kind of BAN should exist, at least for few hours/days.


If you plan to achieve the point when server-side mixing can be usefull, you must pay attention to the commands for mixing. They can be issued also like chat-line commands (by privileged users, like producers), and should concern correcting the mixing volume, and muting.

Who can be this privileged user? Maybe you can use this forum's user database? Some server-side interface for that must exist anyway. What if nobody on the channel is a privileged user, which is very possible? Should users correct their own levels (anarchy), or should someone gain temporary privileges? My choice is temporary-privileged user: maybe the "oldest" on the channel, maybe the user who spent the most time jamming, or maybe even voting for that. Choice should be made carefully, because there are many important security issues.


You should pay attention to this topic, also:
http://www.cockos.com/forum/showthread.php?t=708
johnny is offline   Reply With Quote
Old 06-03-2006, 06:30 PM   #3
FingerSoup
Human being with feelings
 
Join Date: Feb 2006
Posts: 65
Default

regarding the voting system - will you be planning a non-message based vote system? Although I'm adept at typing !vote bpm 120, there have been several times that I've tried to vote a new BPM or BPI to match more what people are playing at, in an attempt to keep everyone in sync. I believe the current method isn't user-friendly enough to get people to vote on these things. Essentially, If you could have a small list of active votes on the right hand side of the screen, with yes/no buttons, and perhaps a vote menu that brought up dialogs specific to the type of vote, instead of requiring people to type a !vote command.... Essentially, all it would do is send the vote command for you, but it'd be much more user-friendly so the non-techies could do everything I can.
FingerSoup is offline   Reply With Quote
Old 06-04-2006, 06:53 AM   #4
johnny
Human being with feelings
 
Join Date: Apr 2006
Location: Serbia and Montenegro
Posts: 7
Default

Well that includes some client UI modifications, and tanstaafl didn't apply for that. But I thought it should be done along with voting system modifications...
johnny is offline   Reply With Quote
Old 02-07-2007, 10:19 AM   #5
Astrin
Human being with feelings
 
Join Date: Dec 2006
Posts: 3
Default Route server-side NinJam audio to a stream server

Hi, this seems to be the place to chime in with a server-side option I'd love. Since I have a NinJam server and Icecast and Shoutcast servers running on the same server, and I like to broadcast the NinJam out to friends listening in Second Life on a stream, it would be wonderful if in addition to server-side mixing of the NinJam audio, I could route the mixed result out to a shoutcast/icecast server (which supports the same encoding, no need to re-encode) directly from the NinJam server (on localhost in my case, but that matters not). That removes the extra overhead of a NinJam listener (with metronome off and not participating) relaying the NinJam back out to a stream server. Or, alternatively, it removes the need for a second computer or audio device to route the locally-mixed full NinJam out to a stream, while I'm playing in the NinJam and have to keep only my instrument audio outbound on the NinJam client's audio device (a technical issue, but that's what I face).

This would be a wonderful feature to bring NinJams to the masses, turning it into a broadcast platform as well as a jamming platform.
Astrin is offline   Reply With Quote
Old 06-23-2008, 10:35 PM   #6
Brennan
hey man
 
Brennan's Avatar
 
Join Date: Jun 2005
Posts: 331
Default Check out ninjamcast for shoutcasting your ninjams

You might want to check out ninjamcast, which will take up a client slot but doesn't require a sound card.

http://www.cockos.com/~brennan/ninjam/

I know this is a reply to a year-old+ post but hey it might help out some random dude comin in from a search engine or something.
Brennan is offline   Reply With Quote
Old 06-24-2008, 12:25 PM   #7
Diek
Human being with feelings
 
Diek's Avatar
 
Join Date: Jun 2008
Location: Ribes, Barcelona
Posts: 12
Default

Hi!

I've been reading this thread and a couple of questions come to my mind:

I'm with johnny. Kicking someone sounds to me like an excessive punishment. I think everyone try his/her best in the jams. Although I've read not too educated comments in the chat, it doesn't seems people is willing to boicot nor hijack the jams. Anyway is my feel.

The second question it's about server mixing. Since I'm beginnig in Ninjam, things like levels or setup from myself had half-ruined more than one session. Lisening back this sessions I wish I had not been there annoying (not intentionally, for sure) so probably it would be a good idea the possibility of ban oneself from a recorded session.

Other idea for server mixing I had is levels for each participant could be an average of the levels set for this participant in the other people clients. This way if someone it's playing too low or too loud it would be corrected by the other people without the need of giving privileges to anybody.

I don't know if I expressed what I mean. I'm not english native and sometimes have to translate from my language

Good Jamming!

Diek

Last edited by Diek; 06-24-2008 at 12:47 PM.
Diek is offline   Reply With Quote
Old 10-22-2008, 11:02 AM   #8
AndyMc
Human being with feelings
 
AndyMc's Avatar
 
Join Date: Dec 2006
Posts: 441
Default

Brennan is there one for IRC?

Diek kicking is needed sometimes but only in private servers, tests are what it says on the packet, for testing, getting used to how to Jam etc.
Least that's how I have always seen them.

I have a lot of patience for people, but if in a private server doing a LIVE Streamed Jam on the net to lots of listeners then last thing needed is someone coming it to test there guitar who hasn't had enough time to understand NINJAM.

Some might say close and password the server, but then people are excluded and the one thing ninjam does need is a good stream of different fresh people constantly or things can get stale.
__________________
Latest Shit (looking for singers): http://www.soundcloud.com/AndyMcProducer
Twitter (@AndyMcProducer): http://www.twitter.com/AndyMcProducer
Facebook Page: http://www.facebook.com/AndyMcProducer
AndyMc is offline   Reply With Quote
Old 04-24-2009, 07:34 PM   #9
Brennan
hey man
 
Brennan's Avatar
 
Join Date: Jun 2005
Posts: 331
Default

Maybe we need a dedicated server for setting up? Although, how would you know it was working without people around hmmm... Maybe it could echo your audio back? Ideas?
Brennan is offline   Reply With Quote
Old 04-25-2009, 12:19 AM   #10
pljones
Human being with feelings
 
pljones's Avatar
 
Join Date: Aug 2007
Location: London, UK
Posts: 767
Default

It needs a bot on it.

The bot could monitor all client streams for any signal.

If there was signal, it would simply report "<client>: I hear you".

If the signal was above a given level, it would report "<client>: turn your input level down".

If it detected NINJAM click on the signal, it would report "<client>: you have feedback, maybe".

If it detected feedback with a delay, it would report "<client>: your buffer size is too large".
(I hesitate to suggest beat finding and assessing this for alignment to click...)

Nice DSP project for someone, there!
__________________
Quote:
Originally Posted by Tony Williams
...Playing fast around the drums is one thing. But to play with people for others, to listen to, that's something else. That's a whole other world.
pljones is offline   Reply With Quote
Old 04-25-2009, 06:30 AM   #11
the all new rob
Human being with feelings
 
the all new rob's Avatar
 
Join Date: Dec 2007
Location: east coast of Kansas
Posts: 681
Default

Totally agree--the test server/setup server would be any server where such a bot was logged in.

Detecting the click could be an autocorrelation function.

A hard part about getting set up is that the whole system revolves around peak levels, while RMS level is a better indicator of loudness. So the "you're too loud" should be an RMS, not a peak level minder. But you also need the peak for avoiding clipping too. But don't any overs get clipped when the interval gets encoded to ogg on the client? Maybe that clipping can be detected.

If the bot was actually part of the distribution (i.e. anyone could load a bot on a server) then more people who wanted or were willing could diagnose connection problems for others as needed. But the downside is potentially more channels taken up by bots.

So maybe a client could go into diagnostic mode as an additional mode to normal NINJAM. All it would have to do additionally is type out some text when it needed to provide diags. If the jammer has CPU to spare then let him decide to run diags.
__________________
"Well feeling (emotion) combined with an artist's discipline is the rarest thing in the world."
-- Ursula Nordstrom
the all new rob is offline   Reply With Quote
Old 04-26-2009, 02:01 PM   #12
AndyMc
Human being with feelings
 
AndyMc's Avatar
 
Join Date: Dec 2006
Posts: 441
Default

Yeah, a loop back Brennan, with what others suggested some up's and downs but also a longer topic to explain to set there local to 0db and track if in reaper to 0db and to ignore how loud it sounds there end and to reduce master if it becomes too loud then to follow onscreen tips.
Like play a long not, then hard, then soft, from this a formula could be worked out then user can be show levels for 3 tests and advised say to reduce volume on instrument so it appears say for instance 13db less on the local channel peak meter.

reason for soft say pluck of a string as well as normal and loud it allows for min, norm and max to be discovered which will help if someone is over gained.
If all 3 are close they will be over gained and instructions can be given to fix over gained input.

Also playing back there sound after the test so like saved local to server, test of 3 parts finish then it says something like type /play to hear a record of what they just played.
or say /live to have it looped back live, also maybe voice mode could be used for this but maybe in a little higher quality than voice is in.

/restart would be cool too in case it goes wrong and people can restart the test. But remember to del the mp3 it saves if they restart. :P

Maybe in future Reapers if could have a audio level setup feature to perform it local.
You could also add some fun features like make a Sample so they type /sample then when it finishes it gives a link to download the sample, this would need ftp access or local save to http folder if people have a webserver too. Could be a fun thing, people could sample a song or a funny quote then maybe a folder could with cfg could be pulled into ninjamcast and people can like if enabled type /sample list then say /sample bonkers and it would play a sample say someone recorded on there and called bonkers.

Actually as its got this deep why not add options to ninjamcast then any server can have test abilities, if you do can I ask one thing, that test can be enabled between Times so it auto turns off the option after say 5pm and back on again say 10am etc.

I could see ninjamcast growing into a must have addon for Ninjam.

I love NINJAMCAST and that you made it available for all Brennan.
__________________
Latest Shit (looking for singers): http://www.soundcloud.com/AndyMcProducer
Twitter (@AndyMcProducer): http://www.twitter.com/AndyMcProducer
Facebook Page: http://www.facebook.com/AndyMcProducer
AndyMc is offline   Reply With Quote
Old 05-04-2009, 12:13 AM   #13
trece8
Human being with feelings
 
Join Date: Apr 2009
Posts: 5
Default

To start, you could mix in the server side with the maximum theoretical levels for each number of tracks (i.e. for two players, 50% and 50%, 3 players 33,3% for each and such).

Then, you could just use a very slow compressor (wake time longer than a loop) to "normalize" that.
trece8 is offline   Reply With Quote
Old 05-04-2009, 12:49 AM   #14
pljones
Human being with feelings
 
pljones's Avatar
 
Join Date: Aug 2007
Location: London, UK
Posts: 767
Default

This seems to be somewhat how Autojam mixes offline.
__________________
Quote:
Originally Posted by Tony Williams
...Playing fast around the drums is one thing. But to play with people for others, to listen to, that's something else. That's a whole other world.
pljones 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 08:05 AM.


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