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
> [email protected]
> Please visit this url to subscribe, unsubscribe and manage your subscription
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
_______________________________________________
use-livecode mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode