Marc's Public Blog - Clubbing and Trance


All | Aquariums | Arduino | Btrfs | Cars | Cats | Clubbing | Dining | Diving | Electronics | Exercising | Flying | Hiking | Japan2017 | Linux | Linuxha | Public | Rc | Sciencemuseums | Snow | Solar | Trips

Ok, so I like electronic dance music, more specifically Trance. Unfortunately, the US, it's let's just say... a bit behind in that department. If you ever hear such music on the radio, or even in the street, let me know (for instance, in Australia, I heard great Trance in even a waterslide park of all places, and in Europe you can easily get EDM/Trance on broadcast radio).
Since 2004 (it's not 2016), the good news is that Trance has grown quite a following in the US, and places like the SF Bay Area, and while Trance has been declared dead a few times in the last 10 years, it's still going strong here, and we're lucky to have at least one or two big Trance parties per year, so yeah!
With San Francisco and San Jose nearby, I've had some opportunities to see some great EDM/Trance DJs. Back in the early 2000's, they sadly played club music in the US that was nowhere close to the hits they had composed and were known for, but over the years, as Trance started becoming more popular, those DJs finally started playing their good tunes in the US too, and maybe from 2004 on, it's only been getting better.

Over time, I've seen many of my favorite DJs across the world, whether it was locally, in New York City, Canada, Australia, and of course Ibiza, and at Halloween 2004, I finally attended some great local parties that proved that you could get the good stuff locally too (even if all the artists came from other countries :-).

Over the years, I also got the chance to meet a few of my favourite DJs, here are some pictures with Johan Gielen (2004), Paavo and Tony (2014), and Armin at Ruby Sky in 2005, 2007, and 2009:



You can find all the pictures here

Table of Content for clubbing:

More pages: May 2017 April 2017 March 2017 February 2017 December 2016 November 2016 September 2016 August 2016 June 2016 May 2016 January 2016 September 2015 August 2015 June 2015 September 2014 August 2014 May 2014 September 2013 May 2012 May 2011 December 2009 November 2009 April 2009 March 2009 October 2008 June 2008 October 2007 September 2007 July 2007 May 2007 April 2007 November 2006 October 2006 September 2006 June 2006 May 2006 January 2006 December 2005 October 2005 September 2005 August 2005 June 2005 May 2005 February 2005 December 2004 November 2004 October 2004 September 2004 June 2004 August 2003 July 2003 February 2002 November 2001 October 2001 September 2001 July 2001 June 2000




2017/05/20 Verso Kyau n Albert
π 2017-05-20 00:00 in Clubbing


DJ Blurr
DJ Blurr


Kyay and_Albert then took over
Kyay and_Albert then took over



See more images for Verso Kyau n Albert
2017/05/01 My 2nd Shout Out By Armin On The State Of Trance
π 2017-05-01 00:00 in Clubbing
First time was in 2006: https://youtu.be/ymkcqzs1AFg?t=1h48m10s

Then, in 2017: https://youtu.be/DKVqUDhz3Cc?t=33m50s

2017/04/03 Arduino 328P Uno Teensy3.1 ESP8266 ESP32 IR and Neopixels
π 2017-04-03 00:00 in Arduino, Clubbing, Electronics
  • Why my pants needed IR controlled neopixels :)
  • Why IR and Neopixels at the same time, is hard
  • Concurrent IR + Neopixels solution #1: be fast (Teensy 3.1)
  • Concurrent IR + Neopixels solution #2: don't use the CPU for neopixels (ESP8266 (I2S) and ESP32 (RMT))
  • Software and Libraries
  • Video with the whole story and details
  • Show me the code!

    Sure, it's here: https://github.com/marcmerlin/Neopixel-IR (but go to the end of this page for more details).

    Why my pants needed IR controlled neopixels :)

    I mean, don't everyone's pants need neopixels? :)

    I started with a silver shirt, I added a few LEDs, and then more I got from a swap meet, and later added some LED shows I hacked to last 12H instead of 4



    Here is a 6mn clip showing the shoes and shirt if you'd like the details:

    The problem with my shirt, though, is that the colors you see on the picture are actually due to broken traces, causing the colors you see. It's better than nothing, but not what I was trying to do, and no way to create streaming effects. This is of course where neopixels come in.

    I'm not going to repeat the excellent Adafruit Neopixel Uberguide here, but I have a 3mn video clip showing a standard IR RGB LED controller, compared to a neopixel strip. It also shows how I use standard remote control servo cables to wire neopixels, and how to watch out for:

  • signal wire being in the center, so you must not feed 5V on the middle wire like you would with RC and servos
  • how if you have a neopixel strip that doesn't work right, you can only connect to the first LED, and you have to start cutting off LEDs from the strip one by one until you get to the first one that works
  • before you start cutting, make very sure you aren't connecting to the last LED (DO vs DI)
  • Why IR and Neopixels at the same time, is hard

    So, the main point of this page is however to look into the issues of controlling Neopixels and receiving IR signals at the same time.

    It's easy to listen for IR, and then change neopixels, leave them alone, and listen for IR again. It's hard (or near impossible on some chips) to actively update neopixel strips for animations and listen for IR commands at the same time.

    Why? This video explains the issue:

    What's going on is on low end arduino chips (328p, leonardo, or even AT mega and all other 16 bit AVRs), neopixels are controlled by stopping chip interrupts and sending a very precisely timed signal to the neopixels. If the timing is off just a little bit, the wrong colors get sent, or nothing works at all. This is why interrupts must be disabled


    Now, there are actually many other addressable multicolor LED types. The nice ones are 4 wire and work via SPI, which allows the CPU to control the timing and the clock, removing this exact bit banging timing issue. The cheaper 3 wire ones have a set clock and require that the CPU sends a very precisely timed signal, usually done while disabling interrupts. See https://github.com/FastLED/FastLED/wiki/Overview

    But since neopixel strips (aka WS2811/WS2812/WS2812B) is what I already had, I now had to deal with this precise timing issue. As you can guess, disabling interrupts causes issues with the IRRemote library because it has its on interrupt handler timer that also requires being run at a special timing, or it doesn't capture proper IR signals.
    The end result is that you cannot disable interrupts and receive IR signals, and if you don't disable interrupts, the neopixel signal is unstable and the colors flicker (demonstrated int the video above).

    So, unless you use some special hardware to drive neopixels strips on an AVR chip, concurrent IR + neopixels is just not going to work.

    an arduino nano v3 running neopixel strips
    an arduino nano v3 running neopixel strips

    my 328p arduiny chip (equivalent to arduino nano) and anti plug backwards toothpicks :)
    my 328p arduiny chip (equivalent to arduino nano) and anti plug backwards toothpicks :)

    because my 328p chip was unprogrammed, I had to figure out direct ISP programming pinout for it and I flashed a bootloader on it
    because my 328p chip was unprogrammed, I had to figure out direct ISP programming pinout for it and I flashed a bootloader on it

    Concurrent IR + Neopixels solution #1: be fast (Teensy 3.1)

    a few chips for comparison (uno, leostick, nano v3, arduiny, and Teensy 3.1 in green)
    a few chips for comparison (uno, leostick, nano v3, arduiny, and Teensy 3.1 in green)

    Thanks to better FastLED hardware support, when I moved my code to a Teensy 3.1 32 bit ARM CPU, the CPU was fast enough that it had time to re-enable interrupts in the middle of updating neopixels. This in turns allowed the IR Remote interrupt handler to just barely run in between pixel updates, and capture IR codes. Success!

    See this video for details:

    The magic code that makes this work, is here: https://github.com/FastLED/FastLED/blob/master/platforms/arm/k20/clockless_arm_k20.h#L34
    sei(); delayMicroseconds(WAIT_TIME); cli();

    Thanks to this re-enabling of interrupts, things work.

    So at this point, someone sensible would have declared victory. However, I felt bad wasting a Teensy 3.1 on something as simple as driving a single neopixel strip (it can drive 8 in parallel) and reading from an IR receiver, when it has around 32 I/O ports. This is why I checked if I could get this to work on ESP8266 chips which are even cheaper and have much fewer I/O pins (but add Wifi)

    Concurrent IR + Neopixels solution #2: don't use the CPU for neopixels (ESP8266 (I2S) and ESP32 (RMT))

    I had more 32bit chips, so I thought I would give them a try. I tried the ESP8266 and ESP32:


    First, the ESP8266 mostly worked with FastLED + IRRemote, but not quite. The FastLed code, just like on Teensy, is nice enough to re-enable interrupts for a short while: https://github.com/FastLED/FastLED/blob/master/platforms/esp/8266/clockless_esp8266.h#L45

    os_intr_unlock();
    delayMicroseconds(WAIT_TIME);
    os_intr_lock();

    However in my tests, the IRremoteESP8266 library was maybe a little bit too slow and caused occasional visible neopixel glitching. This is where I found this interesting library: https://github.com/JoDaNl/esp8266_ws2812_i2s/ which manages to drive the neopixels without doing bit banging with interrupts disabled ((ab)-using the I2S hardware support). It's not a very fancy library in what it offers, but it works perfectly with interrupts enabled.

    Same thing for ESP32. Actually ESP32 is even more difficult to get a perfect timing out of using bit-banging given that it's a dual core CPU running on top of an RTOS, and no matter how precise your code is, you just cannot guarantee that it'll run perfectly at the timing you need all the time. I did add ESP32 support to the Adafruit Neopixel library, but it only works most of the time, which isn't really good enough.
    This where its built in RMT support comes in. It can generate 8 precise signal waves, which are perfect for neopixels, so this is the way to go to animate neopixels without disabling interrupts (making IR receiving trivial). IRremote was missing ESP32 receive support, but I added it recently, so it's all working.

    Here's a video summary of ESP8266 and ESP32:

    Software and Libraries

    So, here's a summary of all the libraries I went through, 2 for IR, and 4 for Neopixels:
  • To receive IR signals, we'll use the excellent IRremote lib: https://github.com/z3t0/Arduino-IRremote
  • ESP8266 currently uses a fork of IRRemote, IRremoteESP8266 which may soon be in the process of being merged in the main Arduino-IRremote. See https://github.com/markszabo/IRremoteESP8266/issues/148 and https://github.com/z3t0/Arduino-IRremote/issues/400#issuecomment-294446261 .
  • For neopixels, most people use the adafruit lib: https://github.com/adafruit/Adafruit_NeoPixel . It works ok, but it requires disabling interrupts (and is therefore incompatible with IRRemote for concurrent operation)
  • FastLED is a more complete library with better hardware support (both in pixels and CPUs): https://github.com/FastLED/FastLED . The big plus of this lib is that it support re-enabling interrupts on 32bit chips, allowing the IRremote ISR to run.
  • Instead of FastLED (which does work), on ESP8266 you can use https://github.com/JoDaNl/esp8266_ws2812_i2s/ . The support is bare, but uses an inventive (ab)use of the I2S subsystem (I2C for audio) to generate neopixel signals using an onboard co-processor unit without tying up the main CPU or requiring the disabling of interrupts.
  • On ESP32, FastLED isn't supported yet (I added support in Adafruit-Neopixel) but both require disabling interrupts at least temporarily and it's hard to do anything real time on a dual core ESP32 running on top of an RTOS. The good news however is that it has 8 RMT channels which are designed to handle precise signals like this without tying up the CPU. See this code that supports Neopixels with exact timing: https://github.com/MartyMacGyver/ESP32-Digital-RGB-LED-Drivers
  • And here is my code again: https://github.com/marcmerlin/Neopixel-IR

    The big plus from that example code is that it supports 4 different Neopixel backends and abstracts them so that the adafruit (and other) demos can run on all 4 libs. See how it does it here: https://github.com/marcmerlin/Neopixel-IR/blob/v1.0/Neopixel-IR.ino#L275

    Video with the whole story and details

    This is a 25mn mashup of all the video clips, including a section on flashing the arduiny via ISP (AVR 328p):
    2017/03/11 DJ Blurr, Reorder, John Askew at Ruby Skye
    π 2017-03-11 00:00 in Clubbing
    While I was barely back from a ski trip and jetlagged in the wrong direction, my friend David (DJ Blur) encouraged me to come, for what was a great evening, starting with his own set. I was indeed tired that evening, but it was still worth the trip, great music.

    DJ Blur
    DJ Blur






    2017/02/25 Thrillseekers at Verso
    π 2017-02-25 00:00 in Clubbing
    Thrillseekers, I love Thrillseekers. I was thankfully able to move a small trip's dates to be able to attend, and it was well worth it. It was an awesome night with awesome music.









    I got 23mn of video, a good sample of the music from that evening:

    See more images for Thrillseekers at Verso
    2016/12/18 Fantastic Trance Night with Solarstone at Verso
    π 2016-12-18 00:00 in Clubbing
    I had seen Solarstone once before and he had done a great set at Dreamstate. Then, he did another 5h open to close set at Verso not a long time ago, but I totally missed that one due to poor planning. This time, I made sure to get my tickets early, and ended up going even after finding out my company Xmas party ended up being the same evening (darn), and I did not regret it: Solarstone threw a fantastic set, it was just good stuff up to the end:










    And at the end Solarstone was super nice and came out to meet and greet. He loved my shirt and nicely took a picture with me:



    I also have to give another big thumbs up to Verso. Not only do they get good DJs, but they have the least about of BS for getting in. Compare with places like Pure Lounge in Sunnyvale, where they first do a weapons search, which is annoying but potentially understandable, however when they do a drug search looking everywhere, even within the pockets of your wallet, this is totally pointless and a great way to turn off your customers.
    Moral of the story: Verso: great, Pure Lounge: Bad. Hopefully Pure Lounge gets the hint and losens up. I told them, tell them too, and in the meantime, keep going back to Verso only instead :)

    And here is a 30mn summary of the 5H set:

    2016/12/01 Aly and Fila at Pure Lounge
    π 2016-12-01 00:00 in Clubbing
    I had never been to Pure Lounge in Sunnyvale before, a short-ish drive from home, and Aly and Fila (really only Aly, Fila doesn't seem to travel to the US), was a good excuse to go. Pure Lounge sadly has a pretty ridiculous search at the entrance, and seemed to say that you could not even take small point and shoot cameras inside? What on earth is that?

    That being said, once inside, it was a good evening, good set from Aly:






    See more images for Aly and Fila at Pure Lounge
    2016/11/23 Give Thanks, San Jose
    π 2016-11-23 00:00 in Clubbing
    So, there was a big ass dreamstate event in Los Angeles, but getting there over thanksgiving just wasn't convenient, and became less necessary when I found out that we'd be getting a decent enough Trance event in our backyard, so I went to Give Thanks, and it was indeed a good lineup.
    Oakey, Cosmic Gate, ATB, Andrew Rayel (incidently all of them were going to Dreamstate afterwards, so it's good that we got to have them first :):


    poor oakey was looking old and tired though, his heart didn't seem into it
    poor oakey was looking old and tired though, his heart didn't seem into it












    Good night all in all, glad I was able to go.

    See more images for Give Thanks, San Jose
    2016/11/10 Above and Beyond in Sacramento
    π 2016-11-10 00:00 in Clubbing
    Since I was at ThunderHill in Willows during the day and Above and Beyond were playing in Sacramento, almost on the way home, but to make the deal more sweet, it was by McClellan Airfield/KMCC, where I was able to fly in fewer than 30mn from Willows, walk to my hotel, drop my stuff, and go to the party, fewre than 10mn on foot from the hotel and the airport's FBO. Super convenient!


    The one lowlight was that it opened at 21:00 while 2 of Above and Beyond (you pretty much only get 2 out of the 3, pseudo-randomly, it's like they draw straws :) showed up around 23:15. It was a long time to wait considering that the music before that was not trance :( Either way, once they finally showed up, it was sweet:









    The next morning, I went back to the nearby airport and flew home:

    argh, no, not my plane. would have been nice tough :)
    argh, no, not my plane. would have been nice tough :)

    See more images for Above and Beyond in Sacramento
    2016/11/04 FSOE 500 at Verso With Trance Family
    π 2016-11-04 00:00 in Clubbing
    Thanks to my friend David, I've been more up to date with the Trance events going on, and as a result I've been missing a lot fewer of them, which is great news. I did go to FSOE 400 last year in San Jose, and it was actually a good event with a good DJ selection.
    FSOE 500 was much more low key with fewer DJs in a much smaller venue, but I actually ended up enjoying that event so much more. It was pretty much non stop quality trance for 5 hours, something sadly too rare nowadays:


    DJ Blurr
    DJ Blurr







    ran into a few friends that evening
    ran into a few friends that evening

    Great night at Verso.


    More pages: May 2017 April 2017 March 2017 February 2017 December 2016 November 2016 September 2016 August 2016 June 2016 May 2016 January 2016 September 2015 August 2015 June 2015 September 2014 August 2014 May 2014 September 2013 May 2012 May 2011 December 2009 November 2009 April 2009 March 2009 October 2008 June 2008 October 2007 September 2007 July 2007 May 2007 April 2007 November 2006 October 2006 September 2006 June 2006 May 2006 January 2006 December 2005 October 2005 September 2005 August 2005 June 2005 May 2005 February 2005 December 2004 November 2004 October 2004 September 2004 June 2004 August 2003 July 2003 February 2002 November 2001 October 2001 September 2001 July 2001 June 2000