{- | MIDI device manufacturers and their id's. -} module Sound.MIDI.Manufacturer (T, get, put, sequential, idp, octavePlateau, moog, passport, lexicon, kurzweil, fender, gulbransen, akg, voyce, waveframe, ada, garfield, ensoniq, oberheim, apple, greyMatter, digidesign, palmTree, jlCooper, lowrey, adamsSmith, emu, harmony, art, baldwin, eventide, inventronics, keyConcepts, clarity, timeWarner, digitalMusic, iota, newEngland, artisyn, ivl, southernMusic, lakeButler, alesis, dod, studerEditech, perfectFret, kat, opcode, rane, anadi, kmx, brenell, peavey, systems360, spectrum, marquis, zeta, axxes, orban, kti, breakaway, cae, rocktron, pianoDisc, cannon, rogers, blueSkyLogic, encore, uptown, voce, cti, ssResearch, broderbund, allenOrgan, musicQuest, aphex, gallienKrueger, ibm, hotzInstruments, etaLighting, nsi, adLib, richmond, microsoft, softwareToolworks, rjmgNiche, intone, grooveTubes, euphonix, interMIDI, loneWolf, musonix, taHorng, eTek, electrovoice, midisoft, qSoundLabs, westrex, nVidia, ess, mediaTrix, brooktree, otari, keyElectronics, crystalake, crystal, rockwell, siliconGraphics, midiman, preSonus, topaz, castLighting, microsoftConsumer, fastForward, headspace, vanKoevering, altech, vlsi, chromaticResearch, sapphire, idrc, justonic, torComp, newtek, soundSculpture, walker, pavo, inVision, tSquareDesign, nemesys, dbx, syndyne, bitheadz, cakewalk, staccato, nationalSemiconductor, boomTheory, virtualDSP, antares, angelSoftware, stLouis, lyrrus, passac, siel, synthaxe, hohner, twister, solton, jellinghaus, southworth, ppg, jen, ssl, audioVeritrieb, elka, dynacord, viscount, clavia, audioArchitect, generalMusic, soundcraft, wersi, avab, digigram, waldorf, quasimidi, dream, strandLighting, amek, drBohm, trident, realWorldDesign, yesTechnology, audiomatica, bontempiFarfisa, fbtElectronica, miditemp, larkingAudio, zero88lighting, miconAudio, forefront, kenton, adb, jimMarshall, dda, bssAudio, tcElectronic, medeli, charlieLab, blueChip, beeOH, lgSemiconductor, tesi, emagic, behringer, access, synoptic, hanmesoft, terratec, proel, ibk, kawai, roland, korg, yamaha, casio, kamiya, akai, japanVictor, mesosha, hoshinoGakki, fujitsuElect, sony, nisshinOnpa, teac, matsushitaElec, fostex, zoom, midori, matsushitaComm, suzuki, nonCommercial, nonRealTime, realTime, ) where import Sound.MIDI.Parser.Primitive import qualified Sound.MIDI.Parser.Class as Parser import qualified Sound.MIDI.Writer.Basic as Writer import Control.Monad (liftM2, ) import Data.Word (Word8) data T = Short Word8 | Extended Word8 Word8 deriving (Show, Eq, Ord) -- * North American Group sequential, idp, octavePlateau, moog, passport, lexicon, kurzweil, fender, gulbransen, akg, voyce, waveframe, ada, garfield, ensoniq, oberheim, apple, greyMatter, digidesign, palmTree, jlCooper, lowrey, adamsSmith, emu, harmony, art, baldwin, eventide, inventronics, keyConcepts, clarity, timeWarner, digitalMusic, iota, newEngland, artisyn, ivl, southernMusic, lakeButler, alesis, dod, studerEditech, perfectFret, kat, opcode, rane, anadi, kmx, brenell, peavey, systems360, spectrum, marquis, zeta, axxes, orban, kti, breakaway, cae, rocktron, pianoDisc, cannon, rogers, blueSkyLogic, encore, uptown, voce, cti, ssResearch, broderbund, allenOrgan, musicQuest, aphex, gallienKrueger, ibm, hotzInstruments, etaLighting, nsi, adLib, richmond, microsoft, softwareToolworks, rjmgNiche, intone, grooveTubes, euphonix, interMIDI, loneWolf, musonix, taHorng, eTek, electrovoice, midisoft, qSoundLabs, westrex, nVidia, ess, mediaTrix, brooktree, otari, keyElectronics, crystalake, crystal, rockwell, siliconGraphics, midiman, preSonus, topaz, castLighting, microsoftConsumer, fastForward, headspace, vanKoevering, altech, vlsi, chromaticResearch, sapphire, idrc, justonic, torComp, newtek, soundSculpture, walker, pavo, inVision, tSquareDesign, nemesys, dbx, syndyne, bitheadz, cakewalk, staccato, nationalSemiconductor, boomTheory, virtualDSP, antares, angelSoftware, stLouis, lyrrus :: T sequential = Short 0x01 idp = Short 0x02 octavePlateau = Short 0x03 moog = Short 0x04 passport = Short 0x05 lexicon = Short 0x06 kurzweil = Short 0x07 fender = Short 0x08 gulbransen = Short 0x09 akg = Short 0x0A voyce = Short 0x0B waveframe = Short 0x0C ada = Short 0x0D garfield = Short 0x0E ensoniq = Short 0x0F oberheim = Short 0x10 apple = Short 0x11 greyMatter = Short 0x12 digidesign = Short 0x13 palmTree = Short 0x14 jlCooper = Short 0x15 lowrey = Short 0x16 adamsSmith = Short 0x17 emu = Short 0x18 harmony = Short 0x19 art = Short 0x1A baldwin = Short 0x1B eventide = Short 0x1C inventronics = Short 0x1D keyConcepts = Short 0x1E clarity = Short 0x1F timeWarner = Extended 0x00 0x01 digitalMusic = Extended 0x00 0x07 iota = Extended 0x00 0x08 newEngland = Extended 0x00 0x09 artisyn = Extended 0x00 0x0A ivl = Extended 0x00 0x0B southernMusic = Extended 0x00 0x0C lakeButler = Extended 0x00 0x0D alesis = Extended 0x00 0x0E dod = Extended 0x00 0x10 studerEditech = Extended 0x00 0x11 perfectFret = Extended 0x00 0x14 kat = Extended 0x00 0x15 opcode = Extended 0x00 0x16 rane = Extended 0x00 0x17 anadi = Extended 0x00 0x18 -- spatialSound ? kmx = Extended 0x00 0x19 brenell = Extended 0x00 0x1A peavey = Extended 0x00 0x1B systems360 = Extended 0x00 0x1C spectrum = Extended 0x00 0x1D marquis = Extended 0x00 0x1E zeta = Extended 0x00 0x1F axxes = Extended 0x00 0x20 orban = Extended 0x00 0x21 kti = Extended 0x00 0x24 breakaway = Extended 0x00 0x25 cae = Extended 0x00 0x26 rocktron = Extended 0x00 0x29 pianoDisc = Extended 0x00 0x2A cannon = Extended 0x00 0x2B rogers = Extended 0x00 0x2D blueSkyLogic = Extended 0x00 0x2E encore = Extended 0x00 0x2F uptown = Extended 0x00 0x30 voce = Extended 0x00 0x31 cti = Extended 0x00 0x32 ssResearch = Extended 0x00 0x33 broderbund = Extended 0x00 0x34 allenOrgan = Extended 0x00 0x35 musicQuest = Extended 0x00 0x37 aphex = Extended 0x00 0x38 gallienKrueger = Extended 0x00 0x39 ibm = Extended 0x00 0x3A hotzInstruments = Extended 0x00 0x3C etaLighting = Extended 0x00 0x3D nsi = Extended 0x00 0x3E adLib = Extended 0x00 0x3F richmond = Extended 0x00 0x40 microsoft = Extended 0x00 0x41 softwareToolworks = Extended 0x00 0x42 rjmgNiche = Extended 0x00 0x43 intone = Extended 0x00 0x44 grooveTubes = Extended 0x00 0x47 euphonix = Extended 0x00 0x4E interMIDI = Extended 0x00 0x4F loneWolf = Extended 0x00 0x55 musonix = Extended 0x00 0x64 taHorng = Extended 0x00 0x74 eTek = Extended 0x00 0x75 -- formerly Forte electrovoice = Extended 0x00 0x76 midisoft = Extended 0x00 0x77 qSoundLabs = Extended 0x00 0x78 westrex = Extended 0x00 0x79 nVidia = Extended 0x00 0x7A ess = Extended 0x00 0x7B mediaTrix = Extended 0x00 0x7C brooktree = Extended 0x00 0x7D otari = Extended 0x00 0x7E keyElectronics = Extended 0x00 0x7F crystalake = Extended 0x01 0x01 crystal = Extended 0x01 0x02 rockwell = Extended 0x01 0x03 siliconGraphics = Extended 0x01 0x04 midiman = Extended 0x01 0x05 preSonus = Extended 0x01 0x06 topaz = Extended 0x01 0x08 castLighting = Extended 0x01 0x09 microsoftConsumer = Extended 0x01 0x0A fastForward = Extended 0x01 0x0C headspace = Extended 0x01 0x0D -- Igor's Labs vanKoevering = Extended 0x01 0x0E altech = Extended 0x01 0x0F -- ssResearch = Extended 0x01 0x10 vlsi = Extended 0x01 0x11 chromaticResearch = Extended 0x01 0x12 sapphire = Extended 0x01 0x13 idrc = Extended 0x01 0x14 justonic = Extended 0x01 0x15 torComp = Extended 0x01 0x16 newtek = Extended 0x01 0x17 soundSculpture = Extended 0x01 0x18 walker = Extended 0x01 0x19 pavo = Extended 0x01 0x1A inVision = Extended 0x01 0x1B tSquareDesign = Extended 0x01 0x1C nemesys = Extended 0x01 0x1D dbx = Extended 0x01 0x1E syndyne = Extended 0x01 0x1F bitheadz = Extended 0x01 0x20 cakewalk = Extended 0x01 0x21 staccato = Extended 0x01 0x22 nationalSemiconductor = Extended 0x01 0x23 boomTheory = Extended 0x01 0x24 -- Adinolfi Alternative Percussion virtualDSP = Extended 0x01 0x25 antares = Extended 0x01 0x26 angelSoftware = Extended 0x01 0x27 stLouis = Extended 0x01 0x28 lyrrus = Extended 0x01 0x29 -- * European Group passac, siel, synthaxe, hohner, twister, solton, jellinghaus, southworth, ppg, jen, ssl, audioVeritrieb, elka, dynacord, viscount, clavia, audioArchitect, generalMusic, soundcraft, wersi, avab, digigram, waldorf, quasimidi, dream, strandLighting, amek, drBohm, trident, realWorldDesign, yesTechnology, audiomatica, bontempiFarfisa, fbtElectronica, miditemp, larkingAudio, zero88lighting, miconAudio, forefront, kenton, adb, jimMarshall, dda, bssAudio, tcElectronic, medeli, charlieLab, blueChip, beeOH, lgSemiconductor, tesi, emagic, behringer, access, synoptic, hanmesoft, terratec, proel, ibk :: T passac = Short 0x20 siel = Short 0x21 synthaxe = Short 0x22 hohner = Short 0x24 twister = Short 0x25 solton = Short 0x26 jellinghaus = Short 0x27 southworth = Short 0x28 ppg = Short 0x29 jen = Short 0x2A ssl = Short 0x2B audioVeritrieb = Short 0x2C elka = Short 0x2F dynacord = Short 0x30 viscount = Short 0x31 clavia = Short 0x33 audioArchitect = Short 0x34 generalMusic = Short 0x35 soundcraft = Short 0x39 wersi = Short 0x3B avab = Short 0x3C digigram = Short 0x3D waldorf = Short 0x3E quasimidi = Short 0x3F dream = Extended 0x20 0x00 strandLighting = Extended 0x20 0x01 amek = Extended 0x20 0x02 drBohm = Extended 0x20 0x04 trident = Extended 0x20 0x06 realWorldDesign = Extended 0x20 0x07 yesTechnology = Extended 0x20 0x09 audiomatica = Extended 0x20 0x0A bontempiFarfisa = Extended 0x20 0x0B fbtElectronica = Extended 0x20 0x0C miditemp = Extended 0x20 0x0D larkingAudio = Extended 0x20 0x0E zero88lighting = Extended 0x20 0x0F miconAudio = Extended 0x20 0x10 forefront = Extended 0x20 0x11 kenton = Extended 0x20 0x13 adb = Extended 0x20 0x15 jimMarshall = Extended 0x20 0x16 dda = Extended 0x20 0x17 bssAudio = Extended 0x20 0x18 tcElectronic = Extended 0x20 0x1F medeli = Extended 0x20 0x2B charlieLab = Extended 0x20 0x2C blueChip = Extended 0x20 0x2D beeOH = Extended 0x20 0x2E lgSemiconductor = Extended 0x20 0x2F tesi = Extended 0x20 0x30 emagic = Extended 0x20 0x31 behringer = Extended 0x20 0x32 access = Extended 0x20 0x33 synoptic = Extended 0x20 0x34 hanmesoft = Extended 0x20 0x35 terratec = Extended 0x20 0x36 proel = Extended 0x20 0x37 ibk = Extended 0x20 0x38 -- * Japanese Group kawai, roland, korg, yamaha, casio, kamiya, akai, japanVictor, mesosha, hoshinoGakki, fujitsuElect, sony, nisshinOnpa, teac, matsushitaElec, fostex, zoom, midori, matsushitaComm, suzuki :: T kawai = Short 0x40 roland = Short 0x41 korg = Short 0x42 yamaha = Short 0x43 casio = Short 0x44 kamiya = Short 0x46 akai = Short 0x47 japanVictor = Short 0x48 mesosha = Short 0x49 hoshinoGakki = Short 0x4A fujitsuElect = Short 0x4B sony = Short 0x4C nisshinOnpa = Short 0x4D teac = Short 0x4E matsushitaElec = Short 0x50 fostex = Short 0x51 zoom = Short 0x52 midori = Short 0x53 matsushitaComm = Short 0x54 suzuki = Short 0x55 -- * Universal ID Numbers nonCommercial, nonRealTime, realTime :: T nonCommercial = Short 0x7D nonRealTime = Short 0x7E realTime = Short 0x7F -- * serialization get :: Parser.C parser => Parser.Fallible parser T get = do subId <- getByte if subId == 0 then liftM2 Extended getByte getByte else return $ Short subId put :: Writer.C writer => T -> writer () put subId = case subId of Short n -> Writer.putByte n Extended hi lo -> Writer.putByte 0 >> Writer.putByte hi >> Writer.putByte lo