Marc's Public Blog - Clubbing and Trance


All | Aquariums | Arduino | Btrfs | Cars | Cats | Clubbing | Dining | Diving | Electronics | Exercising | Flying | Greatbritain2016 | Hiking | 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, including Armin more than once:



You can find all the pictures here

Table of Content for clubbing:

More pages: August 2017 July 2017 June 2017 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/08/11 Seeing Andrew Rayel at Ministry of Sound, London
π 2017-08-11 00:00 in Clubbing, Greatbritain2016
While randomly looking at Google Maps on my phone for an upcoming trip to London, I got a reminder to go check out Ministry of Sound, a legendary club for anyone who's been listening to essential mix back to the early 2000's when many trance mixes were played, and some came from that club.

The small problem, was that going to a club all night between a 12h+ day of sightseeing and 4 more such days right after that, was not the best timing ever, but at the same time, it was not an opportunity I wanted to miss. So, after leaving the V&A Museum when it closed at 22:00, I went straight to Ministry of Sound which was opening at 22:30, and only got back to bed around 03:00 or so. I was not in good shape the next day, but so be it :)

Ministry of Sound is an interesting club, it's not huge, but has 4 different rooms, with the main room being totally packed when Andrew was playing. Sadly, as a state of affairs in London, and the radical inclusion, they end up having to search everyone everywhere to pretty severe extremes. They had TSA style gates with full searches, making getting in a lot less fun...
Anyway, once in, I had a good time, and glad I went despite what it cost me in lost sleep :)















Here's a video summary with good trance bits:

2017/07/14 Trance Family SF 7th Anniversary at 1015
π 2017-07-14 00:00 in Clubbing
It was 17 years since the first time I went clubbing in SF, at 1015 no less. Honestly, most of my experiences at 1015 back then were not great: stupid lines, super crowded inside because the venue's main room was too small, and sadly some of my favourite DJs were playing kind of boring sets compared to the great music they made back then.

When Ruby Skye opened, I went and never looked back. But TFSF7 was all about a trip in memory lane and nostalgia, and 1015 was a great place considering it had 4 different rooms were different DJs could battle with their best sets (and they were good). Thankully attendance was just within the venue's capacity (on purpose or not), so it was packed but not crazy crowded.

And the sets were just great. DJ Blur brought back awesome tunes back to back, I could tell he worked on that set before showing up :) and then the other rooms were quite good too, including some hard trance and psytrance which I had never been able to get before. You kind of have to be in the mindset for it, it's not quite melodic trance, but I was in the mindset last night and it was a lot of fun.

Thank you to all the DJs who came to play, and this guy giving great light shows:





nice outfit :)
nice outfit :)







Awesome psytrance
Awesome psytrance





Stay down! :)
Stay down! :)



40mn summary of the night (21:00 to 05:00):

2017/06/16 3 more days at EDC 2017, Las Vegas
π 2017-06-16 00:00 in Clubbing
Another year, another EDC. Weather in Vegas was stupid hot (peaks of 115F/46C). I got another chance to try my new Neopixel shirt/pants combo, although getting all the electronics through security in airports, isn't ideal...






Before the first day started, some locations had small markets where you could buy all the rave gear you could need, for those who didn't come prepared :)


and you could spend hours making your bracelets. I shouldn't make fun because I spent even more hours on my LED shirt :)
and you could spend hours making your bracelets. I shouldn't make fun because I spent even more hours on my LED shirt :)

More rave gear on site if you needed it:


Getting to the festival grounds has become an increasing problem, moving almost 150,000 people to and from the racetrack in a 3H window, or so, has become a real challenge, despite huge amount of busses (the busses themselves had 3H-ish lines in some places).

those folks made full use of carpooling :)
those folks made full use of carpooling :)

Most people, including me, took shuttles, which took a reasonable enough 1H to get there and back, but they had stupid lines that could take up to 3H. The picture below is the best possible case scenario I saw one day I got lucky. Some people got close to passing out in the heat, and apparently one person died in line on the way back due to a medical issue that was not addressed timely enough :(
While Insomniac had plenty of busses, the loading was not streamlined enough and included a lot of unnecessary waits, making some lines ridiculously long. One day, I took another line to another hotel just so that I could get back to Vegas and then took a short cab back to my hotel:



Anyway, once arrived at the racetrack, things were good. Pictures of the grounds:

it looks less impresive during the day
it looks less impresive during the day









sunrise coming
sunrise coming












You could even get weddings:


Many carnival rides, but the lines were long at most of them0




And the ball pit was a fun place to relax :)




Pictures of people and signs:

bad ass tatoo
bad ass tatoo



Other people were lit up, like me:


I remember this guy from last year, awesome costume and makeup
I remember this guy from last year, awesome costume and makeup

expensive triple row LED shoes
expensive triple row LED shoes



Fun signs:

damn straight!
damn straight!



haha!
haha!


This year definitely had a nice collection of art cars from burning man:


dancetronauts
dancetronauts

nicely gave me a tour
nicely gave me a tour











Of course, EDC was about lots of great DJs, and lots of great DJs it was:





Armin
Armin





Awesome fireworks:

Day #2:


Ruben de Ronde played an awesome set
Ruben de Ronde played an awesome set







Tiesto was back, not playing Trance :)
Tiesto was back, not playing Trance :)



Another solid set from Above and Beyond
Another solid set from Above and Beyond





Awesome fireworks again:

Day #3 was sadly shorter for me, great lineup, but not enough sleep and I was too tired to enjoy the end:





PvD
PvD

After PvD, I lamed out, went back to the airport and flew back home to get some much needed sleep. I still had a great time despite this.

What insomniac needs to fix for next year: - no VIP lines at many shuttle stops, so basically VIP didn't get you in and out any quicker in many places :( - streamline the bus loading/unloading to improve throughput - Lines like the Village loading in front of Luxor, were 2-3H in the sun. That's totally not ok.

What they did great: - the Trance lineup was solid, even if the stage, Quantum Valley, was a lesser one - the searches were not over the top (I didn't have to empty every single last pocket of everything)

2017/06/02 LED Pants and Shirt Programmed With Arduino on ESP8266
π 2017-06-02 00:00 in Arduino, Clubbing, Electronics
So, this all started with some LED shoes I hacked to last 12H instead of 4, and it ended with me learning how to program arduino like microcontrollers to control neopixels (aka WS2811/WS2812/WS2812B) while being able to receive Infrared/IR commands. The latter is actually difficult but you go read that page to learn why

Since I've met plenty of people who complimented for my neopixel shirt and pants combo, and some who asked questions about them, I thought I'd write some quick page to explain how it all works and how you can do similar things, since it's more fun if I'm not the only one lit up at Dreamstate (which has been less of a problem at burning man).

Here is a video summary:

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).

So, I have 3 versions of the shirt, let's go through them depending on how complex you'd like to go:

Multi Color LED strip, non controllable



It used a 12V controllable dimmer: https://www.amazon.com/gp/product/B00MHKCTLE which can simply change the brightness of the LEDs, which are of a set color. I bought the LED strip in Akihabara Japan, but I'm guessing something similar can be found elsewhere.

Tri Color Controllable LED strip



This version is better in that the LED strip has 3 channels, one for reach of Red, Green, and Blue. I uses a tri color controller like this one: https://www.amazon.com/gp/product/B01410R4KS or remote controlled: https://www.amazon.com/gp/product/B00PBOJNZS
Those controllers can create any color and flash it at any interval, however:

  • they are a flat trip that doesn't really like being bent
  • all the LEDs are in series, so if the chain fails somewhere, nothing lights up beyond the point of failure (which is why I have extra wires soldered on to make redundant paths and get around breakage
  • I have had some sections of 3 LEDs where one color died
  • All of the controllers I tried have a dimming function, but it fails to work when I use the fade dimming patterns, which means they are full bright, suck battery and blind others. I've therefore had to add a 2nd voltage regulator where I can just dim the voltage sufficiently so that the current is then also capped by each color string and therefore the brightness is controlled (you cannot limit the global current fed to the LED controller because you don't know whether it's all fed into a single color, or shared amongst 3).
  • Of course the last thing is that all the LEDs for a color are in series in a single circuit, so you light up all the reds, or all the blues or greens, or none. You can't turn on one LED individuallly. This is where the next solution comes in.
  • ESP8266/Arduino Controlled Neopixels



    To fix the issue of not being able to have custom multi color LED patterns, where each LED/pixel can be controlled separately, the solution is neopixels (aka WS2811/WS2812/WS2812B). Each LED/pixel is controllable separately, which is done by a computer, in this case the ESP8266 can run my own programs to control all the LEDs.
    The ESP8266 is a 3.3V based microcontroller for low power use (good when battery powered) while the neopixels are 5V powered, but thankfully the neopixels can use 3.3V signalling from the ESP8266 while being 5V powered to light up properly. The one thing to keep in mind is that neopixels use some power even if they are not lit. In my case 200 neopixels, take about 120mA when they are off, and 4.5A when they are all lit in white on full brightness.

    Neopixels are almost infinitely versatile, instead of having them in single line strips like on my shirt and pants, you can also make display matrices out of them:


    I've then written code that receive the IR commands from the remote and execute different code that creates different light patterns, which is explained in more details and available on this page and you can get the code from github.

    Here is a video that shows all 3 modes, jump to 3:50 for the neopixel bit:

    2017/05/27 2017 Dreamstate in San Francisco
    π 2017-05-27 00:00 in Clubbing
    Last year, Dreamstate was in January, which was a bit cold and rainy when we got out. To be honest, it was much nicer in May, even if it was a bit close to EDC as a result. It was a great lineup, a nice 16 hours of trance with 16 DJs

    This was the perfect excuse to go try my new shirt + pants with neopixels I had worked on (including new light effect code I wrote and battery saving patch to run up to 12H on a single battery). I found a few other people who were lit up, but compared to burning man where you'd get "oh, 200 neopixels, so cute, I have 1000 Watts' worth on my art car, they can be seen 2 miles away", there weren't too many people lit up. I found 5 or 6 of them though:



    After some questions, I wrote a separate page on my lit up shirt and pants.

    Day #1: Video summary:

    Ruben de Ronde
    Ruben de Ronde



    Menno de Jong
    Menno de Jong


    Ben Nicky
    Ben Nicky








    Pure Nrg did a great set playing drums on top of that
    Pure Nrg did a great set playing drums on top of that





    Liquid Soul
    Liquid Soul





    Good to see Paul Oakenfold again, it's been 16 years since I first saw him
    Good to see Paul Oakenfold again, it's been 16 years since I first saw him


    hard to get Oakey smiling nowadays, he doesn't seem that happy the rest of the time
    hard to get Oakey smiling nowadays, he doesn't seem that happy the rest of the time




    Markus Schulz
    Markus Schulz





    Paul Van Dyk
    Paul Van Dyk





    After a bit of rest, it was Day #2: Video summary:

    Binary Finary
    Binary Finary

    Fleming & Lawrence
    Fleming & Lawrence





    Bryan Kearney
    Bryan Kearney



    Vini Vici
    Vini Vici












    Astrix
    Astrix


    John O' Callaghan
    John O' Callaghan




    Ferry Corsten
    Ferry Corsten





    Gareth Emery
    Gareth Emery

    Cool audio gear:

    this is for work
    this is for work

    but you can even play tetris on it
    but you can even play tetris on it



    Some crowd shots:










    Sadly, not enough people with lighting:



    Some people shots:









    See more images for 2017 Dreamstate in San Francisco
    2017/05/26 Jean Michel Jarre @ Berkeley Greek Theatre
    π 2017-05-26 00:00 in Clubbing
    I've been a fan of Jean Michel Jarre since the 1980's when I was a teenager. Along with Vangelis, Jean Michel Jarre is one of the founders of Electronic Music. The two of them were popular before anyone else was even around doing any EDM.

    Sadly, I never managed to go see him perform way back then, so it was super cool to see that he did a US tour and that I'd finally be able to see him. Better late than never...

    Here's a video summary:



    JMJ did a tune with Snowden
    JMJ did a tune with Snowden




    JMJ is most well known for his laser musical harp
    JMJ is most well known for his laser musical harp










    Thanks to my friend Arnaud, we got invited to the after party for the crew:





    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 shoes I hacked to last 12H instead of 4



    The end goal was adding neopixel strips on my shirt sleeves and pant legs:


    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):

    I also have a video showing the evolution of lights on my shirt from v1 (single non controllable color) to v2 (tri color, but not pixel addressable), to neopixels with cool patterns (jump to 3:50 if you'd like that):

    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







    More pages: August 2017 July 2017 June 2017 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