This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
speakjet_definition_list [2006/06/09 12:07] audiocommander |
speakjet_definition_list [2006/12/05 14:28] (current) audiocommander updated to latest version and removed dev-nfo |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== SCP and MSA #defines for the SpeakJet ====== | ====== SCP and MSA #defines for the SpeakJet ====== | ||
- | **ImportantNote:\\ | + | \\ |
- | This file is currently under development and can change radically!\\ | + | |
- | Maybe you want to wait some days until this note disappears to add your SJ-Definitions** | + | |
- | + | ||
- | It can be used for your C-based MBHP_IIC_SpeakJet Project: | + | |
- | + | ||
- | Feel free to edit and add defines! | + | |
- | + | ||
<code c> | <code c> | ||
- | |||
/* | /* | ||
* IIC_SpeakJetDefines.h | * IIC_SpeakJetDefines.h | ||
Line 20: | Line 11: | ||
* and ASM-Version of Doug Elliott, VA3DAE | * and ASM-Version of Doug Elliott, VA3DAE | ||
* | * | ||
- | * Released under CreativeCommons 2.5 by-nc-sa | + | * Copyright 2006 Michael Markert, http://www.audiocommander.de |
- | * http://creativecommons.org/licenses/by-nc-sa/2.5/ | + | |
* | * | ||
+ | */ | ||
+ | |||
+ | /* | ||
+ | * 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 NOT USE IT WITHIN PROPRIETARY CLOSED-SOURCE PROJECTS | ||
*/ | */ | ||
Line 30: | Line 32: | ||
- | // ********* SPEAKJET SCP REGISTERS **** // | + | |
- | // SCP Registers & MAX Values | + | // ********* SPEAKJET SCP ************* // |
+ | // Serial Control Protocol | ||
#ifdef _DEBUG_C | #ifdef _DEBUG_C | ||
#pragma mark - | #pragma mark - | ||
- | #pragma mark SCP REGISTERS & MAX VALUES | + | #pragma mark SCP |
#endif | #endif | ||
- | // Envelope | + | // escape character ('\\') 0x5C to enter SCP Mode |
- | #define SCP_ENV_FREQ 0 | + | #define SCP_ESCAPE '\\' |
- | #define SCP_ENV_CTRL 8 | + | #define SCP_SEL0 '0' |
- | // ENVType (send ENVType + ENVState!) | + | #define SCP_SEL1 '1' |
- | #define SCP_ENV_SAW 0x0 | + | #define SCP_SEL2 '2' |
- | #define SCP_ENV_SINE 0x1 | + | #define SCP_SEL3 '3' |
- | #define SCP_ENV_TRIANGLE 0x2 | + | #define SCP_SEL4 '4' |
- | #define SCP_ENV_SQUARE 0x3 | + | #define SCP_SEL5 '5' |
- | // ENVState (send ENVType + ENVState!) | + | #define SCP_SEL6 '6' |
- | #define SCP_ENV_OSC123 0x40 | + | #define SCP_SEL7 '7' |
- | #define SCP_ENV_OSC45 0x80 | + | #define SCP_EXIT 'X' |
- | // Oscillators | + | #define SCP_READY 'V' |
- | #define SCP_OSC1_FREQ 1 | + | #define SCP_CLEAR_BUFFER 'R' |
- | #define SCP_OSC2_FREQ 2 | + | #define SCP_START 'T' |
- | #define SCP_OSC3_FREQ 3 | + | #define SCP_STOP 'S' |
- | #define SCP_OSC4_FREQ 4 | + | |
- | #define SCP_OSC5_FREQ 5 | + | |
- | #define SCP_FREQ_MAX 3999 | + | |
- | #define SCP_OSC1_LEVEL 11 | + | #define SCP_MEMTYPE 'H' |
- | #define SCP_OSC2_LEVEL 12 | + | #define SCP_MEMADDR 'J' |
- | #define SCP_OSC3_LEVEL 13 | + | #define SCP_MEMWRT 'N' |
- | #define SCP_OSC4_LEVEL 14 | + | |
- | #define SCP_OSC5_LEVEL 15 | + | |
- | #define SCP_LEVEL_MAX 31 // 63 MAX for Mixer 1 | + | |
- | // Distortion | + | #define SCP_RESET 'W' |
- | #define SCP_DISTORTION 6 | + | |
- | #define SCP_DISTORTION_MAX 255 | + | |
- | // Master | ||
- | #define SCP_MASTER_VOLUME 7 | ||
- | #define SCP_MASTER_VOLUME_MAX 255 | ||
+ | // ********* SPEAKJET SCP REGISTERS **** // | ||
+ | // SCP Registers & MAX Values | ||
+ | #ifdef _DEBUG_C | ||
+ | #pragma mark - | ||
+ | #pragma mark SCP REGISTERS & MAX VALUES | ||
+ | #endif | ||
+ | // == SCP_MEMTYPE (H) == | ||
+ | #define SCP_MEMTYPE_REGISTER '0' | ||
+ | #define SCP_MEMTYPE_EEPROM_H '3' | ||
+ | #define SCP_MEMTYPE_EEPROM_L '2' | ||
+ | // == SCP_MEMADDR (J) == | ||
+ | // Envelope | ||
+ | #define SCP_ENV_FREQ '0' | ||
+ | #define SCP_ENV_CTRL '8' | ||
+ | // Oscillator Frequency Register (not used, calculated) | ||
+ | #define SCP_OSC1_FREQ '1' | ||
+ | #define SCP_OSC2_FREQ '2' | ||
+ | #define SCP_OSC3_FREQ '3' | ||
+ | #define SCP_OSC4_FREQ '4' | ||
+ | #define SCP_OSC5_FREQ '5' | ||
+ | // Oscillator Level Register (not used, calculated) | ||
+ | #define SCP_OSC1_LEVEL 11 | ||
+ | #define SCP_OSC2_LEVEL 12 | ||
+ | #define SCP_OSC3_LEVEL 13 | ||
+ | #define SCP_OSC4_LEVEL 14 | ||
+ | #define SCP_OSC5_LEVEL 15 | ||
+ | // Distortion | ||
+ | #define SCP_DISTORTION '6' | ||
+ | // Master | ||
+ | #define SCP_MASTER_VOLUME '7' | ||
+ | // == SCP_MEMWRT (N) == | ||
+ | // ENVType (send ENVType + ENVState!) | ||
+ | #define SCP_ENV_SAW '2' | ||
+ | #define SCP_ENV_SINE '3' | ||
+ | #define SCP_ENV_TRIANGLE '4' | ||
+ | #define SCP_ENV_SQUARE '5' | ||
+ | // ENVState (send ENVType + ENVState!) | ||
+ | #define SCP_ENV_OSC123 0x40 | ||
+ | #define SCP_ENV_OSC45 0x80 | ||
+ | // Default values | ||
+ | #define SCP_FREQ_DEFAULT 440 | ||
+ | #define SCP_LEVEL_DEFAULT 20 // 63 MAX for Mixer 1: OSC 1, 2 & 3 | ||
+ | // Maximum accepted values | ||
+ | #define SCP_FREQ_MAX 3999 | ||
+ | #define SCP_LEVEL_MAX 31 | ||
+ | #define SCP_DISTORTION_MAX 255 | ||
+ | #define SCP_MASTER_VOLUME_MAX 255 | ||
- | // ********* SPEAKJET SCP ************* // | ||
- | // Serial Control Protocol | ||
- | #ifdef _DEBUG_C | ||
- | #pragma mark - | ||
- | #pragma mark SCP | ||
- | #endif | ||
- | |||
- | // escape character ('\\') 0x5C to enter SCP Mode | ||
- | #define SCP_ESCAPE 0x5C | ||
- | #define SCP_SEL0 0 | ||
- | #define SCP_SEL1 1 | ||
- | #define SCP_SEL2 2 | ||
- | #define SCP_SEL3 3 | ||
- | #define SCP_SEL4 4 | ||
- | #define SCP_SEL5 5 | ||
- | #define SCP_SEL6 6 | ||
- | #define SCP_SEL7 7 | ||
- | #define SCP_EXIT X | ||
- | #define SCP_READY V | ||
- | #define SCP_CLEAR_BUFFER R | ||
- | #define SCP_START T | ||
- | #define SCP_STOP S | ||
- | #define SCP_MEMTYPE H | ||
- | #define SCP_MEMADDR J | ||
- | #define SCP_MEMWRT N | ||
- | #define SCP_RESET W | ||
Line 119: | Line 132: | ||
// 0 - 31 CONTROL CODES | // 0 - 31 CONTROL CODES | ||
- | #define MSA_PAUSE0 0 | + | #define MSA_PAUSE0 0 // 0ms |
- | #define MSA_PAUSE1 1 | + | #define MSA_PAUSE1 1 // 100ms |
- | #define MSA_PAUSE2 2 | + | #define MSA_PAUSE2 2 // 200ms |
- | #define MSA_PAUSE3 3 | + | #define MSA_PAUSE3 3 // 700ms |
- | #define MSA_PAUSE4 4 | + | #define MSA_PAUSE4 4 // 30ms |
- | #define MSA_PAUSE5 5 | + | #define MSA_PAUSE5 5 // 60ms |
- | #define MSA_PAUSE6 6 | + | #define MSA_PAUSE6 6 // 90ms |
#define MSA_NEXTFAST 7 | #define MSA_NEXTFAST 7 | ||
Line 306: | Line 319: | ||
#endif | #endif | ||
- | #define MSA_EOP 255 | + | #define MSA_EOP 255 |
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | // <<--- Application related defines --->> | ||
+ | |||
+ | // SCP ControlTypes | ||
+ | // realtime announces single SCP messages like "Clear Buffer" | ||
+ | // register is used for 3-part-msgs: select register, select memtype and write value | ||
+ | #define SCP_CTRLTYPE_REALTIME 0x0 | ||
+ | #define SCP_CTRLTYPE_REGISTER 0x1 | ||
+ | |||
+ | // Articulation ControlTypes | ||
+ | #define ARTICULATION_JAW 0x1 | ||
+ | #define ARTICULATION_TONGUE 0x2 | ||
+ | #define ARTICULATION_GLOTTIS 0x3 | ||
+ | |||
+ | // OSC Harmonic Waveshapes | ||
+ | #define OSCSYNTH_WAVE_TRIANGLE 0 | ||
+ | #define OSCSYNTH_WAVE_SQUARE 1 | ||
+ | #define OSCSYNTH_WAVE_SAW 2 | ||