devsound/devsoundrefplugin/src/sounddevice/FixedSequence.rss
changeset 0 79dd3e2336a0
equal deleted inserted replaced
-1:000000000000 0:79dd3e2336a0
       
     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