{"_id":"loop-grid","_rev":"48-f6a51f51b0a6d91ed4a75e6cb4dca7da","name":"loop-grid","description":"An observable collection of looped event sequences shaped to a grid.","dist-tags":{"latest":"6.1.0"},"versions":{"1.0.0":{"name":"loop-grid","version":"1.0.0","description":"Make grid based controllers that trigger events and record loops using soundbank and loop-recorder.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["loop","midi","launchpad","monome","push","observ","controller","waapi","music","perform","live","grid","soundbank"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","observ":"^0.2.0","observ-struct":"^5.0.1","observ-array":"^1.2.0"},"devDependencies":{"ditty":"*","loop-recorder":"*","tape":"^2.14.0"},"gitHead":"e73fd21e971dc3db9b9b1518c1721e55611a93d0","_id":"loop-grid@1.0.0","_shasum":"ceeaa1e7d582ae16082f6320f936f332e7b280c0","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"ceeaa1e7d582ae16082f6320f936f332e7b280c0","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-1.0.0.tgz","integrity":"sha512-cTlqEx/ThoZGikBxDIPz575F4mIWyDAl92xLsG7Qo0/CxqGmqSI8ngNzi3jxON8vI8jFjU5zJCbgfJpx0IhBig==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG40a5Ym4hPe/HQTN6DuyOu5vDuYar/pTAPpwX5hcH4pAiEA0qB/kOF1pIBiH9zsB7EZgtK1ggGBkBQrFdIVx5ASNIo="}]}},"1.1.0":{"name":"loop-grid","version":"1.1.0","description":"Make grid based controllers that trigger events and record loops using soundbank and loop-recorder.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["loop","midi","launchpad","monome","push","observ","controller","waapi","music","perform","live","grid","soundbank"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^1.2.0","observ-struct":"^5.0.1"},"devDependencies":{"ditty":"*","loop-recorder":"*","tape":"^2.14.0"},"gitHead":"8359484fba93f5de8096222983431d0a95f9e1ca","_id":"loop-grid@1.1.0","_shasum":"0a8a8d60cea35b8abf600813d0d4edbf6e50673c","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"0a8a8d60cea35b8abf600813d0d4edbf6e50673c","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-1.1.0.tgz","integrity":"sha512-4Ds1zAfI6DMiH6Bc8ve9skN9gAWzKQM/QeUcLwyrbPySgUWnLERtWZKCW3K3vuo1AaXudaEiHwUJYIfuR+zi1w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRKHbfSgGLqTZKdWluDMNbJlc/yBuwydhX7r/MQl2uxQIgdutu3rRkg2bIVwR0DlByv/Wl8Vgv5JvKzN2GtD0mYlk="}]}},"1.2.0":{"name":"loop-grid","version":"1.2.0","description":"Make grid based controllers that trigger events and record loops using soundbank and loop-recorder.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["loop","midi","launchpad","monome","push","observ","controller","waapi","music","perform","live","grid","soundbank"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^1.2.0","observ-struct":"^5.0.1"},"devDependencies":{"ditty":"*","loop-recorder":"*","tape":"^2.14.0"},"gitHead":"5ece178aed1ac21c6058a908dd04ab16b01b2bb8","_id":"loop-grid@1.2.0","_shasum":"02f3c75c4d179119f7710108439601f726736b56","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"02f3c75c4d179119f7710108439601f726736b56","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-1.2.0.tgz","integrity":"sha512-gx9lBotgRKeWrim3T5JV4khIPv6gGEkse2FvJIyLyfMllVfi1vbBuKEkIafGHmToINOCfj6YJkTJi7b2X9jYFQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC66KG5b5crfBGPa4fR4EwuhVNR8m5MZJZ+UzZOJfZcEQIgH9zj0P//qfD3fzU1Q+VOGOQ/iDM7WPHplXOD6mPMlMc="}]}},"1.2.1":{"name":"loop-grid","version":"1.2.1","description":"Make grid based controllers that trigger events and record loops using soundbank and loop-recorder.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["loop","midi","launchpad","monome","push","observ","controller","waapi","music","perform","live","grid","soundbank"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^1.2.0","observ-struct":"^5.0.1"},"devDependencies":{"ditty":"*","loop-recorder":"*","tape":"^2.14.0"},"gitHead":"534bd3c7d3d8f84ed1cf2d7290b546066f12074a","_id":"loop-grid@1.2.1","_shasum":"bc024f159a93023eff09c251317dc10d94b31716","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"bc024f159a93023eff09c251317dc10d94b31716","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-1.2.1.tgz","integrity":"sha512-YO9hy4DV/gy0xdlWt8bE/EPB5pN0NPsXP5o/YhJHLhi9cN4/Sb075n7ELJmw9xfVPcWpvfCI6TgWtl5V2JSkOA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH7g7q+ehYppk7uwQ+V/eG7ivbwGQ9P86V+DEgnPCCxYAiB1Df8QVi3uOi0dxJsibn80d+wKRUItRHkfFTUNIYRQTA=="}]}},"1.3.0":{"name":"loop-grid","version":"1.3.0","description":"Make grid based controllers that trigger events and record loops using soundbank and loop-recorder.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["loop","midi","launchpad","monome","push","observ","controller","waapi","music","perform","live","grid","soundbank"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^1.2.0","observ-struct":"^5.0.1"},"devDependencies":{"ditty":"*","loop-recorder":"*","tape":"^2.14.0"},"gitHead":"23f9d900cd007f2880b4e8c3380c2e5fe3900a3b","_id":"loop-grid@1.3.0","_shasum":"c85299a1daf8871a8fa0bef99d41773b5f33fcc7","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"c85299a1daf8871a8fa0bef99d41773b5f33fcc7","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-1.3.0.tgz","integrity":"sha512-7pCAJWxP2L3uIPSqp311X76u3GetF+Rc+Vk6AJmX8PpmTeNImZdCQ2tLA8B52J0nSmEztI2jPpUlooL4q5fcRw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXZNqARaf6H2itB3S8h5gUNo4Grwmq7UeQpc7qM2JlpwIhAM88om686Ds4keujoZygKuIWU1zhRuTZoVmmC9nH4lGA"}]}},"1.4.0":{"name":"loop-grid","version":"1.4.0","description":"Make grid based controllers that trigger events and record loops using soundbank and loop-recorder.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["loop","midi","launchpad","monome","push","observ","controller","waapi","music","perform","live","grid","soundbank"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^1.2.0","observ-struct":"^5.0.1","xtend":"^4.0.0"},"devDependencies":{"ditty":"*","loop-recorder":"*","tape":"^2.14.0"},"gitHead":"2700787b86b49dd9e9f18560893ba055783f400e","_id":"loop-grid@1.4.0","_shasum":"43bdab6b0aa0d5ee9a95a725a8a23da54b1ca756","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"43bdab6b0aa0d5ee9a95a725a8a23da54b1ca756","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-1.4.0.tgz","integrity":"sha512-vJT1mst3kcUbEB1H2xV0yODnOlCtqjKE/zy6lIQPPP0Cx4VPbL0BV5/KkRGBFPWKf0y+CZgJOyhAAq2kikTCyg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICMg5OV6efeM2VKbt73peNlEo3QdpiyklP3VrUzQRVnkAiAtmIPfWWwBMnRhv39EEK18H0wUElsdDRLWeBEY10WR/w=="}]}},"1.5.0":{"name":"loop-grid","version":"1.5.0","description":"Make grid based controllers that trigger events and record loops using soundbank and loop-recorder.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["loop","midi","launchpad","monome","push","observ","controller","waapi","music","perform","live","grid","soundbank"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^2.0.0","observ-struct":"^5.0.1","xtend":"^4.0.0"},"devDependencies":{"ditty":"*","loop-recorder":"*","tape":"^2.14.0"},"gitHead":"3317ca98a123515f9c04b55b2b04c009504a9501","_id":"loop-grid@1.5.0","_shasum":"caf470cbca2bedf151181526b1371a5b1aceb8bd","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"caf470cbca2bedf151181526b1371a5b1aceb8bd","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-1.5.0.tgz","integrity":"sha512-bY36I6L48K4Pbb1XsxVZYGPXtc5QLYSPmrNIjYCmOK5jgtDpr2Y5H53CTa16t9P6PoNm0OmIWfsTyL3SA9PVjg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFUXeLBWlwEyAR0isKit2/jJUGCckFmMCPh5DikFtkUwAiEAmyRNTc+5rurO7RBXdXAsTBCsz2PMZhUf3giJtIFTAL0="}]}},"2.0.0":{"name":"loop-grid","version":"2.0.0","description":"Make grid based controllers that trigger events and record loops using soundbank and loop-recorder.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["loop","midi","launchpad","monome","push","observ","controller","waapi","music","perform","live","grid","soundbank"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-struct":"^5.0.1","observ-varhash":"^0.2.0","xtend":"^4.0.0"},"devDependencies":{"ditty":"*","loop-recorder":"*","tape":"^2.14.0"},"gitHead":"1de1739ec166f0221acc4f85450084899139a1f1","_id":"loop-grid@2.0.0","_shasum":"a40d960fa4f826d59f54a51a6bf8b66c0f06712a","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"a40d960fa4f826d59f54a51a6bf8b66c0f06712a","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-2.0.0.tgz","integrity":"sha512-3JtyHcN07hAbpvZKATJNbHfCYc84PWM20CvFvqezmHa0V1lT/LZZ3/b6gx9GVzAwnIYUSUMeggwP9Y2TyeVjZw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTO2Thy+vybo29eSz9TYwWZ0SyqH3+6x4IoUhV6IgUXQIgJJKqYoNBncnz57wS5Xa5l0hGuisXhp/mSlTffiJIV2M="}]}},"3.0.0":{"name":"loop-grid","version":"3.0.0","description":"Make grid based controllers that trigger events and record loops using soundbank and loop-recorder.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["loop","midi","launchpad","monome","push","observ","controller","waapi","music","perform","live","grid","soundbank"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-struct":"^5.0.1","observ-varhash":"^0.2.0","xtend":"^4.0.0"},"devDependencies":{"ditty":"*","loop-recorder":"*","tape":"^2.14.0"},"gitHead":"9e980ceb42850e570e02efac98ed85ac4838a6b2","_id":"loop-grid@3.0.0","_shasum":"d5230728afd553f38746bb13ac230c3b88dbe886","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"d5230728afd553f38746bb13ac230c3b88dbe886","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-3.0.0.tgz","integrity":"sha512-/2ayteilgW6PY7wFTX1wzHZaB8S/sMJgyVFTVqt0bOJSaYVfhC9uZ9J0OTxW41Y0B04fBVfNuAwR5VoBGvJ2ig==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbIR+/hUXBifpqitnL1wT8XWo/704ToNTaSFJnFZ5ZOwIhAPKTGgxOSf35guGJQ4jnI3f567d5YHqSphnRjX9B1c87"}]}},"3.1.0":{"name":"loop-grid","version":"3.1.0","description":"Make grid based controllers that trigger events and record loops using soundbank and loop-recorder.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["loop","midi","launchpad","monome","push","observ","controller","waapi","music","perform","live","grid","soundbank"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-struct":"^5.0.1","observ-varhash":"^0.2.0","xtend":"^4.0.0"},"devDependencies":{"ditty":"*","loop-recorder":"*","tape":"^2.14.0"},"gitHead":"9058e132cf575c177e9aa2b257623db8a143c7e6","_id":"loop-grid@3.1.0","_shasum":"9378abba43d7f406c22fa7e77c8f647c300cf095","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"9378abba43d7f406c22fa7e77c8f647c300cf095","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-3.1.0.tgz","integrity":"sha512-m0UBOQnnZaj9IPfzVv3qWJi9biDTFXP40Gg4MNl4JhW5AYAcJ3nR4/33Gl9tP4p9pLa9Tzq8Gr8vFLuCfjLoRw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0LDKB6acCguploOZ5/HPxnBQ0YzRqgzaVFWOLSa0IjAIgK/T9v5QpoJu4ghb8VmT3iJjypwL1bm12FphCDzZyC4w="}]}},"3.2.0":{"name":"loop-grid","version":"3.2.0","description":"Make grid based controllers that trigger events and record loops using soundbank and loop-recorder.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["loop","midi","launchpad","monome","push","observ","controller","waapi","music","perform","live","grid","soundbank"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-struct":"^5.0.1","observ-varhash":"^0.2.0","xtend":"^4.0.0"},"devDependencies":{"ditty":"*","loop-recorder":"*","tape":"^2.14.0"},"gitHead":"c079d2dd1f6664ab41140cbdb1aef04d5196c666","_id":"loop-grid@3.2.0","_shasum":"26929e7b42846044a8c4d461fb1a981d29f60a1d","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"26929e7b42846044a8c4d461fb1a981d29f60a1d","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-3.2.0.tgz","integrity":"sha512-xJ/2AgekT9ZH8erCxiPI/SOoRGiM3tSdlcQyTbDDS279/gS61tvvu7bEtQ2Se6oMVklQ1+8XF7JI8I+rH3TUNg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEt569k8fwPMlaasbAO5H5RHreJxnznTDxQO4KtULIRLAiEAo+0hBE8OEoweq9dzygGiA0C1UNhZckCNkm9X+2jdmGg="}]}},"3.3.0":{"name":"loop-grid","version":"3.3.0","description":"Make grid based controllers that trigger events and record loops using soundbank and loop-recorder.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["loop","midi","launchpad","monome","push","observ","controller","waapi","music","perform","live","grid","soundbank"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-struct":"^5.0.1","observ-varhash":"^0.2.0","xtend":"^4.0.0"},"devDependencies":{"ditty":"*","loop-recorder":"*","tape":"^2.14.0"},"gitHead":"22d80489ec260413da891aa7f21270f0c6a8e49e","_id":"loop-grid@3.3.0","_shasum":"f39d3d074b36e22db2bf547dbe6e590becc9c56b","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"f39d3d074b36e22db2bf547dbe6e590becc9c56b","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-3.3.0.tgz","integrity":"sha512-kVDLvm3zPcj98obQM37pS/05jqipUc2JdjCRQR8W5ccCNXNLEzHZhKCP8SIv9QOWyh4JM5LDOeLmMa3ryHRPjQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGGKPYQecWImlZXjZHOvQr2UbyUeP65YdchqBapbykriAiBTrHMji8fTHqHg0FIKREdmuRQcat7REEP60/1goInfTQ=="}]}},"3.3.1":{"name":"loop-grid","version":"3.3.1","description":"Make grid based controllers that trigger events and record loops using soundbank and loop-recorder.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["loop","midi","launchpad","monome","push","observ","controller","waapi","music","perform","live","grid","soundbank"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-struct":"^5.0.1","observ-varhash":"^0.2.0","xtend":"^4.0.0"},"devDependencies":{"ditty":"*","loop-recorder":"*","tape":"^2.14.0"},"gitHead":"cbc0860ea2708806efaddbbc3109e4f6eb0891e6","_id":"loop-grid@3.3.1","_shasum":"b9e4cf34ab594e1a37b9c84ebed41d00374208e8","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"b9e4cf34ab594e1a37b9c84ebed41d00374208e8","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-3.3.1.tgz","integrity":"sha512-5WYSFyzeLXQT8sTUPS0SnRPrWL9ZbR538/+8PMG5F1YyFg1sTrNpFyRlZxSqPqJ4ivkWWhPnQt9tZIB2izfYmg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFX1KyyJAobdsiFzqOoIACRyg3pAGKgLGihbjP0LDCsZAiEAhoSwRVD1h1X3ssCe2Y2+rgej58vK4Om69A7DYVH3feE="}]}},"4.0.0":{"name":"loop-grid","version":"4.0.0","description":"An observable collection of looped event sequences shaped to a grid.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","geval":"^2.1.1","loop-recorder":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-struct":"^5.0.1"},"devDependencies":{"tape":"^2.14.0"},"gitHead":"93a44057f0189196a1de7d1e8286960f7a64a597","_id":"loop-grid@4.0.0","_shasum":"96d27ef5418606772d952313b54159310c25bc2c","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"96d27ef5418606772d952313b54159310c25bc2c","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-4.0.0.tgz","integrity":"sha512-7BdojeuiYpM/JGeF9g4CDHIYJEljV+FJAIYebE20LHix6UpYeJhPc4yFmQa2r61SA+iUyCeWYxAO7+AJ4rXjgQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHjJv9MNzk+eV3y5aqsHF1xrh5AU7Q9stNpphcfDIOM9AiEAz+dce9WaMxe7V40nAN32Et+UmeqOxsGkjIbwIa1EOcw="}]}},"4.1.0":{"name":"loop-grid","version":"4.1.0","description":"An observable collection of looped event sequences shaped to a grid.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","geval":"^2.1.1","loop-recorder":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-struct":"^5.0.1"},"devDependencies":{"tape":"^2.14.0"},"gitHead":"e8a5cb14cc374a607fef5bb148bacb829f73943f","_id":"loop-grid@4.1.0","_shasum":"dfead2219ba8c3fe9605605095404667a05d694c","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"dfead2219ba8c3fe9605605095404667a05d694c","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-4.1.0.tgz","integrity":"sha512-KthMURb/fCWUh/lUbypFSLqUMfto415iFtqaia58sjsNG2pnmAEK7eZMPNtIsWTIGJ2bElOpOLTS0LKKzPsbKQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0jCIkyfCfonJSRyAAexAEOlZkwBCY4XHoGiRL1tAgdAIhANz4e2S3MRgG+7vuP2+tpiI8PYF5dApIzF+hd7c5MtPm"}]}},"4.2.0":{"name":"loop-grid","version":"4.2.0","description":"An observable collection of looped event sequences shaped to a grid.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","geval":"^2.1.1","loop-recorder":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-struct":"^5.0.1"},"devDependencies":{"tape":"^2.14.0"},"gitHead":"c01c7fc2036c89c9429fb696c2fedf5c7b34d6d8","_id":"loop-grid@4.2.0","_shasum":"268b9966f8cb7e8523e04b21ed417732c7c5a2fe","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"268b9966f8cb7e8523e04b21ed417732c7c5a2fe","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-4.2.0.tgz","integrity":"sha512-WTomGzcfFvIRJvNPvBu8vdtysYfo229B/PZ65YpkKbPUcVdePLuKvI93u7yKxiAfkOoGU2MZDVMRR0nKOH98xg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFmd1VpiJYF5HNugCqxE72ehSC5YcwUYpRXnGHfaEj1oAiA4FMY9MmEQlIah0ZUxeE5sqhGs+40vlNGOVwEZ1QXyPw=="}]}},"4.2.1":{"name":"loop-grid","version":"4.2.1","description":"An observable collection of looped event sequences shaped to a grid.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","geval":"^2.1.1","loop-recorder":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-struct":"^5.0.1"},"devDependencies":{"tape":"^2.14.0"},"gitHead":"983ffe295f19ebe6784d6dd631488cd4f5fec59d","_id":"loop-grid@4.2.1","_shasum":"a41bb4deb619908da9a560515d397c4f79daa576","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"a41bb4deb619908da9a560515d397c4f79daa576","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-4.2.1.tgz","integrity":"sha512-hubja+/4aOG7ZkL0yae/64ayVRIQzcH8ZGkzR7CyIYj3x/xeidt4YLIHdqRowbEjO4UzDuXj7GyYq+FQCX76/w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBuJtNkEIkLkIuX9R+EanbTBnbhE1xesjxxfEGKXCh2TAiBfh9wIEYc0dgPAp7AsmV8YDXrKQeCY/iqsTw882csJ8w=="}]}},"4.3.0":{"name":"loop-grid","version":"4.3.0","description":"An observable collection of looped event sequences shaped to a grid.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"git+https://github.com/mmckegg/loop-grid.git"},"keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","geval":"^2.1.1","loop-recorder":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-struct":"^5.0.1","xtend":"^4.0.0"},"devDependencies":{"tape":"^2.14.0"},"gitHead":"af2e41c917e3eff6023ea757509211f565d2b159","_id":"loop-grid@4.3.0","_shasum":"d71ac5863b0583645bd498dfc7e2af426bc32a0b","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"dist":{"shasum":"d71ac5863b0583645bd498dfc7e2af426bc32a0b","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-4.3.0.tgz","integrity":"sha512-Kf6x1jXhmaWf9Wza5Grb+O85s4Dcp83+XcQWPDDjnV5TR2sBZFLbtSR4MFqydz1lmV16UkWzbH/ayDw+qERWxA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEcOx0bDpBwT3Gd4ohZDOnad5scboaqZDjEPIh7fCN58AiBFN1HRoRi6YyACkuq2lU4LunZk3QB/CD9UVDdAMFg+0Q=="}]},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}]},"4.4.0":{"name":"loop-grid","version":"4.4.0","description":"An observable collection of looped event sequences shaped to a grid.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"git+https://github.com/mmckegg/loop-grid.git"},"keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","geval":"^2.1.1","loop-recorder":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-grid":"^2.10.1","observ-struct":"^5.0.1","xtend":"^4.0.0"},"devDependencies":{"tape":"^2.14.0"},"gitHead":"34540b31dbeb5ab8aa553564506802cec0bdac64","_id":"loop-grid@4.4.0","_shasum":"e6218bd27cadf1ce9fadc2395df92959533f2fc5","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"dist":{"shasum":"e6218bd27cadf1ce9fadc2395df92959533f2fc5","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-4.4.0.tgz","integrity":"sha512-Ln4gnbDemYqlN3rk8NaJ29qhQ+eb654YAoS6oh+MiP8udH6l6JwFiaxadyALVelL/CCl4ZvIOtQ6etB1UeAIww==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqQ2cRkCJEwmbhowrFn65ltHrGxxko37ZHWmwOkjRa2wIhAOPnJq8J39fpJpdQQmE5M1NzSPwQ6N/6/CG+C7I9YyB8"}]},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}]},"5.0.0":{"name":"loop-grid","version":"5.0.0","description":"An observable collection of looped event sequences shaped to a grid.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","geval":"^2.1.1","loop-recorder":"^1.1.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-grid":"^2.10.1","observ-struct":"^5.0.1","xtend":"^4.0.0"},"devDependencies":{"tape":"^2.14.0"},"gitHead":"110cca52841a12d155c6a8c6bda1d740268bb1a3","_id":"loop-grid@5.0.0","_shasum":"5337d8d14ceeb4be1af278166fe5a370512bffc4","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"5337d8d14ceeb4be1af278166fe5a370512bffc4","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-5.0.0.tgz","integrity":"sha512-MacGVGaXspMbM2Y+tVN9mU2dVz2Zw/1b8dwq33p9izFBOPa8YSNICVgVo0OJUjXwBqRxqgWAsG7KAI7fi5/OdA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAKSkFgQ3YS2yQkMKvyMUMT/R7+J7er1z/BGDyveQRxTAiEA51Pt625kNemTiY/TmL3PJdgqcp+OFH1PqHh2o9Sy2Lc="}]}},"5.0.1":{"name":"loop-grid","version":"5.0.1","description":"An observable collection of looped event sequences shaped to a grid.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"https://github.com/mmckegg/loop-grid.git"},"keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","geval":"^2.1.1","loop-recorder":"~1.2.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-grid":"^2.10.1","observ-struct":"^5.0.1","xtend":"^4.0.0"},"devDependencies":{"tape":"^2.14.0"},"gitHead":"3c387f7e0794248bc92c5464d8e79c020620d29a","_id":"loop-grid@5.0.1","_shasum":"03774befc152a8678958bdab41d610a841a362a7","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"dist":{"shasum":"03774befc152a8678958bdab41d610a841a362a7","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-5.0.1.tgz","integrity":"sha512-wMsQ3CFxfLgeMt2L6YkVrc04NLqNSDykiLy21T3hDoi69mj5TIzavsoQaQ9D+iQnsqFbzp2R9S8GIzcAsBVtUw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB3jVbgeIa6R6OhRXiDEX9vGRRgFh5aFuhhwdY8CdLCLAiEArf9pHrGSMpy9GRg/3hZa6MlSHr+B+VhRXBv+UYtVqW0="}]}},"5.0.2":{"name":"loop-grid","version":"5.0.2","description":"An observable collection of looped event sequences shaped to a grid.","main":"index.js","scripts":{"test":"tape test/*.js"},"repository":{"type":"git","url":"git+https://github.com/mmckegg/loop-grid.git"},"keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","geval":"^2.1.1","loop-recorder":"~1.2.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-grid":"^2.10.1","observ-struct":"^5.0.1","xtend":"^4.0.0"},"devDependencies":{"tape":"^2.14.0"},"gitHead":"87f9f6bd96032b29105dd7a0ee5a061994c6e395","_id":"loop-grid@5.0.2","_shasum":"44521a25cee8490b3e2db5a6d2bf29d8390249be","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"dist":{"shasum":"44521a25cee8490b3e2db5a6d2bf29d8390249be","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-5.0.2.tgz","integrity":"sha512-/hexgU1WHp9uC1Oxyk1vrdTQsm+9m4hYwYPtTHFU2WrcbCyqkdSRl9di/NJdZhnd/futGjvxmpybjfM24STTtA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB51jgfoQXSEg6578r/vLDEGJyEGRugOvJHpdL+2QidNAiA8GX8CAxBBVpKY+XSmML39YhZm/9P0hy28pvYOvjCWjw=="}]},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}]},"5.0.3":{"name":"loop-grid","version":"5.0.3","description":"An observable collection of looped event sequences shaped to a grid.","main":"index.js","scripts":{"test":"snazzy && tape test/*.js"},"standard":{"ignore":["test/test-*.js"]},"repository":{"type":"git","url":"git+https://github.com/mmckegg/loop-grid.git"},"keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","geval":"^2.1.1","loop-recorder":"~1.2.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-grid":"^2.10.1","observ-struct":"^5.0.1","xtend":"^4.0.0"},"devDependencies":{"snazzy":"^2.0.1","tape":"^2.14.0"},"gitHead":"1f9a582368c1d36e0e6c887a8266181804e4b3df","_id":"loop-grid@5.0.3","_shasum":"62ed77f380d63d9265274d716748899811c1b0e8","_from":".","_npmVersion":"2.14.4","_nodeVersion":"4.1.1","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"dist":{"shasum":"62ed77f380d63d9265274d716748899811c1b0e8","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-5.0.3.tgz","integrity":"sha512-3ieC0PVCDL/naBVhNfuxaCx/HAi6qOCGtPtKwl/Z2k9c2+DIRO7pHi3E6QwFrUaVEWMlWKEWk50JDFWfN84ilA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfgFRgZ+6ia9/l2qziT5S23o3l2Phwa4eUX2OpSo2AowIhALY3oxwtqgnbvfzi36uH1AWNiE02KV9boS//4WP7BDt/"}]},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}]},"5.1.0":{"name":"loop-grid","version":"5.1.0","description":"An observable collection of looped event sequences shaped to a grid.","main":"index.js","scripts":{"test":"snazzy && tape test/*.js"},"standard":{"ignore":["test/test-*.js"]},"repository":{"type":"git","url":"git+https://github.com/mmckegg/loop-grid.git"},"keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","geval":"^2.1.1","loop-recorder":"~1.2.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-grid":"^2.10.1","observ-struct":"^5.0.1","xtend":"^4.0.0"},"devDependencies":{"snazzy":"^2.0.1","tape":"^2.14.0"},"gitHead":"1ea1e5e169a60b712a8d85068d4ee6318ae090d2","_id":"loop-grid@5.1.0","_shasum":"12b51d2ede46dd66c3cca0ade532a3de345f5b5d","_from":".","_npmVersion":"2.14.4","_nodeVersion":"4.1.1","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"dist":{"shasum":"12b51d2ede46dd66c3cca0ade532a3de345f5b5d","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-5.1.0.tgz","integrity":"sha512-34jHox6XEys8ssfami4NbH/o7V2eyJKWH9l+Jx3Ua2irNgWo2oSR71HCKdgF8uHalQ0sf2Z/PvWxXr2lLkGtkw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDi1SChD1m3lHM73C/0nla6wf2xjNr/8uqhehOS7FmAsAIgPsoFvX91wP9OMbwe/o0S4ZzJjN6//yKNky3H0AVDwcQ="}]},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}]},"5.1.1":{"name":"loop-grid","version":"5.1.1","description":"An observable collection of looped event sequences shaped to a grid.","main":"index.js","scripts":{"test":"snazzy && tape test/*.js"},"standard":{"ignore":["test/test-*.js"]},"repository":{"type":"git","url":"git+https://github.com/mmckegg/loop-grid.git"},"keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","geval":"^2.1.1","loop-recorder":"~1.2.0","next-tick":"^0.2.2","observ":"^0.2.0","observ-array":"^3.0.0","observ-grid":"^2.10.1","observ-struct":"^5.0.1","xtend":"^4.0.0"},"devDependencies":{"snazzy":"^2.0.1","tape":"^2.14.0"},"gitHead":"4e869d538f2390a03bb64e68610b9af12c12a6ae","_id":"loop-grid@5.1.1","_shasum":"f4b22f5fdd7acfe3539392e115a75e3c2c7bda3c","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.4.1","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"dist":{"shasum":"f4b22f5fdd7acfe3539392e115a75e3c2c7bda3c","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-5.1.1.tgz","integrity":"sha512-S/rbb7vbon+xxoWcy7XlAOYnedZAYfsq3sg3PZFtqxSLm3LiSof/PX6UQmlt02H3fsPqGeHsmM0rsDEvN2ub1w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCldvVa3ee6lMB8PwOSl1lo6WRcD5uL+Ynzw0zc7CU+pAIhANeQA8Yb7Wxfq+1M9XkqUY088dpcX/4AA8ziXHu32thA"}]},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}]},"6.0.0":{"name":"loop-grid","version":"6.0.0","description":"An observable collection of looped event sequences shaped to a grid.","main":"index.js","scripts":{"test":"snazzy && tape test/*.js"},"standard":{"ignore":["test/test-*.js"]},"repository":{"type":"git","url":"git+https://github.com/mmckegg/loop-grid.git"},"keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"author":{"name":"Matt McKegg"},"license":"ISC","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","geval":"^2.1.1","observ":"^0.2.0","observ-array":"^3.0.0","observ-grid":"^2.10.1","observ-struct":"^5.0.1","setimmediate2":"^2.0.1"},"devDependencies":{"snazzy":"^2.0.1","tape":"^2.14.0"},"gitHead":"f7486a1ba05728b19880c05a17f7de06651d977b","_id":"loop-grid@6.0.0","_shasum":"35f2df9e09c102e08ce620c292a2afc2f9588d74","_from":".","_npmVersion":"3.5.3","_nodeVersion":"5.5.0","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"dist":{"shasum":"35f2df9e09c102e08ce620c292a2afc2f9588d74","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-6.0.0.tgz","integrity":"sha512-V1FqVWtTRQvVMi2A7DgLOaKOLm3uxj+N8VB+tpeg2XajrN2MQUX3yZL057K5Yd5gOMVUHeyVcWsEARNAvak8jA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCz+orovKs6o5W17/6BVahyzgOAfBo1Q8ieG9YQp6VvewIhAPbCpE4PzwoAq9r2cNVS3Oma50Mq4QgezZCPit9e6QN7"}]},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/loop-grid-6.0.0.tgz_1458783111955_0.685329751111567"}},"6.0.1":{"name":"loop-grid","version":"6.0.1","description":"An observable collection of looped event sequences shaped to a grid.","main":"index.js","scripts":{"test":"snazzy && tape test/*.js"},"standard":{"ignore":["test/test-*.js"]},"repository":{"type":"git","url":"git+https://github.com/mmckegg/loop-grid.git"},"keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"author":{"name":"Matt McKegg"},"license":"AGPL-3.0","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","geval":"^2.1.1","observ":"^0.2.0","observ-array":"^3.0.0","observ-grid":"^2.10.1","observ-struct":"^5.0.1","setimmediate2":"^2.0.1"},"devDependencies":{"snazzy":"^2.0.1","tape":"^2.14.0"},"gitHead":"f5ab16435491636e9a590463271ae374a7272c36","_id":"loop-grid@6.0.1","_shasum":"075f2d3fd0ed0dbb2af943079f62eada9110c7ae","_from":".","_npmVersion":"3.5.3","_nodeVersion":"5.5.0","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"dist":{"shasum":"075f2d3fd0ed0dbb2af943079f62eada9110c7ae","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-6.0.1.tgz","integrity":"sha512-hYTPY3tYBsmPNHTk3mcVMsE/LOVrsUmCtU5JV1zpdZbuQF2TU9kmteZF0BXLGjjPukcp2xIqlRbFQ51Y+/GstQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDAzL4xs8uegxu0DsAUjJPL86zcBV8CyotDhpYebFa9DwIhALRMAXXcQbLfvXiCmBdqmCamN3eRqGoVr2bpqtTlIFMt"}]},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/loop-grid-6.0.1.tgz_1464084728883_0.7450310292188078"}},"6.0.2":{"name":"loop-grid","version":"6.0.2","description":"An observable collection of looped event sequences shaped to a grid.","main":"index.js","scripts":{"test":"snazzy && tape test/*.js"},"standard":{"ignore":["test/test-*.js"]},"repository":{"type":"git","url":"git+https://github.com/mmckegg/loop-grid.git"},"keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"author":{"name":"Matt McKegg"},"license":"AGPL-3.0","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","geval":"^2.1.1","observ":"^0.2.0","observ-array":"^3.0.0","observ-grid":"^2.10.1","observ-struct":"^5.0.1","setimmediate2":"^2.0.1"},"devDependencies":{"snazzy":"^2.0.1","tape":"^2.14.0"},"gitHead":"1ccb60ad1f013a67c38cd55d6e0003dfb1ca3508","_id":"loop-grid@6.0.2","_shasum":"5b09e6ec52fa7f253bb898b2e6142519cb08958e","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"dist":{"shasum":"5b09e6ec52fa7f253bb898b2e6142519cb08958e","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-6.0.2.tgz","integrity":"sha512-0lCBUc/bDZPSz+Q6CdGM5GXpQzzZJ9gNA2l7Bt6iJ0oZc8f3ASwO7IBenb3OzY8+pR8bjVc63KmOTQcs7HcAlw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLu3Vp2ZV9UAzEl542cGFjhJ8TAIHKrOXIxt6TqxokdQIhAPeDaIIjiT1SxxnWN1FEGg1p4qewW4YlapY08M3tP8Jw"}]},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/loop-grid-6.0.2.tgz_1464652409767_0.24345642141997814"}},"6.1.0":{"name":"loop-grid","version":"6.1.0","description":"An observable collection of looped event sequences shaped to a grid.","main":"index.js","scripts":{"test":"snazzy && tape test/*.js"},"standard":{"ignore":["test/test-*.js"]},"repository":{"type":"git","url":"git+https://github.com/mmckegg/loop-grid.git"},"keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"author":{"name":"Matt McKegg"},"license":"AGPL-3.0","bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"homepage":"https://github.com/mmckegg/loop-grid","dependencies":{"array-grid":"^1.1.0","geval":"^2.1.1","observ":"^0.2.0","observ-array":"^3.0.0","observ-grid":"^2.10.1","observ-struct":"^5.0.1","setimmediate2":"^2.0.1"},"devDependencies":{"snazzy":"^2.0.1","tape":"^2.14.0"},"gitHead":"9b1e94723e3f1c465b20dba628fd42b9b33995cf","_id":"loop-grid@6.1.0","_shasum":"d60dfde5aa98896cdd6233854fdfd29ca34a659a","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.5.0","_npmUser":{"name":"mmckegg","email":"matt@wetsand.co.nz"},"dist":{"shasum":"d60dfde5aa98896cdd6233854fdfd29ca34a659a","tarball":"https://registry.npmjs.org/loop-grid/-/loop-grid-6.1.0.tgz","integrity":"sha512-18Vmi3YC+KzYWX/QHo+95QtObLluFdDtVm6jKb+IvmIjYtZpt31b0w8YFHPHImt/BUtIXo69g34FeiP279OFrQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGQNmOvp6vc7eET15o0M41h4itrB6K/eLZMU/BSsJwYHAiEA7u/Cvl8d9rT9qf0B7fRz7UEm0HM8CmCKTJ/cwem5+gc="}]},"maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/loop-grid-6.1.0.tgz_1465883945793_0.41488054022192955"}}},"readme":"loop-grid\n===\n\nAn observable collection of looped event sequences shaped to a grid.\n\n## Install via [npm](https://npmjs.org/package/loop-grid)\n\n```js\n$ npm install loop-grid\n```\n\n## API\n\n```js\nvar LoopGrid = require('loop-grid')\n```\n\n### `var loopGrid = LoopGrid(options)`\n\nReturns an [observable](https://github.com/raynos/observ) instance of LoopGrid.\n\n#### options:\n  - **scheduler**: (required) instance of [Bopper](https://github.com/mmckegg/bopper)\n  - **triggerEvent**: (required) `function(event)` called for every event to be triggered\n  - **audio**: (required) instance of [AudioContext](https://developer.mozilla.org/en-US/docs/Web/API/AudioContext)\n\n### `loopGrid()`\n\nReturn the current object descriptor (state).\n\n### `loopGrid.set(descriptor)`\n\nSet the current object descriptor (state).\n\n### `loopGrid.shape` (`Observ([rows, cols])`)\n\nIncluded in state.\n\n### `loopGrid.loops` (`Observ([ { length: 8, events: [] }, ... ])`)\n\nIncluded in state.\n\n### `loopGrid.targets` (`Observ([ids])`)\n\nMapping of grid loops to ids.\n\nIncluded in state.\n\n### `loopGrid.loopLength` (`Observ(8)`)\n\nIncluded in state.\n\n### `var removeListener = loopGrid.onEvent(listener)`\n\n```js\nvar event = {\n  id: String,\n  event: 'start' | 'stop',\n  position: Number, // beat\n  time: Number, // based on\n  args: Array\n}\n```\n\n### `var value = loopGrid.loopPosition()`\n\n### `var removeListener = loopGrid.loopPosition(listener)`\n\n### `var arrayGrid = loopGrid.grid()`\n\nReturns [ArrayGrid](https://github.com/mmckegg/array-grid) based on `loopGrid.targets` and `loopGrid.shape`.\n\n### `var removeListener = loopGrid.grid(listener)\n\n### `var grid = loopGrid.playing()`\n\nReturns ArrayGrid of `true` values where target is currently being triggered.\n\n### `var removeListener = loopGrid.playing(listener)`\n\n### `var grid = loopGrid.active()`\n\nReturns ArrayGrid of `true` values where target has a current loop.\n\n### `var removeListener = loopGrid.active(listener)`\n\n### `loopGrid.destroy()`\n\n## Looper\n\n```js\nvar Looper = require('loop-grid/looper')\n```\n\n### `var looper = Looper(loopGrid)`\n\n### `var loops = looper()`\n\n### `var removeListener = looper(listener)`\n\n### `var currentlyRecording = looper.recording()`\n\n### `var removeListener = looper.recording(listener)`\n\n### `looper.store()`\n\n### `looper.flaten()`\n\n### `var releaseTransform = looper.transform(func(input, args..), args)`\n\nPass in a function to add to transform stack. `input` is an instance of [ArrayGrid](https://github.com/mmckegg/array-grid) and should return either the modified `input` or a new instance of `ArrayGrid`.\n\n### `looper.undo()`\n\n### `looper.redo()`\n\n### `looper.isTransforming()`\n\n## Computed Flags\n\n```js\nvar computeFlags = require('loop-grid/compute-flags')\n```\n\n## Computed Targets\n\n```js\nvar computeTargets = require('loop-grid/compute-targets')\n```\n\n## Selector\n\nRange selector for [loop-grid](https://github.com/mmckegg/loop-grid).\n\n## API\n\n```js\nvar Selector = require('loop-grid/selector')\n```\n\n### `var selection = Selector(shape)`\n\nReturns an extended instance of ObservGrid with `shape` specified.\n\n### `selector.start(inputGrid, done)`\n\nPass in an observable ArrayGrid. `done` will be called on `stop` or before subsequent `start`.\n\nAny truthy values will trigger a selection. Simultaneous true values will trigger range selection. `selection` will have `.set(selectedIndexes)` called on every change.\n\n### `selector.clear()`\n\nSets `selection` to an empty array.\n\n### `selector.stop()`\n\nRelease watch of `inputGrid` and call `done`.\n\n\n# Transforms\n\n## Holder\n\nBeat stutter/looper\n\n```js\nvar Holder = require('loop-grid/transforms/holder')\n```\n\n### `var holder = Holder(transform)`\n\nPass `loopGrid.transform` to this constructor.\n\n### `holder.setLength(length)`\n\nChoose the length (in beat decimal) of the stutter effect.\n\n### `holder.start(position[, indexes, done])`\n\nLoop events in specified `indexes` (or all if not specified) from `position` to `position + length`. Ensure each event length is no longer than specified `length` (truncating if necessary).\n\nAutomatically calls `holder.stop()` first if there is a current hold in progress.\n\n### `holder.stop()`\n\nRelease `transform` and call `done` if specified.\n\n## Mover\n\nMove selected ranges of loops to new origin.\n\n```js\nvar Mover = require('loop-grid/transforms/mover')\n```\n\n### `var mover = Mover(transform)`\n\nPass `loopGrid.transform` to this constructor.\n\n### `mover.start(inputGrid, selectedIndexes, done)`\n\nFinds the top-left most coordinates in `selectedIndexes`, and uses this as the start origin. Any true values in `inputGrid` will call `transform` with a function that moves the values from selectedIndexes to the new origin. Multiple true values will cause the selectedIndexes to be duplicated.\n\n### `mover.stop()`\n\nRelease any pending `transform` and stop watching `inputGrid`.\n\n## Repeater\n\n```js\nvar Repeater = require('loop-grid/transforms/repeater')\n```\n\n### `var repeater = Repeater(transform)\n\nPass `loopGrid.transform` to this constructor.\n\n### `repeater.start(inputGrid, length)`\n\nHeld notes will call `transform` with a function that creates a repeating note with length `length / 2` at the rate of specified `length`.\n\n### `repeater.setLength(length)`\n\n### `repeater.stop()`\n\nRelease the `inputGrid`.\n\n## Suppressor\n\nSuppress selected loops\n\n```js\nvar Suppressor = require('loop-grid/transforms/suppressor')\n```\n\n### `var suppressor = Suppressor(transform, shape[, stride])`\n\nPass `loopGrid.transform` to this constructor.\n\nReturns an extended [observ](https://github.com/raynos/observ) instance containing instances of [array-grid](https://github.com/mmckegg/array-grid) with `true` values at coords where currently suppressed.\n\n### `suppressor.start(indexes, done)`\n\nCalls `transform` with a function that suppresses all `indexes` specified.\n\n### `suppressor.stop()`\n\nRelease suppression `transform`.\n\n## License\n\n[AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.html)\n","maintainers":[{"name":"mmckegg","email":"matt@wetsand.co.nz"}],"time":{"modified":"2022-06-19T14:08:34.285Z","created":"2014-08-06T09:10:41.293Z","1.0.0":"2014-08-06T09:10:41.293Z","1.1.0":"2014-08-06T10:16:13.956Z","1.2.0":"2014-08-06T12:23:28.009Z","1.2.1":"2014-08-06T12:59:16.375Z","1.3.0":"2014-08-08T06:33:02.374Z","1.4.0":"2014-08-14T02:36:35.913Z","1.5.0":"2014-08-22T07:40:34.310Z","2.0.0":"2014-10-15T23:51:11.969Z","3.0.0":"2014-10-19T10:21:30.331Z","3.1.0":"2014-10-25T04:27:45.756Z","3.2.0":"2014-11-01T11:04:30.681Z","3.3.0":"2014-11-18T04:13:45.462Z","3.3.1":"2014-11-19T02:32:49.354Z","4.0.0":"2015-02-06T03:26:14.988Z","4.1.0":"2015-02-25T09:28:30.010Z","4.2.0":"2015-03-05T05:33:29.943Z","4.2.1":"2015-07-22T08:04:53.846Z","4.3.0":"2015-08-16T16:33:16.470Z","4.4.0":"2015-08-19T12:55:48.712Z","5.0.0":"2015-09-17T06:38:10.367Z","5.0.1":"2015-09-17T06:41:40.095Z","5.0.2":"2015-09-17T08:08:06.805Z","5.0.3":"2015-10-01T01:43:19.611Z","5.1.0":"2015-10-01T04:07:17.341Z","5.1.1":"2016-01-13T03:42:27.527Z","6.0.0":"2016-03-24T01:31:52.350Z","6.0.1":"2016-05-24T10:12:09.323Z","6.0.2":"2016-05-30T23:53:33.703Z","6.1.0":"2016-06-14T05:59:06.483Z"},"homepage":"https://github.com/mmckegg/loop-grid","keywords":["frp","loop","midi","launchpad","monome","observ","waapi","music","perform","live","grid"],"repository":{"type":"git","url":"git+https://github.com/mmckegg/loop-grid.git"},"author":{"name":"Matt McKegg"},"bugs":{"url":"https://github.com/mmckegg/loop-grid/issues"},"license":"AGPL-3.0","readmeFilename":"README.md","users":{"rchk":true}}