Skip to main content

Senior Web Engineer. Open web / music. Remote DJ. Tall Dutch guy. #3million

micro.blog/sander

svandragt

mixcloud.com/cloudseer

 

SecondLife is reinvesting in events

Improvements to the Events pages are in the works for 2020, too. You’ll soon see more functionality and a new look, such as the ability to set an alert on an event you want to attend, to follow your favorite event hosts, to share your event calendar with friends, and to see the latest event developments in a news feed. 

https://community.secondlife.com/blogs/entry/3016-the-return-of-last-names-and-changes-to-marketplac...

 

Keyboard lag in SecondLife was caused by Popclip. Zapp!

 

Traktor streaming to SHOUTcast servers using LiquidSoap

I've been using Traktor for years now as my deejaying solution and broadcasting tool. The one missing feature on the broadcasting side is that it can only stream directly to Icecast servers, lacking the ability to stream to SHOUTcast based servers. Most servers use the SHOUTcast streaming protocol which grew popular through the MP3 movement back around the turn of the century. We will setup a transcoding link to enable streaming to SHOUTcast servers.

This guide will focus on OS X but on a general level is also applicable to Windows users.

This replaces my previous guide at https://sites.google.com/site/traktorshoutcast/

Overview

We will need the do the following things:

  1. Install Homebrew, a package manager to help set things up.(OS X)
  2. Install and setup Icecast, a streaming server that will accept the Traktor stream. (aka local streaming server)
  3. Install and setup LiquidSoap, a transcoder that will connect to the local stream, and broadcast it in SHOUTcast format.
  4. Configure Traktor's broadcasting settings to point to the local streaming server.

Also useful is to keep the SHOUTcast stream (remote stream) details to connect to at hand (host, port, password).

signal flow

1) Install Homebrew

Homebrew is a terminal package manager to add / remove / update OS X software and compile it from source code for us, so we don't have to.

Homebrew installs the stuff you need that Apple didn’t.

To install, follow the directions on http://brew.sh. Currently (as of Feb 16) that says:

  1. Open a terminal window.
  2. Run /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Follow any instructions about the Xcode commandline tools.

After everything is setup you can run brew update to update your formulae, brew upgrade to upgrade to their latest versions, and brew doctor to diagnose any issues with your particular installation. Keep the terminal open for the next step.

2) Install and setup Icecast

Icecast is a streaming media server which [...] can be used to create an Internet radio station or a privately running jukebox and many things in between.

We will setup the local streaming server so that we can connect Traktor and the transcoder to it.

Install

In the terminal window you left open, run brew install icecast.

If I remember correctly, everything should go smoothly and before long you'll get a message saying it's successfully installed.

Configuration

To keep the configuration files we are about to create nicely together, create a broadcast folder somewhere (I used ~/Music/Broadcast).

I have prepared a very simple configuration file for you, download it from https://gist.github.com/svandragt/f7ecb720416a68f096a1 (right click the raw button and select Download Linked File As.. and save it as icecast.xml in the broadcast folder you just created).

You won't have to change the contents of this file, apart from the passwords.
This configuration creates a mount point on http://localhost:8000/traktor.ogg for Traktor and LiquidSoap to connect to.

Starting and Stopping the Local Streaming Server

In the terminal window, in your broadcast folder, run icecast -c icecast.xml. It should show a few warnings but no errors, and your local streaming server is now running. Stop it now by pressing ctrl+c.

3) Install and setup LiquidSoap

Our flagship is liquidsoap, a swiss-army knife for multimedia streaming, notably used for netradios and webtvs. Liquidsoap is a powerful and flexible language for describing your streams. It offers a rich collection of operators that you can combine at will, giving you more power than you need for creating or transforming streams. But liquidsoap is still very light and easy to use, in the Unix tradition of simple strong components working together.

We will install the program and setup a flow (configuration) to connect to the local streaming server, and broadcast it to the remote stream.

It should have been simple to install using brew, but unfortunately it was not. After several days of debugging here is a working set of instructions I produced.

Install

In the terminal window you left open, we will run the following commands:

  1. brew tap drfill/liquidsoap -- This enabled homebrew to install it.
  2. brew install --env=std liquidsoap --with-shout -- this installs LiquidSoap using the standard build environment with shoutcast support

Grab a drink. After a while hopefully all works fine. I noticed that LiquidSoap is now recommending OPAM to install it so you could try that if this doesn't work for you. (http://liquidsoap.fm/download.html) - I have not tried it.

Configuration

As before, I have created a very simple flow. You will need to setup one flow per destination stream so if you play at multiple radio stations / SecondLife clubs then you will need multiple flows.

Download it from https://gist.github.com/svandragt/af43c07d5842c9c429d5 (right click the raw button and select Download Linked File As.. and save it as example.liq in the broadcast folder).

This time you have to edit it, to add the remote stream details. Change the following lines to suit your purposes:

  • output_host = "example.com"
  • output_port = 8124
  • output_pass = "mypassword"

The configuration above is for broadcasting to a SHOUTcast server at http://example.com:8124 (using the password mypassword). Leave the rest of the file alone or make a copy and start experimenting LATER, see http://liquidsoap.fm/documentation.html. LiquidSoap is very powerful.

Starting and Stopping the Transcoder

In the terminal window, in your broadcast folder, run liquidsoap example.liq. It will start showing a lot of messages, and because you are not currently broadcasting also some errors. Stop it now by pressing ctrl+c.

Traktor

Start Traktor and open the Preferences menu item. Open the Broadcasting tab.

Use the following information to point to the local streaming server:

Server settings:

  • Address: localhost
  • Port: 8000
  • Mount path: traktor.ogg
  • Password: hackme (but you changed this, right)
  • Format: Ogg Vorbis, 44100 Hz, 192 kBit/s (highest quality, bottom option)

You can enter whatever you like in the Metadata Settings.

tractor broadcasting settings

In Traktor, click the broadcast button (the little attenna). It will flash because the local streaming server isn't running and therefore Traktor cannot connect to it. Whenever Icecast is running but the button is still flashing, check that the password and other connection details match.

For now, click it again to stop broadcasting.

All together now

Before you start streaming:

  1. Start Icecast and keep it running.
  2. In Traktor, click the broadcast button and confirm its not flashing.
  3. Open another terminal window / tab in the broadcast folder for the next step.

When you start streaming:

  1. Start LiquidSoap with the flow of your remote stream. Keep it running.
  2. Start deejaying!

When you are finished

  1. Stop broadcasting with Traktor.
  2. Stop liquidSoap to let the next DJ on the stream.
  3. Stop Icecast because nothing is connected to it now.

Final thoughts

I hope this helps anyone having trouble deejaying online, I enjoy it very much and if you'd like to listen to deep house / electronica, please listen to my mixes.

 

Create an Avatar Specific Communication Channel

Sometimes you will want to create a listener that will not interfere with any other avatar using the same object near you. The basic solution of detecting the owner creates a lot of overhead, therefore a better solution is to have individual channels.

Thanks to Winter Seale, on the SecondLife scripters mailing list:

use an avatar specific
channel. To do that I would define a function:

integer get_channel(key avatar, integer offset){
 return (integer)("0x"+llGetSubString((string)llGetOwnerKey(),-8,-1))
 + offset
 }

Then in your script, use:

 llSay( get_channel( llDetectedKey(number), -1234 ), (string)llDetectedKey(number) );
 ...
 llListen( get_channel( llGetOwner(), -1234 ), "", "", "");

* The reason this is better is that it keeps only one script (the
avatar's) listening on this channel. Without this, a script for every
person with a HUD would have to execute code every time your in world
object was touched.

 

Tracklist @ Drome

Breaks Friday with Cloudseer @ the Drome! It's my new spot: 3pm-5pm PST! Start off your weekend with the best breaks mixed by live DJ Cloudseer Writer, with a little bit electro thrown in! Bring all your friends to the Drome :D

It was good, managed to cram in a lot of breaks in two hours!

# Title Artist
1 Rattle Ya Cage General MIDI
2 Bone Snow HELL, Sam
3 No Rockstars (Bass Kleph Remix) Hyper
4 Loving You (Atomic Hooligan Remix) - Ils Ils
5 Soul Of Man - Foxy Moron Drummatic Twins
6 Rusko v.s. the 80s Crendore
7 Jahova Rusko
8 Shake It Up (Hook n Sling Remix) Stanton Warriors
9 Slyde - Vibrate To This (Dt's Re-Edit) Drummatic Twins
10 Tell Me How You Feel (Kid Kenobi vs Rogue Element Remix) Krafty Kuts
11 Pop Ya Cork Stanton Warriors
12 Message 2 Love (Alex Metric remix) Sharam Jey
13 Plump Djs - Black Jack Drummatic Twins
14 Everybody Get Up (Circuit Breaker Remix) - Transformer Man Transformer Man
15 Cockney Thug Rusko
16 Good To Go General MIDI
17 Undertow feat. Patrick Scott - Oracle's Man Overboard Mix Summer Channel
18 Control (original mix) AUDIO DEALERS
19 Rock This Place General MIDI
20 Drummatic Twins - Feelin Kinda Strange (Bass Kleph & Nick Thayer Remix) Drummatic Twins
21 Shredder Far Too Loud
22 Da Virus Various Artists - XL Recordings
23 Pop Ya Cork Stanton Warriors
24 Turn It Loud General MIDI

 

Purple Rain DJ Event Flyer

As you can see below I created a flyer/poster for an event in Second Life. For those who don't know, Second life is a virtual world created entirely by its users. Anyone can create an account and log on to build things, meet people for a chat, or dance in a club for example. Or fight in a Star Wars battle as a wookie. Or watch a movie in a cinema. Yep if you can think of it, you can probably do it.

Anyway, on friday night between 1-3pm PDT (Pacific Daylight Time) I have a DJ set in a nightclub called Purple Rain. I play some trip-hop, electro to a small crowd for a few hours. The club has decided to organize a DJ Talent contest and asked me to create a promotional poster. As there was a lot of information to put on and no photos so I decided to play around with positioning, grouping and lighting of text. The result is below. I think it turned out well.

Purple Rain DJ Event Flyer

How do you promote your SL event?

Update: I do not play at Purple Rain anymore. Find me "Cloudseer Writer" online in Second Life.