os/mm/devsound/devsoundrefplugin/src/sounddevice/FixedSequence.rss
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // Definitions required for tone sequences 
    15 // 
    16 //
    17 
    18 // Signature definitions
    19 #define SEQ_SIG1 0x5153
    20 #define SEQ_SIG2 0x434E	
    21 #define SEQ_SIG	SEQ_SIG1,SEQ_SIG2, // Signature = "SQNC" ASCII
    22 
    23 // Commands
    24 #define SEQ_CMD_RET         -1
    25 #define SEQ_CMD_STARTLOOP   -2,
    26 #define SEQ_CMD_ENDLOOP     -3,
    27 
    28 // Useful values
    29 // Note frequencies
    30 #define SEQ_FREQ_A0	     440
    31 #define SEQ_FREQ_AsBf0   466  // 466.1637615 A#, Bb
    32 #define SEQ_FREQ_B0	     494  // 493.8833013
    33 #define SEQ_FREQ_C0	     523  // 523.2511306
    34 #define SEQ_FREQ_CsDf0	 554  // 554.365262 C#, Db, etc.
    35 #define SEQ_FREQ_D0	     587  // 587.3295358
    36 #define SEQ_FREQ_DsEf0   622  // 622.2539674
    37 #define SEQ_FREQ_E0      659  // 659.2551138
    38 #define SEQ_FREQ_F0      698  // 698.4564629
    39 #define SEQ_FREQ_FsGf0   740  // 739.9888454
    40 #define SEQ_FREQ_G0      784  // 783.990872
    41 #define SEQ_FREQ_GsAf0   831  // 830.6093952
    42 #define SEQ_FREQ_A1      880
    43 #define SEQ_FREQ_AsBf1   932  // 932.327523
    44 #define SEQ_FREQ_B1      988  // 987.7666025
    45 #define SEQ_FREQ_C1      1047 // 1046.502261
    46 #define SEQ_FREQ_CsDf1   1109 // 1108.730524
    47 #define SEQ_FREQ_D1      1175 // 1174.659072
    48 #define SEQ_FREQ_DsEf1   1245 // 1244.507935
    49 #define SEQ_FREQ_E1      1319 // 1318.510228
    50 #define SEQ_FREQ_F1      1397 // 1396.912926
    51 #define SEQ_FREQ_FsGf1   1480 // 1479.977691
    52 #define SEQ_FREQ_G1      1568 // 1567.981744
    53 #define SEQ_FREQ_GsAf1   1661 // 1661.21879
    54 #define SEQ_FREQ_A2      1760
    55 #define SEQ_FREQ_AsBf2   1865 // 1864.655046
    56 #define SEQ_FREQ_B2      1976 // 1975.533205
    57 #define SEQ_FREQ_C2      2093 // 2093.004522
    58 #define SEQ_FREQ_CsDf2   2217 // 2217.461048
    59 #define SEQ_FREQ_D2      2349 // 2349.318143
    60 #define SEQ_FREQ_DsEf2   2489 // 2489.01587
    61 #define SEQ_FREQ_E2      2673 // 2637.020455
    62 #define SEQ_FREQ_F2      2794 // 2793.825851
    63 #define SEQ_FREQ_FsGf2   2960 // 2959.955382
    64 #define SEQ_FREQ_G2      3136 // 3135.963488
    65 #define SEQ_FREQ_GsAf2   3322 // 3322.437581
    66 #define SEQ_FREQ_A3      3520
    67 #define SEQ_FREQ_AsBf3   3729 // 3729.310092
    68 
    69 // Volume defines
    70 #define SEQ_VOL_F        32767 // Forte = Loud
    71 #define SEQ_VOL_MF	     24575 // Mezzo forte = Medium loud
    72 #define SEQ_VOL_MP		 16383 // Mezzo piano = Medium soft
    73 #define SEQ_VOL_P         8191 // Piano = Soft
    74 	
    75 // Macros for defining sequences
    76 #define SEQ_DATA(A) SEQ_SIG A SEQ_CMD_RET
    77 #define SEQ_VAL(N) N,
    78 #define SEQ_LOOP(NUMBEROFTIMES,DATA) SEQ_CMD_STARTLOOP SEQ_VAL(NUMBEROFTIMES) DATA SEQ_CMD_ENDLOOP
    79 #define SEQ_TONE(DUR,F1,V1) SEQ_VAL(DUR) SEQ_VAL(F1) SEQ_VAL(V1) SEQ_VAL(0) SEQ_VAL(0)
    80 #define SEQ_2TONES(DUR,F1,V1,F2,V2) SEQ_VAL(DUR) SEQ_VAL(F1) SEQ_VAL(V1) SEQ_VAL(F2) SEQ_VAL(V2)
    81 #define SEQ_SILENCE(DUR) SEQ_VAL(DUR) SEQ_VAL(0) SEQ_VAL(0) SEQ_VAL(0) SEQ_VAL(0)
    82 // DUR = number samples@8kHz hence 8000 = 1 second
    83 // F1/F2 = frequency in Hz - can use note definitions above
    84 // V1/V1 = volume in range 0-32767 - can use volume definitions above
    85 // When playing two tones, sum of volumes should not be greater than 32767
    86 // e.g. can use MF+P or MP+MP
    87 
    88 STRUCT SEQUENCE_NAME
    89     {
    90     LTEXT name; // leading-byte counted text string
    91     }
    92 
    93 STRUCT SEQUENCE_DATA
    94     {
    95 	LEN WORD WORD data[]; // Array of 16bit data values
    96     }
    97 
    98 STRUCT SEQUENCE_ARRAY
    99     {
   100     STRUCT sequences[];
   101     }
   102 
   103 RESOURCE SEQUENCE_ARRAY fixed_tone_sequence
   104 	{ 
   105 	//
   106 	// Contains the sequences supported by the device (with localisable names)
   107 	//
   108 	sequences =
   109 		{
   110         	SEQUENCE_NAME 
   111 			{ 
   112 			//
   113 			// A loud piercing sequence that alternates between two toned "warbles"
   114 			// Duration: 5 seconds
   115 			//
   116 			name="Rings";
   117 			},
   118 		SEQUENCE_DATA
   119 			{
   120 			data =
   121 				{ 
   122 				SEQ_DATA
   123 					(
   124 					SEQ_LOOP
   125 						(
   126 						2,
   127 						SEQ_LOOP
   128 						    (
   129 							11,
   130 							SEQ_TONE(250,SEQ_FREQ_GsAf2,SEQ_VOL_F)
   131 							SEQ_TONE(250,SEQ_FREQ_DsEf2,SEQ_VOL_F)
   132 							)
   133 						SEQ_LOOP
   134 						    (
   135 							11,
   136 							SEQ_TONE(250,SEQ_FREQ_DsEf2,SEQ_VOL_F)
   137 							SEQ_TONE(250,SEQ_FREQ_GsAf1,SEQ_VOL_F)
   138 							)
   139 						SEQ_SILENCE(6000)
   140 						)
   141 					SEQ_SILENCE(6000)
   142 					)
   143 				};
   144 			},
   145         	SEQUENCE_NAME 
   146 			{ 
   147 			//
   148 			// A pleasant bell-like sequence based on clock chimes
   149 			// Duration:  5 seconds
   150 			// 
   151 			name="Chimes"; 
   152 			},
   153 		SEQUENCE_DATA
   154 			{
   155 			data =
   156 				{
   157 				SEQ_DATA
   158 					(
   159 					SEQ_2TONES(2500,SEQ_FREQ_E1,SEQ_VOL_MP,SEQ_FREQ_E1+5,SEQ_VOL_MP)
   160 					SEQ_2TONES(2500,SEQ_FREQ_C1,SEQ_VOL_MP,SEQ_FREQ_C1+5,SEQ_VOL_MP)
   161 					SEQ_2TONES(2500,SEQ_FREQ_D1,SEQ_VOL_MP,SEQ_FREQ_D1+5,SEQ_VOL_MP)
   162 					SEQ_2TONES(6250,SEQ_FREQ_G0,SEQ_VOL_MF,SEQ_FREQ_G0+5,SEQ_VOL_P)
   163 					SEQ_SILENCE(1250)
   164  					SEQ_2TONES(2500,SEQ_FREQ_G0,SEQ_VOL_MP,SEQ_FREQ_G0+5,SEQ_VOL_MP)
   165 					SEQ_2TONES(2500,SEQ_FREQ_D1,SEQ_VOL_MP,SEQ_FREQ_D1+5,SEQ_VOL_MP)
   166 					SEQ_2TONES(2500,SEQ_FREQ_E1,SEQ_VOL_MF,SEQ_FREQ_E1+5,SEQ_VOL_P)
   167 					SEQ_2TONES(7500,SEQ_FREQ_C1,SEQ_VOL_MP,SEQ_FREQ_C1+5,SEQ_VOL_MP)
   168 					SEQ_SILENCE(10000)
   169 					)
   170 				};
   171 			},
   172         	SEQUENCE_NAME 
   173 			{ 
   174 			//
   175 			// A quiet sequence similar to a digital watch alarm
   176 			// Duration:  2.5 seconds
   177 			// 
   178 			name="Signal"; 
   179 			},
   180 		SEQUENCE_DATA
   181 			{ 
   182 			data =
   183 				{
   184 				SEQ_DATA
   185 					(
   186 					SEQ_LOOP
   187 						(
   188 						3,
   189 						SEQ_LOOP
   190 							(
   191 							3,
   192 							SEQ_TONE(328,SEQ_FREQ_AsBf3,SEQ_VOL_MF)
   193 							SEQ_SILENCE(339)
   194 							)
   195 						SEQ_SILENCE(2333)
   196 						)
   197 					SEQ_SILENCE(6998)
   198 					)
   199 				};
   200 			},
   201         	SEQUENCE_NAME 
   202 			{ 
   203 			//
   204 			// Sounds like a fanfare played on an electric organ
   205 			// Duration:  2.6 seconds
   206 			// 
   207 			name="Fanfare"; 
   208 			},
   209 		SEQUENCE_DATA
   210 			{ 
   211 			data =
   212 				{
   213 				SEQ_DATA
   214 					(
   215 					SEQ_2TONES(2000,SEQ_FREQ_DsEf1,SEQ_VOL_MP,SEQ_FREQ_DsEf0,SEQ_VOL_MP)
   216 					SEQ_2TONES(2000,SEQ_FREQ_GsAf1,SEQ_VOL_MP,SEQ_FREQ_GsAf0,SEQ_VOL_MP)
   217 					SEQ_2TONES(1000,SEQ_FREQ_C2,SEQ_VOL_MP,SEQ_FREQ_C1,SEQ_VOL_MP)
   218 					SEQ_2TONES(1000,SEQ_FREQ_GsAf1,SEQ_VOL_MF,SEQ_FREQ_GsAf0,SEQ_VOL_P)
   219 					SEQ_2TONES(2000,SEQ_FREQ_DsEf1,SEQ_VOL_MP,SEQ_FREQ_DsEf0,SEQ_VOL_MP)
   220 					SEQ_2TONES(2000,SEQ_FREQ_GsAf1,SEQ_VOL_MP,SEQ_FREQ_GsAf0,SEQ_VOL_MP)
   221 					SEQ_2TONES(4000,SEQ_FREQ_C2,SEQ_VOL_MP,SEQ_FREQ_C1,SEQ_VOL_MP)
   222 					SEQ_2TONES(4000,SEQ_FREQ_GsAf1,SEQ_VOL_MF,SEQ_FREQ_GsAf0,SEQ_VOL_P)
   223 					SEQ_SILENCE(4000)
   224 					)
   225 				};
   226 			},
   227 		SEQUENCE_NAME 
   228 			{ 
   229 			//
   230 			// Pleasant two-tone chimes
   231 			// Duration:  4 seconds
   232 			// 
   233 			name="Bells"; 
   234 			},
   235 		SEQUENCE_DATA
   236 			{ 
   237 			data =
   238 				{
   239 				SEQ_DATA
   240 					(
   241 					SEQ_LOOP
   242 						(
   243 						2,
   244 						SEQ_2TONES(4000,SEQ_FREQ_E1,SEQ_VOL_MP,SEQ_FREQ_C1,SEQ_VOL_MP)
   245 						SEQ_2TONES(8000,SEQ_FREQ_C1,SEQ_VOL_MP,SEQ_FREQ_G0,SEQ_VOL_MP)
   246 						)
   247 					SEQ_SILENCE(8000)
   248  					)
   249 				};
   250 			},
   251 		SEQUENCE_NAME 
   252 			{ 
   253 			//
   254 			// Cavalry charge
   255 			// Duration: 2 seconds
   256 			// 
   257 			name="Cavalry"; 
   258 			},
   259 		SEQUENCE_DATA
   260 			{ 
   261 			data =
   262 				{
   263 				SEQ_DATA
   264 					(
   265 					SEQ_LOOP
   266 						(
   267 						2,
   268 						SEQ_2TONES(1333,SEQ_FREQ_A2,SEQ_VOL_MP,SEQ_FREQ_A1,SEQ_VOL_MP)
   269 						SEQ_SILENCE(667)
   270  						SEQ_2TONES(333,SEQ_FREQ_A2,SEQ_VOL_MP,SEQ_FREQ_A1,SEQ_VOL_MP)
   271 						SEQ_SILENCE(333)
   272  						)
   273 					SEQ_LOOP
   274 						(
   275 						2,
   276 						SEQ_2TONES(1333,SEQ_FREQ_E2,SEQ_VOL_MP,SEQ_FREQ_E1,SEQ_VOL_MP)
   277 						SEQ_SILENCE(667)
   278  						SEQ_2TONES(333,SEQ_FREQ_CsDf2,SEQ_VOL_MP,SEQ_FREQ_CsDf1,SEQ_VOL_MP)
   279 						SEQ_SILENCE(333)
   280  						)
   281 					SEQ_2TONES(2667,SEQ_FREQ_A2,SEQ_VOL_MP,SEQ_FREQ_A1,SEQ_VOL_MP)
   282 					SEQ_SILENCE(2667)
   283  					)
   284 				};
   285 			}
   286 		};
   287 	}
   288