User Tools

Site Tools


acmidiprotocol
no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


acmidiprotocol [2008/07/29 01:37] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +[[audiocommander|audiocommander's]] ACMidiProtocol implements default CC controllers to enable inter-application and inter-device communication and synching possibilities.
  
 +If, for example, two devices have implemented this protocol, one can change the harmony or bpm at one device and the other device automatically changes its harmony/bpm to the new values.
 +
 +This version can be used for plain C as well as Objective-C:
 +
 +<code>
 +/*
 +  ACMidiProtocol.h
 +  mX series
 + *
 +  Created by audiocommander on 08.03.2007
 +  Copyright 2006-2007 Michael Markert, http://www.audiocommander.de
 + *
 +  v0.0.1  08.03.07    first version as one protocol document
 +  v0.0.2  29.03.07    added 4-char scale identifiers
 +  v0.0.3  01.05.07    added ACMidiProcessing <NSProtocol>
 + *
 + *
 +  description:
 +      MIDI Definition Listing for AC- & ZS-Applications
 +      Protocol Definitions for MIDI Controller Numbers
 + *
 + */
 +
 +/*  
 +* Released under GNU General Public License
 + * http://www.gnu.org/licenses/gpl.html
 + 
 + * This program is free software; you can redistribute it and/or modify it under the terms
 + * of the GNU General Public License as published by the Free Software Foundation
 + *
 + * YOU ARE ALLOWED TO COPY AND CHANGE 
 + * BUT YOU MUST RELEASE THE SOURCE TOO (UNDER GNU GPL) IF YOU RELEASE YOUR PRODUCT 
 + * YOU ARE NOT ALLOWED TO USE IT WITHIN PROPRIETARY CLOSED-SOURCE PROJECTS
 + */
 +
 +
 +#ifdef __OBJC__
 +    #pragma mark Cocoa ACMidiProtocol
 +    
 +#import <Foundation/Foundation.h>
 +
 +@protocol ACMidiProcessing <NSCoding>
 +
 +-(unsigned int)processMIDIMessage:(Byte*)message
 +                         ofLength:(unsigned int)length
 +                           atTime:(unsigned int)timeStamp;
 +
 +@end
 +
 +#endif /* __OBJC__ */
 +
 +
 +
 +#ifndef _ACMIDIPROTOCOL_H
 +#define _ACMIDIPROTOCOL_H
 +
 +
 +
 +// Protocol Version Number for future compatibily
 +#define ACMIDICTRLPROTOCOL_VERSION      0x03
 +
 +
 +
 +
 +// ***** CONTROLLER CHANGES *****
 +// The CC's use unused entries from the official Midi Tables (ACMidiDefines.h)
 +// Controllers 14..31 undefined & general purpose  & undefined and
 +// Controllers 80..90 general purpose & undefined
 +// Controllers 102..119 undefined
 +#ifdef _DEBUG_C
 +    #pragma mark -
 +    #pragma mark ++ CONTROLLER ++
 +#endif
 +
 +// ** SENSORS / AIN **
 +// These are the default CC numbers for sensory measures
 +// send:    YES
 +// receive: NO
 +// forward: NO
 +#ifdef _DEBUG_C
 +    #pragma mark Sensors / AIN
 +#endif
 +
 +#define MIDI_CC_SENSOR_A                        20  // 0x14
 +#define MIDI_CC_SENSOR_B                        21  // 0x15
 +#define MIDI_CC_SENSOR_C                        22  // 0x16
 +#define MIDI_CC_SENSOR_D                        23  // 0x17
 +#define MIDI_CC_SENSOR_E                        24  // 0x18
 +#define MIDI_CC_SENSOR_F                        25  // 0x19
 +#define MIDI_CC_SENSOR_G                        26  // 0x20
 +#define MIDI_CC_SENSOR_H                        27  // 0x21
 +
 +// ** HARMONY **
 +// harmony & scale setting methods
 +// send:    YES if input by HUI
 +// receive: YES
 +// forward: NO
 +#ifdef _DEBUG_C
 +    #pragma mark Harmony
 +#endif
 +
 +#define MIDI_CC_HARMONY_BASE                    80  // 0x50, 0-11, see MIDI_NOTE_x
 +#define MIDI_CC_HARMONY_SCALE                   81  // 0x51, 0:none, 1-127:scaleNum
 +#define MIDI_CC_HARMONY_BASE_LISTEN             82  // 0x52, 0-63:OFF,  64-127:ON
 +#define MIDI_CC_HARMONY_SCALE_RELATIVE_PREV     83  // 0x53, 0-63:OFF,  64-127:ON
 +#define MIDI_CC_HARMONY_SCALE_RELATIVE_NEXT     84  // 0x54, 0-63:OFF,  64-127:ON
 +#define MIDI_CC_HARMONY_RANDOM                  85  // 0x55, 0x63:OFF,  64-127:ON
 +#define MIDI_CC_HARMONY_RANDOM_RELATIVE         86  // 0x56, 0x63:OFF,  64-127:ON
 +
 +#define MIDI_CC_HARMONY_DETECTION               79  // 0x49, 0x63:OFF,  64-127:ON
 +
 +// ** SCALES **
 +// scale names
 +#ifdef _DEBUG_C
 +    #pragma mark Scales
 +#endif
 +
 +#define SCALE_NONE                              @"    "
 +#define SCALE_AEOLIAN                           @"AEO "
 +#define SCALE_AHABA_RABBA                       @"AHAB"
 +#define SCALE_ALGERIAN                          @"ALG "
 +#define SCALE_ARABIAN                           @"arab"
 +#define SCALE_AUGMENTED                         @"AUGM"
 +#define SCALE_BLUES                             @"Blue"
 +#define SCALE_BLUES_MAJOR                       @"BLUE"
 +#define SCALE_BLUES_MINOR                       @"blue"
 +#define SCALE_BYZANTINE                         @"BYZ "
 +#define SCALE_CHROMATIC                         @"chro"
 +#define SCALE_DIATONIC                          @"DIA "
 +#define SCALE_DORIAN                            @"DOR "
 +#define SCALE_FULLTONE                          @"FULL"
 +#define SCALE_GIPSY_MINOR                       @"gyps"
 +#define SCALE_HARMONIC_DOUBLE                   @"hrmD"
 +#define SCALE_HARMONIC_MINOR                    @"harm"
 +#define SCALE_HUNGARIAN_MAJOR                   @"HUNG"
 +#define SCALE_HUNGARIAN_MINOR                   @"hung"
 +#define SCALE_HUNGARIAN_PERSIAN                 @"PERH"
 +#define SCALE_JAPANESE                          @"JAP "
 +#define SCALE_JAPANESE_DIMINISHED               @"JAPd"
 +#define SCALE_KUMOI                             @"KUMO"
 +#define SCALE_LOCRIAN                           @"LOC "
 +#define SCALE_LYDIAN                            @"LYD "
 +#define SCALE_MAJOR                             @"MAJ "
 +#define SCALE_MELODIC_MAJOR                     @"MELO"
 +#define SCALE_MELODIC_MINOR                     @"melo"
 +#define SCALE_MINOR                             @"min "
 +#define SCALE_MI_SHEBERACH                      @"MISH"
 +#define SCALE_MIXOLYDIAN                        @"MIX "
 +#define SCALE_MOHAMMEDAN                        @"MOHA"
 +#define SCALE_NEOPOLITAN_MAJOR                  @"NEO "
 +#define SCALE_NEOPOLITAN_MINOR                  @"neo "
 +#define SCALE_ORIENTAL                          @"ORNT"
 +#define SCALE_OVERTONE                          @"OVER"
 +#define SCALE_PELOG                             @"PLOG"
 +#define SCALE_PENTATONIC                        @"PENT"
 +#define SCALE_PENTATONIC_BLUES                  @"PBLU"
 +#define SCALE_PENTATONIC_MAJOR                  @"PMAJ"
 +#define SCALE_PENTATONIC_MINOR                  @"Pmin"
 +#define SCALE_PERSIAN                           @"PERS"
 +#define SCALE_PHRYGIAN                          @"PHRY"
 +#define SCALE_SPANISH                           @"SPAN"
 +
 +// indian scales
 +#define SCALE_INDIAN_
 +#define SCALE_INDIAN_
 +#define SCALE_INDIAN_BHAVAPRIYA                 @"BAVA"
 +#define SCALE_INDIAN_DHATUVARDHANI              @"DATU"
 +#define SCALE_INDIAN_HEMAVITI                   @"HEMA"
 +#define SCALE_INDIAN_JHANKARADHVANI             @"JHAN"
 +#define SCALE_INDIAN_KAMAVARDHANI               @"KAMA"
 +#define SCALE_INDIAN_NAVANITAM                  @"NAVA"
 +#define SCALE_INDIAN_NITIMATI                   @"NITI"
 +#define SCALE_INDIAN_RAGHUPRIYA                 @"RAGU"
 +#define SCALE_INDIAN_RAMAPRIYA                  @"RAMA"
 +#define SCALE_INDIAN_SALAGAM                    @"SALA"
 +#define SCALE_INDIAN_SANMUKHAPRIYA              @"SAMU"
 +#define SCALE_INDIAN_SUBHAPANTUVARALI           @"SUBH"
 +#define SCALE_INDIAN_SUVARNANGI                 @"SUVA"
 +
 +
 +// scale-ID's
 +#define SCALE_ID_NONE                           0
 +#define SCALE_ID_MAJOR                          1
 +#define SCALE_ID_MINOR                          2
 +#define SCALE_ID_HARMONIC_MINOR                 3
 +#define SCALE_ID_BLUES_MINOR                    4
 +#define SCALE_ID_BLUES_MAJOR                    5
 +#define SCALE_ID_DORIAN                         6
 +#define SCALE_ID_JAPANESE                       7
 +#define SCALE_ID_JAPANESE_DIMINISHED            8
 +#define SCALE_ID_KUMOI                          9
 +#define SCALE_ID_LOCRIAN                        10
 +#define SCALE_ID_LYDIAN                         11
 +#define SCALE_ID_MI_SHEBERACH                   12
 +#define SCALE_ID_MIXOLYDIAN                     13
 +#define SCALE_ID_PELOG                          14
 +#define SCALE_ID_PENTATONIC                     15
 +#define SCALE_ID_PENTATONIC_BLUES               16
 +#define SCALE_ID_PENTATONIC_MAJOR               17
 +#define SCALE_ID_PENTATONIC_MINOR               18
 +#define SCALE_ID_PHRYGIAN                       19
 +#define SCALE_ID_SPANISH                        20
 +
 +
 +// ** QUANTIZERS **
 +#ifdef _DEBUG_C
 +    #pragma mark Quantizers
 +#endif
 +
 +#define QUANTIZE_BPM                            87  // 0: 60bpm to 127: 187bpm
 +#define QUANTIZE_TOGGLE_NEXT                    89
 +#define QUANTIZE_SET                            90
 +
 +#define SYNC_STOP                               62  // like System Realtime Stop
 +#define SYNC_START                              63  // like System Realtime Start
 +
 +
 +
 +#endif /* _ACMIDIPROTOCOL_H */
 +</code>
acmidiprotocol.txt · Last modified: 2008/07/29 01:37 by 127.0.0.1