Help! PlayCommand Agent X

Thierry Douez th.douez at gmail.com
Fri Oct 12 11:41:40 EDT 2012


2012/10/12 Peter M. Brigham <pmbrig at gmail.com>:
> Instead of delving into PlayCommand Agent X (whatever that is, and my ignorance may make this comment useless), could you not just write your own simpler custom play command in LC, to mirror what you get from shakobox, something along the lines of:
>
> local tChannel, tVolume, tNote, tInstrument, tID, tTempo
>
> on mbPlay tInstrument, tTempo, tNotes
>    -- handle default assignments here
>    -- get duration from the tTempo variable
>    repeat for each item tNote in tNotes
>       SunnYmidi.Play tChannel, tDuration, tVolume, tNote
>    end repeat
> end mbPlay
>
> Probably too crude, but you get the idea. Am I out in left field thinking I'm playing soccer?
>  I usually look for an LC-native way of doing things.

Yes Peter, you are right.

Here is the code I posted yesterday on my 3 minutes to emulate Agent X,
which just do what you are saying:

on SBplay instrument, _tempo, notestring
   sunnYmidi.Set 1, "instrument", instrumentID( instrument)
   sunnymidi.HCplay 1, _tempo, notestring
end SBplay

on SBstartNote instrument, pitch, velocity
   sunnYmidi.Set 1, "instrument", instrumentID( instrument)
   sunnYmidi.Play, 1, -1, velocity, pitch
end SBstartNote

on SBstopNote instrument,pitch
   sunnYmidi.Set 1, "instrument", instrumentID( instrument)
   sunnYmidi.Play, 1, 0, 0, pitch
end SBstopNote

private function  instrumentID instrument
   -- assuming the ID is correct
   if instrument is a number then return instrument
   -- custom prop containing on each line:  IDinstrument,InstrumentName
   get the GM_Instruments of this stack
   filter IT with "*," & instrument
   if IT is empty then return 1 -- piano
   return item 1 of IT -- the ID
end instrumentID

With the proof: ( copy-paste this script from Shakobox documentation)

on mouseup
  --    "Nic's Russian Tune (Katyushka)" from "Knit Your Own Yoghurt"
  put "e4q. f#4e g4q. e4e gq f#e ee f#q b3q f#q. ge aq. f#e aq ge f#eeq rq " & \
    "b4q e5q d5q e5e d5e c5q b4e a4e b4q e4q c5q. a4e b4q. g4e a4q
g4ef# 4e e4h " & \
    "g4q. a4e b4q. g4e b4q a4e g4e f#4q a4q a4q. b4e c5q. b4e c5q b4e
a4e g4q rq " & \
    "e5q g5q b4q b4e d5e e5q d5e c5e e5q b4q e5q. c5e e4q. b4e d#5q
e5e f#5e e5h"  \
        into theSong
  sbplay 24,125,theSong
end mouseup


Thierry




More information about the use-livecode mailing list