'*************************************************** '* g_mm.bi * '*************************************************** ' Include file with globals and constants for any ' application using the robot orchestra ' Common code for robot steering should find a ' unique place in the module g_mm.inc. ' created 06.11.2004 ' 18.01.2005: konstant bit bug removed. ' 25.01.2005: Tubi changed to midi operation. ' 07.02.2005: PWM circuitry changed on Bourdonola, Trump ' 17.02.2005: Piperola upgraded. ' 29.03.2005: Belly: bell swap. ' 13.04.2005: constants moved to g_kons.bi, so that all dll's have access to them. ' 17.07.2005: PlayLlor function added ' 17.04.2006: Vitello added ' 02.05.2006: Autosax implementation changed. ' 25.07.2006: Qt added ' 10.08.2006: Belly changed to midi robot ' 19.08.2006: Klung changed to midi robot ' 31.08.2006: Springers changed to midi robot ' 13.09.2006: Thunderwood changed to midi robot ' 19.09.2006: Rotomoton changing to midi robot ' 14.10.2006: Bako added ' 17.12.2006: lite options added. ' 07.01.2006: Bako options added. ' 24.02.2007: Aeio support added. ' 19.03.2007: Xi support added ' 26.06.2007: Simba added ' 19.08.2007: Bono support added. ' 28.08.2008: Toypi support added. ' 31.08.2008: Ake kode revision. ' 08.10.2008: Ob added ' 01.11.2008: Heli added ' 26.04.2009: Hat added ' 26.04.2009: Bomi added ' 12.07.2009: snar separated from troms. ' 27.02.2011: Fa added ' 04.09.2011: Spiro added #INCLUDE THIS ONCE %g_mm_inc = %true 'globals for the M&M orchestra: GLOBAL piano AS musician GLOBAL Piperola AS musician GLOBAL Humanola AS musician GLOBAL Bourdonola AS musician GLOBAL so AS musician GLOBAL puff AS musician ' 14.11.2003 GLOBAL trump AS musician ' 13.01.2004 GLOBAL Hurdy AS musician ' 06.07.2004 GLOBAL Ake AS musician ' 14.10.2004 GLOBAL Llor AS musician ' 13.11.2004 GLOBAL Troms AS musician ' 15.04.2004 GLOBAL Belly AS musician ' not in conflict with %gmt_robots compilation GLOBAL Dripper AS musician ' 01.04.2005: now midi robot GLOBAL Harma AS musician ' id. pH as Harmatype GLOBAL tubi AS musician ' id. pTubi as Vibitype in old usb version GLOBAL Vibi AS musician ' 07.02.2005 GLOBAL Sire AS musician ' 02.03.2005 GLOBAL Vacca AS musician ' 13.04.2005 GLOBAL VaccaNotes() AS KlokType ' 10.05.2005 GLOBAL VitelloNotes() AS Kloktype '09.08.2006 GLOBAL BellyNotes() AS KlokType ' 09.08.2006 implemented GLOBAL LlorNotes() AS KlokType '16.08.2006 GLOBAL Casta AS musician ' humanola castagnets GLOBAL Casta2 AS musician ' castagnets module 'eventueel te doen: 'global Turk AS musician ' piperola percussion GLOBAL Krum AS musician ' 09.01.2006 GLOBAL Psch AS musician ' 12. 02. 2006 GLOBAL Snar AS musician ' 10.04.2006 - GLOBAL Vitello AS musician ' 15.04.2006 GLOBAL Autosax AS musician ' 02.05.2006 GLOBAL Qt AS musician ' 24.07.2006 GLOBAL Qtq AS musician '13.03.2007 GLOBAL klung AS musician ' 19.08.2006 GLOBAL pKlungHw AS KlungType PTR ' old klungtype - originally for hardware, but used in some compostions.. GLOBAL Springers AS musician GLOBAL ThunderWood AS musician GLOBAL rotomoton AS musician GLOBAL Bako AS musician ' 14.10.2006 GLOBAL Aeio AS musician ' 24.02.2007 GLOBAL Xy AS musician ' 24.02.2007 GLOBAL Xyq AS musician ' 19.03.2007 GLOBAL Simba AS musician ' 25.06.2007 GLOBAL Bono AS musician ' 19.08.2007 GLOBAL Korn AS musician ' 24.01.2008 GLOBAL ToyPi AS musician ' 04.08.2008 GLOBAL Ob AS musician ' 08.10.2008 GLOBAL Heli AS musician ' 01.11.2008 GLOBAL Hat AS musician ' 26.04.2009 GLOBAL Bomi AS musician ' 26.04.2009 - 10.07.2010 GLOBAL HarmO AS musician GLOBAL Fa AS musician ' 27.02.2011 GLOBAL Spiro AS musician ' 11.04.2011 #IF NOT(%DEF(%gmt_robots)) ' incompatibel met de g_robots kode. GLOBAL flex AS musician #ENDIF ' voorlopig eerste idee 'TYPE MMType DWORD ' a single pointer to this structure makes the orchestra accesible in the DLL's ' robot(50) AS musician PTR ' flag(50) AS DWORD 'END TYPE ' of iets als: GLOBAL MM() AS musician PTR ' also exists in g_lib dll since 16.01.2005 ' declarations of procedures in g_mm.inc` DECLARE FUNCTION Init_MM () AS LONG DECLARE FUNCTION MM_AllOff (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE SUB MM_AllLightsOff (OPTIONAL BYVAL flag AS DWORD) DECLARE SUB MM_AllLightsOn (OPTIONAL BYVAL flag AS DWORD) DECLARE FUNCTION MM_PanicButtonWindow(OPT BYVAL instrum$, BYVAL hParent AS LONG, BYVAL x AS LONG, BYVAL y AS LONG) AS LONG #IF NOT %DEF(%PB_CC32) DECLARE CALLBACK FUNCTION MM_CB_PanicButtonWindow #ENDIF DECLARE SUB MM_ProgChangeWindow(OPT BYVAL comnd AS DWORD) #IF NOT %DEF(%PB_CC32) DECLARE CALLBACK FUNCTION CB_ProgChangeWindow #ENDIF DECLARE FUNCTION Get_MM_Orkest (BYREF Ico() AS STRING * 8) AS LONG DECLARE FUNCTION FindRobotOnChannel (BYVAL channel AS WORD) AS LONG ' DECLARE FUNCTION GetVaccaMapping () AS LONG moved to g_file ' individual all notes off procedures: DECLARE FUNCTION MM_Piano_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Troms_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Troms_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Puff_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' lites only DECLARE FUNCTION MM_Puff_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Piperola_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Piperola_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Bourdonola_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Bourdonola_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Humanola_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Humanola_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Ake_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Ake_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Krum_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Krum_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Hurdy_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD 'DECLARE FUNCTION MM_Dripper_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' direct robot code!!! DECLARE FUNCTION MM_Rotomoton_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Rotomoton_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Harma_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Harma_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Trump_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Trump_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Llor_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' does a reset DECLARE FUNCTION MM_Llor_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' lites only . 12.06.2006 DECLARE FUNCTION MM_Flex_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Flex_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Springers_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Springers_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Thunderwood_On (OPTIONAL BYVAL flags AS DWORD) AS DWORD DECLARE FUNCTION MM_ThunderWood_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Psch_On (OPT BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Psch_Off (OPT BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_AutoSax_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Autosax_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_So_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_So_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Belly_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' sets mapping DECLARE FUNCTION MM_Belly_off (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' not needed but resets tuning-map DECLARE FUNCTION MM_Tubi_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Tubi_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_vibi_off (OPTIONAL BYVAL flag AS DWORD) AS DWORD 'motors off DECLARE FUNCTION MM_Vibi_on (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Sire_off (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' 07.03.2005 DECLARE FUNCTION MM_Sire_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' 12.10.2006 DECLARE FUNCTION MM_Vitello_off (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' 17.04.2006 DECLARE FUNCTION MM_Vitello_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' 17.04.2006 DECLARE FUNCTION MM_Qt_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' 24.07.2006 DECLARE FUNCTION MM_Qt_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Klung_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' 19.08.2006 DECLARE FUNCTION MM_Klung_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Bako_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' 15.10.2006 DECLARE FUNCTION MM_Bako_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Xy_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' 19.03.2007 DECLARE FUNCTION MM_Xy_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Casta_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' 02.05.2007 DECLARE FUNCTION MM_Casta_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Simba_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' 25.06.2007 DECLARE FUNCTION MM_Simba_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' 25.06.2007 DECLARE FUNCTION MM_Bono_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' 19.08.2007 DECLARE FUNCTION MM_Bono_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' 19.08.2007 DECLARE FUNCTION MM_Korn_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' 24.01.2008 DECLARE FUNCTION MM_Korn_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' 24.01.2008 DECLARE FUNCTION MM_ToyPi_On (OPT BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_ToyPi_Off (OPT BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Aeio_On (OPT BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Aeio_Off (OPT BYVAL flag AS DWORD) AS DWORD ' 28.08.2008 DECLARE FUNCTION MM_Ob_On (OPT BYVAL flag AS DWORD) AS DWORD ' 08.10.2008 DECLARE FUNCTION MM_Ob_Off (OPT BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Hat_On (OPT BYVAL flag AS DWORD) AS DWORD ' 08.10.2008 DECLARE FUNCTION MM_Hat_Off (OPT BYVAL flag AS DWORD) AS DWORD ' 08.10.2008 DECLARE FUNCTION MM_Snar_On (OPT BYVAL flag AS DWORD) AS DWORD ' 12.07.2009 DECLARE FUNCTION MM_Snar_Off (OPT BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_HarmO_On (OPT BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_HarmO_Off (OPT BYVAL flag AS DWORD) AS DWORD 'had proc.name bug: M_Harmo... repaired gwr 10.07.2010 DECLARE FUNCTION MM_Bomi_On (OPT BYVAL flag AS DWORD) AS DWORD '10.07.2010 DECLARE FUNCTION MM_Bomi_Off (OPT BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Fa_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Fa_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Spiro_On (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Spiro_Off (OPTIONAL BYVAL flag AS DWORD) AS DWORD DECLARE FUNCTION MM_Dummy (OPTIONAL BYVAL flag AS DWORD) AS DWORD ' in avoidance of nul pointers. ' machine specific play functions for robots that require pitch remapping: 'DECLARE FUNCTION PlayLlor (BYVAL n AS SINGLE, BYVAL v AS DWORD, BYVAL dev AS SINGLE) AS DWORD '13.04.2005 -> moved to g_midi DECLARE FUNCTION PlayVacca (BYVAL note AS SINGLE, BYVAL velo AS BYTE, BYVAL dev AS SINGLE) AS DWORD ' 17.07.2005 DECLARE FUNCTION PlayBelly (BYVAL note AS SINGLE, BYVAL velo AS BYTE, BYVAL tol AS SINGLE) AS DWORD ' 17.07.2005 DECLARE FUNCTION PlayKloks (BYVAL note AS SINGLE, BYVAL velo AS BYTE, BYVAL tol AS SINGLE, OPT BYVAL SELECTION AS DWORD, OPT BYVAL silent AS DWORD) AS DWORD DECLARE FUNCTION PlayVitello (BYVAL note AS SINGLE, BYVAL velo AS BYTE, BYVAL tol AS SINGLE) AS DWORD '20060809 'the sire specific functions where moved to g_indep and g_midi, as we needed to be able to use them from g_midi.inc.. ' intelligent functions for : 'DECLARE FUNCTION Sire_Velo2MidiNoot (BYVAL velo AS INTEGER) AS SINGLE 'DECLARE FUNCTION Sire_MidiNoot2Velo (BYVAL noot AS SINGLE) AS WORD 'DECLARE FUNCTION Sire_Play (BYVAL noot AS INTEGER, BYVAL velo AS BYTE) AS LONG