Roll = function(container){

		/**
		 *  The scroll container
		 */
		this._element = document.createElement("div");
		this._element.id = "RollContainer";
		container.appendChild(this._element);

		// The trigger line that sits in the center
		var triggerLine = document.createElement("div");
		triggerLine.id = "TriggerLine";
		this._element.appendChild(triggerLine);

		/**
		 *  The scrolling container
		 */
		this._scrollContainer = document.createElement("div");
		this._scrollContainer.id = "ScrollContainer";
		this._element.appendChild(this._scrollContainer);


		this._scrollElement = document.createElement("div");
		this._scrollElement.id = "PianoRoll";
		this._scrollContainer.appendChild(this._scrollElement);

		//THE SCORE DISPLAY
		this._score = new Score(this._element, this._scrollElement);

		//the scroll handler
		this._scroll = new Scroll(this._scrollContainer, this._score.pixelsPerSecond);
		this._scroll.scrubstart = this._scrubStarted.bind(this);
		this._scroll.scrubend = this._scrubEnd.bind(this);

		// if it's scrubbing
		this._scrubbing = false;

		this._started = false;

		//the current notes on the screen
		this._currentNotes = [];

		//if the scroll has changed, redraw
		this._currentScroll = -1;

		//the time at the beginning of the piano roll
		this._computedStartTime = 0;

		//callback when a note is triggered
		this.onnote = function(){};
		this.onstop = function(){};

		//a binding of the loop
		this._bindedLoop = this._loop.bind(this);

		//start the loop
		this._loop();

		this._width = this._scrollContainer.offsetWidth;

		window.addEventListener("resize", this._resize.bind(this));

		//set the lookahead to match the other one
		// Transport._clock.lookAhead = lookAhead;
	}
the amount of time that notes are processed ahead of time.
 This improves the performance and accuracy of scheduled notes.