groove blox - started already. Need help with arrays and snap to

Bob Sneidar bobs at twft.com
Thu Aug 11 12:37:29 EDT 2011


Arrays are easy. To create one, simply put something into the first element: put "~/Music/GrooveBox/groovyarp.wav" into arps["track1"]. If instead, you want a multidimensional array containing all your categories: put "~/Music/GrooveBox/groovyarp.wav" into aTracks[arps]["track1"]. 

If you need multiple elements for each track:
put "Groovy Arp" into aTracks[arps]["track1"]["name"]
put "~/Music/GrooveBox/groovyarp.wav" into aTracks[arps]["track1"]["path"]
put "Groovy Rythm" into aTracks[drums]["track1"]["name"]
put "~/Music/GrooveBox/groovyrythm.wav" into aTracks[drums]["track1"]["path"]

If the tracks are the top level key:
put "Groovy Rythm" into aTracks["track1"]["name"]
put "Drums" into aTracks["track1"]["type"]
put "~/Music/GrooveBox/groovyrythm.wav" into aTracks["track1"]["path"]
put "Groovy Arp" into aTracks["track2"]["name"]
put "Arps" into aTracks["track2"]["type"]
put "~/Music/GrooveBox/groovyarp.wav" into aTracks["track2"]["path"]

A few caveats: It does not follow that the order of the keys will be the order you created them. I do not know why this is. For this reason, you could not put the keys of aTracks and expect them to be in the order "track1,track2,track3, ...". Refer to them by name. Secondly, you cannot test to see if atracks is empty, because an array will return true. I do not know why this is. To see if an array variable is empty, use: atracks is an array. 

If you have Trevor Devore's excellent and highly recommended sqlYoga, you can use his printkeys() function to turn an array into text that can be searched or filtered. Using the above example it would look like this:
track1
     name: Groovy Rythm
     type: Drums
     path: ~/Music/GrooveBox/groovyrythm.wav
track2
     name: Groovy Arp
     type: Arps
     path: ~/Music/GrooveBox/groovyarp.wav

Now you can use the filter command to get all the paths: 
   filter thetracks with "*path:*"

which produces: 
     path: ~/Music/GrooveBox/groovyrythm.wav
     path: ~/Music/GrooveBox/groovyarp.wav

Now delete the headers using: 
   replace "     path: " with empty in thetracks

Which magically and without fuss produces a list of file paths to your tracks:
~/Music/GrooveBox/groovyrythm.wav
~/Music/GrooveBox/groovyarp.wav

Very handy with large arrays! Don't have to create repeat loops! (Trevor did that for you). :-)

Bob


On Aug 10, 2011, at 3:44 PM, Admin wrote:

> 
> 
> Dear All, 
> 
> I already got drag and drop sort of working - can drag
> a wave file to a rectangle and it retains the name of the file - so now
> I can play that file once it is dragged to the track view. 
> 
> I am not
> sure how to make an array - and I assume an array is what I need to keep
> track of multiple blocks (there are 4 categories of blocks - drum, arp,
> bass and fxfill) 
> 
> Also, how would I implement a 'snap to' interface?
> 
> 
> Mike 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the Use-livecode mailing list