Following user requests, I’ve added a file navigation and deck control page to Traxus Scratch Live, including a keyboard for search, nav arrows, and Deck Loading controls. Hopefully, Serato will allow us to midi map the search box in the near future. Ideally I’d like to wire it so that using the keyboard would automatically set the focus to the search box and cut the mouse out of the picture.
I’ve whipped up a quick ASCII keyboard module for the Lemur. It mimics the iPad Keyboard (minus the third page of characters). It runs at about 10% of the total allowable byte space which is much heavier than I’d like but will suffice for now.
I had hoped to make a ‘key’ object by which setting the Primary and Secondary output, the rest would be taken care of, but since we can’t store strings in variables this couldn’t come to fruition (there was no good or easy way to loop through the keys).
Someone motivated could probably hack and paste it into a more standard style computer keyboard and cut the usage down to 5-7%, but I’ve had enough for now, here so here it is:
(Purchase of Traxus Scratch Live has been disabled until we can sort out the quirks with Lemur 5)
Available immediately for purchase through paypal for $9.99 US. Your personalized template and serato mapping xml file will be emailed to the address associated with your paypal account or the email address you feed in when paying through credit card.
Announcing Traxus Scratch Live:
The first true touch screen midi platter controller for Serato Scratch Live
Traxus Scratch Live is a custom built Lemur template for controlling Serato Scratch Live wirelessly using the iPad 2 or newer.
- Fore and back scratching using the first true touch screen rotary platter for Serato Scratch Live.
- Play Forward, Play Backward, and stop buttons.*
- Adjustable Platter sensitivity.
- Setting and Firing of up to 4 cue points.
- Full control over pitch faders, including:
- Coarse and fine Pitch faders
- Ability to altrenate between all 5 pitch ranges (8%, 10%, 16%, 50%, 100%) *
- Nudge buttons that can be altrenated to various functions: *
- Platter nudge to fine tune the platter
- Coarse nudge to step the coarse pitch fader value up or down
- Fine nudge to step the fine pitch fader value up or down
- Reset Pitch button to zero out all pitch faders *
- Safety button to prevent accidental changing of more crucial functions
* (Starred features require the Safety button, located in the bottom left corner, to be activated before being changed)
- Select and change auto loop length
- Selecting a loop length longer than 1/2 will automatically engage auto loop feature.
- Loop roll pad, loop roll will activate until finger is lifted from pad.
- Select EFX BPM sync amount
- Control 3 effects with our unique EFX pads:
- Manipulate fader manually to set effect dry/wet per a normal knob or fader.
- OR, initiate the pad in the bottom right corner for a more fluid fade in/out of the effect
- use the freeze button to temporarily hold the fade in/ fade out of the effect
- use the lock button to set the effect dry wet at the current value, and cancel any occuring fades
- Control the fade in and fade out times for the EFX faders in the Envelope section
- manually choose the Attack (Fade in) and Release (Fade Out) times using the knobs.
- OR, hold the enable envelope button and drag the grid’s center point to shape the envelope by hand
- set the range of the grid using the fader underneath it
- OR, use the BPM sync options to choose how many beats you would like a fade into occur over! **
- Use the master release button to release any cycling loop, as well as initiate a synced fade out of all 3 effects.
** Serato Scratch Live does not yet offer midi out, therefore the user must manually set the BPM for the envelope in the bottom left corner (you can also use the TAP button in the bottom right corner) to achieve accurate timing on the bpm synced fades.
- Open the TraxusScratchLive.jzml file in your lemur editor and sync it to your lemur.
- Copy the serato mapping .xml file into your serato midi xml folder (usually located in my music)
- Open serato and load the mapping file under midi settings
- Open lemur, follow the instructions on the screen to synchronize your PC with the template
- Have fun.
- Serato Scratch Live v2.4 and Accompanying hardware.
- Apple iPad 2 or newer. (Might work with iPad 1, but no promises).
- Lemur app for iPad and accompanying software.
- Connection between Lemur and computer running Serato Scratch Live (wifi or midi).
- Template and coding property of Traxus Interactive LLC. Do not redistribute without explicit consent.
- Template provided as is, will support to the best of my ablities to accomodate future updates in Lemur and Serato Scratch Live.
- Lemur is a trademark of, and owned and operated by Liine
- Serato Scratch Live is a trademark of, and owned and operated by Rane
- Neither Line, nor Rane are affiliated with Traxus Scratch Live, please address your support issues with the template here.
A quick compilation from our friends over at NewD Media and their VJ setup at the DEMF 2010 underground stage.
Upon seeing my friends footage of this event after the fact, I became immediately frustrated with whomever was responsible for running the DMX lighting rig. While the map looks fantastic on screen, we were having a much more difficult time appreciating the visuals in person, as the contrast ratio was very minimal due to the lighting. The last couple of shows I’ve been to that had serious projection mapping going on (namley Flying Lotus and Amon Tobin) actually did away with DMX entirely for an awesome result. Mind you, projection mapping at events was still in its absolute infancy back in 2010, especially for Detroit. This may very well have the first major event in the city to experience the phenomenon. Point being, trying to explain this to the promoters who have only known DMX their entire lives, and more over the guy whose career depends on plugging in and working those rigs is undoubtedly a tough sell. Hopefully videos like this will help lubricate that transition, lest we perpetually lust for the day where audio, projections, and lighting communicate seamlessly over MIDI, or some to-be-invented protocol…
Here is a quick video of the Lemur template I’ve been working on. It is, as far as I know, the first *true* touch screen platter controller for Serato Scracth Live.
Recent updates in the Lemur software allow us to finally utilize the knob, in encoder mode, as a true platter object for DJ software. Prior versions did not grant the programming ability to determine whether there was an active cursor on said knob, so while we could use it to scroll forwards and backwards, we could not use it simply prevent the platter from spinning. Previous, and very clever attempts at platter control for SSL had used the multiball object (as illustrated by Nathaniel Marrin, or npmarrin on the Serato Forums). While the basic functionality was there, I found the actual implementation to be rather sloppy and unreliable. For several reasons, utilizing the updated knob object instead provides for much more accurate control (visible towards the end of the video).
Once I got the platter control working, I went a little bonkers building modules for the looping and EFX. Of particular interest are the EFX pads which are setup for a chain of three effects. The screen with 3 vertical faders controls the effects paramaters, with each fader being mapped to a master knob of one effect. Nothing to brag about there, however, to the right of each fader is a square pad, holding this pad will increase the faders value according to the attack value on the pad, and letting go will decrease the faders value according to the pad’s release value. This allows for an organic breathing and teasing of the three effects. Furthermore, there is an enevelope control section by which you can set the attack and decay of the three pads, either in sync with the bpm (since serato has no midi out, you have to manually set the bpm) or to any millisecond value up to ~100 seconds…
Good God may I have my face back now? Here is but one from a slew of heaters Jamie Jones released on his lateset LP Tracks from the Crypt. It’s quite rare that I’m able to appreciate even one track on a release by any given artist however this is just the cream of a well sewed and reaped crop (Stems from Hackney is right up there too). The entire release hovers around that comfortable medium between Techno, Deep House and Tech House. The basslines absolutely reek (in the best way possible) of passive aggressive funk and are frequently (…frequency…) accompanied by eerie vocals that maintains the mood. This is the kind of release for a crowd who can appreciate a banger that doesn’t give them/you a headache. If you’re average heater is Jim Beam, this is an 18 year old of Highland Park scotch.
Digital DJs, obsessive compulsive library organization fanatics and iTunes users who give enough of a shit to make smart playlists, fall to your knees and direct your google link juice to
Steve Jobs programmer Steve MacGuire for his Itunes Keywords To Comments Plugin.
This little vb script solves a problem with itunes id3 tag managment that I have been pondering/googling for the last year and a half or so. Long story short, it allows you to add a keyword into the id3 comment field en mass, without overwriting the previously existing comment data that any of the songs may already have. From here you can have a song with multiple tags, and use those tags to search/group tracks while playing live or by making smart playlists and smart crates before hand.
So, imagine you had a track that you wanted grouped in a playlist called ‘Hot’ that was in a folder named ‘Acid’, and you also had this track in a playlist called ‘Agressive’ in a folder named ‘Deep House’. Ideally, you would want the comment field to look something like ‘Acid, Hot, Deep House, Agressive’. Sure, you could go into the individual id3 tag and construct that keyword list manually, but what if you decided you want the track to be in a playlist called ‘Dynamic’ under the ‘Tech House’ folder? You would have to edit the songs id3 tag each time you added it to a new playlist. At this point in the story, all of my friends and most of the internet starts waving their hands and screaming like an 11 year old know it all in summer school about how you can select all of the tracks in a playlist, right click>get info and edit the comment tags for all of the selected files at once. So feasibly, when the track mentioned earlier, along with a few songs, was added to the playlist ‘Dynamic’ under the folder ‘Tech House’, you would simply select all the songs, and set the comment field to ‘Tech House, Dynamic’. Allow me to elaborate on the implications:
1. Shut the fuck up.
2. Doing this would overwrite all of the other keyword tags in the comment field for each and every track in that playlist. So instead of producing a sortable keyword list that looks like ‘Acid, Hot, Deep House, Agressive, Tech House, Dynamic’ you would reduce the erase the previous data and reduce the keyword list to ‘Tech House, Dynamic’.
3. If you had another track in the ‘Dynamic’ playlist, with a comment field that looked like ‘Booty, Bangin, Techno’, you would erase the keyword list for that track and all others in the playlist, essentially destroying your organization schema in the first place.
If you’re still comprehending this post, this is why MacGuire’s script is a life saver. If you don’t care about sorting your music, then you are wasting brain space trying to remember the name of a track you bought 4 years ago that would be perfect for the moment, and that’s half the reason you can’t comprehend this to begin with.
KeywordsToComments alleviates this issue by appending the content rather than overwriting it… I think it has an issue with me not encoding the white space in the separator variable i use ( Sep=”, ” ), but that is not a bug, just a soft syntax error on my part.
You can see here that I was able to append several keywords to a track based on how i had it sorted into playlists. The nice thing was, I just selected each playlist and appended its keyword(s), which is infinitely more ergonomic than what it would take to tag all of those tracks correctly with itunes’ standalone capabilities.
Here is the code for the file for legacy purposes. I’ve changed the separator from a backslash to a comma (see line ~107). Font size and line height of the code was reduced for display purposes, but copy and paste if you need to, its all there.
' Version 18.104.22.168 - September 18th 2010
' Copyright © Steve MacGuire 2010
' This program is free software: you can redistribute it and/or modify it under the terms
' of the GNU General Public License as published by the Free Software Foundation, either
' version 3 of the License, or (at your option) any later version.
' This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
' without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
' See the GNU General Public License for more details.
' Please visit http://www.gnu.org/licenses/gpl-3.0-standalone.html to view the GNU GPLv3 licence.
' A script for iTunes for Windows to add or remove keywords from the Comments field
' If required can easily be modified to update a different field by adjusting the working field
' See comments in the ProcessTracks subroutine
' Related scripts: KeywordsToComments.vbs
' Version 22.214.171.124 - Initial version, prompted by this thread: http://discussions.apple.com/message.jspa?messageID=12039739#12039739
' Version 126.96.36.199 - Tweak to support insertion of the file location into Grouping using
' Version 188.8.131.52 - Reverse processing loop to prevent out-of-bounds error if selection alters during processing
' Version 184.108.40.206 - Implement multiple keyword input and optional sorting of keywords, will now work with multi-character separator
' Version 220.127.116.11 - Added field replacement keywords
' Version 18.104.22.168 - Changed method for inserting fields so a pattern like "Year:
' - If not sorting can choose if new words are appended or prepended to existing value of the target field
' Field Keywords -
' Visit http://samsoft.org.uk/iTunes/scripts.asp for updates
' To-do List
' Add more things to do
' Declare constants & variables
Const Min=1 ' Minimum number of tracks this script should work with
Const Max=0 ' Maximum number of tracks this script should work with, 0 for no limit
'Dim CD ' Handle to CommonDialog object
'Dim FSO ' Handle to FileSystemObject
Dim iTunes ' Handle to iTunes application
'Dim SH ' Handle to Shell application
Dim nl ' New line string for messages
Dim Title ' Message box title
Dim Tracks ' A collection of track objects
Dim Count ' The number of tracks
Dim P,S,U ' Counters
Dim Q ' Global flag
Dim Dbg ' Manage debugging output
Dim Opt ' Script options
Dim Append ' Option to add keywords at end, if not sorting
Dim Sorting ' Option for keyword sorting
Dim Sep ' Keyword delimiter
Dim Keyword ' Keyword to add or remove
' Initialise user options
' N.B. Edit Opt value to suit your needs.
' Control options, add bit values (x) for selective actions
' Bit 0 = Suppress dialog box for previews, just process tracks (1)
' Bit 1 = Suppress summary report (2)
' Bit 2 = Process entire library, otherwise try to restict to current playlist (4)
' Debug/report options, add bit values (x) for selective actions, initial value may be modified during run
' Bit 0 = Confirm actions (1)
' Keyword separator, e.g. / , ;
' If target field supports multiple lines use Sep=" " & vbCrLf to have keywords listed on separate lines
' N.b. the space separates the words if iTunes displays the field on a single line in the browser e.g. with comments
' Option to have keywords sorted alphabetically, or added after or before existing content
Sorting=True ' Probably not a good idea to sort the lyrics field in case it actually contains lyrics
Append=False ' True to add keywords after existing content instead of before, unless sorting keywords are added in the order given
' Main program
Init ' Set things up
ProcessTracks ' Main process
Report ' Summary
' End of main program
' Declare subroutines & functions
' Initialise track selections, quit script if track selection is out of bounds or user aborts
' Initialise global variables
Title="Keywords To Comments"
' Initialise global objects
' Set CD=CreateObject("UserAccounts.CommonDialog")
' Set FSO=CreateObject("Scripting.FileSystemObject")
' Set SH=CreateObject("Shell.Application")
If Tracks is Nothing Then
If (Opt AND 4) OR iTunes.BrowserWindow.SelectedPlaylist.Source.Name<>"Library" Then
' Check there is a suitable number of suitable tracks to work with
If Max=0 Then
MsgBox "Please select " & Min & " or more tracks in iTunes before calling this script!",0,Title
MsgBox "Please select between " & Min & " and " & Max & " tracks in iTunes before calling this script!",0,Title
' Check if the user wants to proceed and get keywords
T="Enter keyword to add to the Comments field for " & Count & " track" & Plural(Count,"s","")
T=T & ", separate keywords with "
If Sep=" " & nl Then
T=T & "\n"
T=T & Sep
T=T & " and/or prefix with - to remove a keyword."
If R="" Then
R=Replace(R,"\n"," " & nl) ' Replace \n with space & newline
R=Replace(R,"\N"," " & nl) ' Replace \N with space & newline
Keyword=Replace(R," "," ") ' Remove any double spaces
' Add or remove keywords from string
Function Keywords(ByVal V,ByVal K,ByVal T)
If Append Then
If S>0 Then ' If more than one keyword, split & recurse
If Append Then
'MsgBox "Input: " & K & " into " & V
If Left(K,1)="-" Then
' Replace field names with their values, extend list as required
IF Instr(K,"<") Then With Tracks.Item(T) K=Replace(K,"
If R Then ' If keyword begins "-" then remove it if found
V=Replace(V,Sep & K & Sep,Sep)
If V=Sep Then V=V & Sep
Else ' Otherwise add the keyword if not already present
IF V=Sep & Sep Then
V=Sep & K & Sep
ElseIf Instr(V,Sep & K & Sep)=0 Then
If Append Then
V=V & K & Sep ' Add keywords to end of list
V=Sep & K & V ' Add keywords to front of list
'MsgBox "Output: " & V
' Return relevant string depending on whether value is plural or singular
If V=1 Then Plural=S ELSE Plural=P
' Loop through track selection processing suitable items
For I=Count to 1 step -1 ' Work backwards to avoid index errors
If T.Kind=1 Then ' Only process "File" tracks
V=Sep & T.Comment & Sep ' Change working field here,
If Sorting Then V=SortIt(V)
IF V<>T.Comment Then ' here
T.Comment=V ' and here
IF Q Then Exit Sub
' Output report
If (Opt AND 2) Then Exit Sub
T=P & " track" & Plural(P,"s","")
Just another step towards singularity (in the sense of a musician and visuals artist merging). I imagine there is a day not to far in the future where acoustic designers regularly write algorithms for display and sound playback simultaneously.
And now for a track that has been sitting in my WordPress draft pile for months… Steve Bug hits us with a classic acid squeaker ‘This is Acid’ that bridges the gap between Brett Johnson/DJ Heather’s Everything’s Electric and John Tejada’s Sweat On The Walls (another classic from Pokerflat). This track should, by all means, be a tired cliche. A TB-303 (or some kind of clone) carrying the entire track, with vocals about acid?.. I’d normally be ranting (not raving) about how that scene got old and died (or got stuck in an awful permatrip) in Chicago twenty or so years ago. However the bass line is passive-aggressive enough to remain contemporary, and the vocals are so self reflexive that we end up with a modern day heater that doubles as a road map out of your 4 AM panic attack resulting from the uncertinanty about that second or third hit you just ingested. Indeed, Mr. Bug, this is acid.