チェンジセット 3013
- コミット日時:
- 2009/08/12 16:31:06 (3 年前)
- ファイル:
-
- as3/SiOPM/trunk/archive/sion056.zip (更新) (変更前)
- as3/SiOPM/trunk/doc/mml_reference/siopm_mml_ref_05.html (更新) (1 diff)
- as3/SiOPM/trunk/doc/mml_reference/siopm_mml_ref_05_e.html (更新) (1 diff)
- as3/SiOPM/trunk/samples/SiONKaosPad/app.swf (更新) (変更前)
- as3/SiOPM/trunk/samples/SiONKaosillator/Kaosillator.as (更新) (1 diff)
- as3/SiOPM/trunk/samples/SiONKaosillator/app.swf (更新) (変更前)
- as3/SiOPM/trunk/samples/SiONTenoran (追加)
- as3/SiOPM/trunk/samples/SiONTenoran/Tenoran.as (追加)
- as3/SiOPM/trunk/samples/SiONTenoran/app.swf (追加)
- as3/SiOPM/trunk/src/org/si/sion/sequencer/SiMMLTrack.as (更新) (6 diffs)
- as3/SiOPM/trunk/src/org/si/sion/sequencer/base/MMLData.as (更新) (1 diff)
- as3/SiOPM/trunk/src/org/si/sion/sequencer/base/MMLSequence.as (更新) (2 diffs)
- as3/SiOPM/trunk/src/org/si/sion/sequencer/base/MMLSequenceGroup.as (更新) (3 diffs)
- as3/SiOPM/trunk/src/org/si/sion/utils/Chord.as (更新) (2 diffs)
- as3/SiOPM/trunk/src/org/si/sion/utils/Scale.as (更新) (4 diffs)
- as3/SiOPM/trunk/src/org/si/sion/utils/SiONPresetVoice.as (更新) (2 diffs)
- as3/SiOPM/trunk/src/org/si/sound/Arpeggiator.as (更新) (2 diffs)
- as3/SiOPM/trunk/src/org/si/sound/LoopSequencer.as (削除)
- as3/SiOPM/trunk/src/org/si/sound/base/SingleTrackObject.as (更新) (2 diffs)
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
as3/SiOPM/trunk/doc/mml_reference/siopm_mml_ref_05.html
r2989 r3013 1473 1473 </div> 1474 1474 </div> 1475 <div class='appendex'> 1476 <div class='title'>%11;物理音源ギターの音色</div> 1477 <div> 1478 %11の物理音源ギターは,"@","s","@f"コマンドで音色を定義します.<br/><br/> 1479 "@"コマンドでピッキングの特徴を定義します.このコマンドは第1引数によって,第2引数以降の意味が異なります.<br/> 1480 <pre class='formula'>@0,<i>[ar],[dr],[tl],[pitch],[ws]</i></pre> 1481 第1引数が0の場合,以下5引数によって定義します.<br/> 1482 第2,第3,第4引数は,それぞれピッキングのAttack rate, Decay rate, total levelでエンベロープを定義します.値の意味は,sl=15の場合のFM音源オペレータと同じです.<br/> 1483 第5引数はピッキング音の音程で,ノート番号で指定します(default=60=o5c).<br/> 1484 第6引数はピッキング音に用いる波形番号で,%5の場合の@第1引数で指定します(default=20=pink noise).通常,撥弦楽器モデリングではピッキング音にノイズ波形を用います.<br/> 1485 <pre class='formula'>@1,<i>[FM音色番号]</i></pre> 1486 <pre class='formula'>@2,<i>[PCM波形番号]</i></pre> 1487 第1引数が1,2の場合,それぞれ,第2引数でFM音色番号,PCM波形番号を指定します.この場合,ピッキングにFM音源,PCM音源の出力音を使う事ができます.<br/><br/> 1488 "s"コマンドは,弦の倍音の減衰を定義します.sコマンドの第1引数で弦の倍音成分の減衰の早さを指定します.倍音成分自体はピッキングで与える音によってコントロールします.<br/><br/> 1489 "@f"コマンドは,通常の音色と同様にLPフィルタをかけます. 1490 </div> 1491 </div> 1475 1492 </div> 1476 1493 as3/SiOPM/trunk/doc/mml_reference/siopm_mml_ref_05_e.html
r2989 r3013 1474 1474 </div> 1475 1475 </div> 1476 <div class='appendex'> 1477 <div class='title'>%11; Control the voice of PMS guitar</div> 1478 <div> 1479 The voice of physical modeling synthesis guitar (%11) is controled by "@", "s" and "@f" commands.<br/><br/> 1480 "@" command defines a plunk profile. The meanings of 2nd and following arguments depend on the 1st argument.<br/> 1481 <pre class='formula'>@0,<i>[ar],[dr],[tl],[pitch],[ws]</i></pre> 1482 When the 1st argument is 0, voice is defined by following 5 arguments.<br/> 1483 The 2nd, 3rd and 4th arguments are for the attack rate, decay rate and total level of a plunking energy, respectively. The meanings are same as FM synth.<br/> 1484 The 5th argument is for the pitch of plunking noise and specifyed by note number (defalut=60=o5c).<br/> 1485 The 6th argument is for the wave shape of plunking noise and specifyed by wave number of %5 (defalut=20=pink noise).<br/> 1486 <pre class='formula'>@1,<i>[FM voice number]</i></pre> 1487 <pre class='formula'>@2,<i>[PCM wave number]</i></pre> 1488 When the 1st argument is 1 or 2, the 2nd argument specifies FM voice number or PCM wave number, respectively. In this case, you can use FM voice or PCM wave as a plunk noise.<br/><br/> 1489 "s" command defines the attenuation of string energy.<br/><br/> 1490 "@f" command defines low-pass filter same as other voices. 1491 </div> 1492 </div> 1476 1493 </div> 1477 1494 as3/SiOPM/trunk/samples/SiONKaosillator/Kaosillator.as
r2989 r3013 47 47 rythmLoop.setVoice(2, percusVoices[16]); // close hihat 48 48 rythmLoop.setVoice(3, percusVoices[21]); // open hihat 49 rythmLoop.setVoice(4, presetVoice["valsound.bas e3"]); // base49 rythmLoop.setVoice(4, presetVoice["valsound.bass3"]); // bass 50 50 51 51 // listen click as3/SiOPM/trunk/src/org/si/sion/sequencer/SiMMLTrack.as
r2989 r3013 9 9 import org.si.sion.module.SiOPMChannelBase; 10 10 import org.si.sion.module.SiOPMTable; 11 import org.si.sion.sequencer.base.MMLData; 11 12 import org.si.sion.sequencer.base.MMLEvent; 12 13 import org.si.sion.sequencer.base.MMLSequence; … … 89 90 90 91 // internal use 92 private var _mmlData:MMLData; // mml data 91 93 private var _table:SiMMLTable; // table 92 94 private var _keyOnCounter:int; // key on counter … … 227 229 executor = new MMLExecutor(); 228 230 231 _mmlData = null; 229 232 _set_processMode = new Vector.<int>(2, true); 230 233 … … 262 265 _eventTriggerTypeOn = 0; 263 266 _eventTriggerTypeOff = 0; 267 _mmlData = (seq) ? seq._owner : null; 264 268 executor.initialize(seq); 265 269 … … 469 473 /** Channel module type (%) and select tone (1st argument of '@'). 470 474 * @param type Channel module type 471 * @param channelNum Channel number. For %2- 5 and %7-11, this value is same as 1st argument of '@'.472 * @param toneNum Tone number. Ussualy, this argument is used only in %0;PSG , %1;APU and %6;FM.475 * @param channelNum Channel number. For %2-11, this value is same as 1st argument of '@'. 476 * @param toneNum Tone number. Ussualy, this argument is used only in %0;PSG and %1;APU. 473 477 */ 474 478 public function setChannelModuleType(type:int, channelNum:int, toneNum:int=-1) : void … … 693 697 internal function prepareBuffer(bufferingTick:int) : int 694 698 { 699 // register tables 700 if (_mmlData) _mmlData._regiterTables(); 701 695 702 // almost executing this 696 703 if (_trackStartDelay == 0) return bufferingTick; as3/SiOPM/trunk/src/org/si/sion/sequencer/base/MMLData.as
r2989 r3013 60 60 function MMLData() 61 61 { 62 sequenceGroup = new MMLSequenceGroup( );62 sequenceGroup = new MMLSequenceGroup(this); 63 63 globalSequence = new MMLSequence(); 64 64 as3/SiOPM/trunk/src/org/si/sion/sequencer/base/MMLSequence.as
r2989 r3013 28 28 private var _isTerminal:Boolean; 29 29 30 /** @private [internal use] owner data */ 31 public var _owner:MMLData; 30 32 31 33 … … 47 49 function MMLSequence(term:Boolean = false) 48 50 { 51 _owner = null; 49 52 headEvent = null; 50 53 tailEvent = null; as3/SiOPM/trunk/src/org/si/sion/sequencer/base/MMLSequenceGroup.as
r2989 r3013 14 14 // valiables 15 15 //-------------------------------------------------- 16 // terminator16 // terminator 17 17 private var _term:MMLSequence; 18 19 // owner data 20 private var _owner:MMLData 18 21 19 22 … … 38 41 // constructor 39 42 //-------------------------------------------------- 40 function MMLSequenceGroup( )43 function MMLSequenceGroup(owner:MMLData) 41 44 { 45 _owner = owner; 42 46 _sequences = new Vector.<MMLSequence>(); 43 47 _term = new MMLSequence(true); … … 111 115 { 112 116 var seq:MMLSequence = _freeList.pop() || new MMLSequence(); 117 seq._owner = _owner; 113 118 _sequences.push(seq); 114 119 return seq; as3/SiOPM/trunk/src/org/si/sion/utils/Chord.as
r2989 r3013 1 1 //---------------------------------------------------------------------------------------------------- 2 2 // Chord class 3 // Copyright (c) 200 9keim All rights reserved.3 // Copyright (c) 2008 keim All rights reserved. 4 4 // Distributed under BSD-style license (see org.si.license.txt). 5 5 //---------------------------------------------------------------------------------------------------- … … 7 7 8 8 package org.si.sion.utils { 9 /** This represents chord*/9 /** Chord class. */ 10 10 public class Chord 11 11 { 12 /** Chord name */ 12 // constants 13 //-------------------------------------------------- 14 /** Chord table of C */ 15 protected const CT_MAJOR :int = 0x1091091; 16 /** Chord table of Cm */ 17 protected const CT_MINOR :int = 0x1089089; 18 /** Chord table of C7 */ 19 protected const CT_7TH :int = 0x0490491; 20 /** Chord table of Cm7 */ 21 protected const CT_MIN7 :int = 0x0488489; 22 /** Chord table of CM7 */ 23 protected const CT_MAJ7 :int = 0x0890891; 24 /** Chord table of CmM7 */ 25 protected const CT_MM7 :int = 0x0888889; 26 /** Chord table of C9 */ 27 protected const CT_9TH :int = 0x0484491; 28 /** Chord table of Cm9 */ 29 protected const CT_MIN9 :int = 0x0484489; 30 /** Chord table of CM9 */ 31 protected const CT_MAJ9 :int = 0x0884891; 32 /** Chord table of CmM9 */ 33 protected const CT_MM9 :int = 0x0884889; 34 /** Chord table of Cadd9 */ 35 protected const CT_ADD9 :int = 0x1084091; 36 /** Chord table of Cmadd9 */ 37 protected const CT_MINADD9:int = 0x1084089; 38 /** Chord table of C69 */ 39 protected const CT_69TH :int = 0x1204211; 40 /** Chord table of Cm69 */ 41 protected const CT_MIN69 :int = 0x1204209; 42 /** Chord table of Csus4 */ 43 protected const CT_SUS4 :int = 0x10a10a1; 44 /** Chord table of Csus47 */ 45 protected const CT_SUS47 :int = 0x04a04a1; 46 /** Chord table of Cdim */ 47 protected const CT_DIM :int = 0x1489489; 48 /** Chord table of Carg */ 49 protected const CT_AUG :int = 0x1111111; 50 51 52 53 54 // valiables 55 //-------------------------------------------------- 56 /** note table */ 57 protected var _chordTable:int; 58 /** notes on the chord */ 59 protected var _chordNotes:Vector.<int>; 60 /** chord name */ 13 61 protected var _chordName:String; 14 62 15 63 64 65 66 // properties 67 //-------------------------------------------------- 68 /** Chord name. 69 * The regular expression of name is /(o[0-9])?([A-Ga-g])([+#\-])?([a-z0-9]+)?(,[0-9]+[+#\-]?)?(,[0-9]+[+#\-]?)?/.<br/> 70 * The 1st letter means center octave. default octave = 5 (when omit).<br/> 71 * The 2nd letter means base note.<br/> 72 * The 3nd letter (option) means note shift sign. "+" and "#" shift +1, "-" shifts -1.<br/> 73 * The 4th letters (option) means chord as follows.<br/> 74 * <table> 75 * <tr><th>the 3rd letters</th><th>chord</th></tr> 76 * <tr><td>(no matching), maj</td><td>Major chord</td></tr> 77 * <tr><td>m</td><td>Minor chord</td></tr> 78 * <tr><td>7</td><td>7th chord</td></tr> 79 * <tr><td>m7</td><td>Minor 7th chord</td></tr> 80 * <tr><td>M7</td><td>Major 7th chord</td></tr> 81 * <tr><td>mM7</td><td>Minor major 7th chord</td></tr> 82 * <tr><td>9</td><td>9th chord</td></tr> 83 * <tr><td>m9</td><td>Minor 9th chord</td></tr> 84 * <tr><td>M9</td><td>Major 9th chord</td></tr> 85 * <tr><td>mM9</td><td>Minor major 9th chord</td></tr> 86 * <tr><td>add9</td><td>Add 9th chord</td></tr> 87 * <tr><td>madd9</td><td>Minor add 9th chord</td></tr> 88 * <tr><td>69</td><td>6,9th chord</td></tr> 89 * <tr><td>m69</td><td>Minor 6,9th chord</td></tr> 90 * <tr><td>sus4</td><td>Sus4 chord</td></tr> 91 * <tr><td>sus47</td><td>Sus4 7th chord</td></tr> 92 * <tr><td>dim</td><td>Diminish chord</td></tr> 93 * <tr><td>arg</td><td>Augment chord</td></tr> 94 * The 5th and 6th letters (option) means tension notes.<br/> 95 * </table> 96 * If you want to set "F sharp minor 7th", chordName = "F+m7". 97 */ 16 98 public function get chordName() : String { return _chordName; } 17 99 public function set chordName(name:String) : void { 100 var rex:RegExp = /(o[0-9])?([A-Ga-g])([+#\-b])?([a-z0-9]+)?(,([0-9]+[+#\-]?))?(,([0-9]+[+#\-]?))?/; 101 var mat:* = rex.exec(name); 102 var i:int; 103 if (mat) { 104 _chordName = name; 105 var baseNote:int = [9,11,0,2,4,5,7][String(mat[2]).toLowerCase().charCodeAt() - 'a'.charCodeAt()]; 106 if (mat[3]) { 107 if (mat[3]=='+' || mat[3]=='#') baseNote++; 108 else if (mat[3]=='-') baseNote--; 109 } 110 if (baseNote < 0) baseNote += 12; 111 else if (baseNote > 11) baseNote -= 12; 112 if (mat[1]) baseNote += int(mat[1].charAt(1)) * 12; 113 else baseNote += 60; 114 if (mat[4]) { 115 switch(mat[4]) { 116 case "m": _chordTable = CT_MINOR; break; 117 case "7": _chordTable = CT_7TH; break; 118 case "m7": _chordTable = CT_MAJ7; break; 119 case "M7": _chordTable = CT_MIN7; break; 120 case "mM7": _chordTable = CT_MM7; break; 121 case "9": _chordTable = CT_9TH; break; 122 case "m9": _chordTable = CT_MIN9; break; 123 case "M9": _chordTable = CT_MAJ9; break; 124 case "mM9": _chordTable = CT_MM9; break; 125 case "add9": _chordTable = CT_ADD9; break; 126 case "madd9": _chordTable = CT_MINADD9; break; 127 case "69": _chordTable = CT_69TH; break; 128 case "m69": _chordTable = CT_MIN69; break; 129 case "sus4": _chordTable = CT_SUS4; break; 130 case "sus47": _chordTable = CT_SUS47; break; 131 case "dim": _chordTable = CT_DIM; break; 132 case "arg": _chordTable = CT_AUG; break; 133 default: _chordTable = CT_MAJOR; break; 134 } 135 } else { 136 _chordTable = CT_MAJOR; 137 } 138 _chordNotes.length = 0; 139 for (i=0; i<25; i++) if (_chordTable & (1<<i)) _chordNotes.push(i + baseNote); 140 } else { 141 _chordName = "C"; 142 _chordTable = CT_MAJOR; 143 _chordNotes.length = 0; 144 for (i=0; i<25; i++) if (_chordTable & (1<<i)) _chordNotes.push(i + 60); 145 } 146 } 147 148 149 /** base note number */ 150 public function get baseNote() : int { return _chordNotes[0]; } 151 152 153 154 155 // constructor 156 //-------------------------------------------------- 157 /** constructor 158 * @param chordName chord name. 159 * @see #chordName 160 */ 161 function Chord(chordName:String = "") 162 { 163 _chordNotes = new Vector.<int>(); 164 this.chordName = chordName; 165 } 166 167 168 /** set chord table manualy. 169 * @param name name of this chord. 170 * @param baseNote base note of this chord. 171 * @table Boolean table of available note on this chord. The index of 0 is base note. 172 @example If you want to set "Dm11".<br/> 173 <listing version="3.0"> 174 var table:Array = [1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1]; // Dm11 = d,f,a,<c,e,g,<c 175 chord.setScaleTable("Dm11", 62, table); // 62 = "D"s ntoe number. 176 </listing> 177 */ 178 public function setScaleTable(name:String, baseNote:int, table:Array) : void 179 { 18 180 _chordName = name; 19 } 20 21 22 function Chord(chordName:String="") { 23 this.chordName = chordName; 181 var i:int, imax:int = (table.length<12) ? table.length : 12; 182 _chordTable = 0; 183 for (i=0; i<imax; i++) if (table[i]) _chordTable |= (1<<i); 184 _chordNotes.length = 0; 185 for (i=0; i<12; i++) if (_chordTable & (1<<i)) _chordNotes.push(i + baseNote); 186 } 187 188 189 190 191 // operations 192 //-------------------------------------------------- 193 /** check note availability on this chord. 194 * @param note MIDI note number (0-127). 195 * @return Returns true if the note is in this chord. 196 */ 197 public function check(note:int) : Boolean { 198 if (note < _chordNotes[0]) return false; 199 var i:int, imax:int = _chordNotes.length; 200 for (i=0; i<imax; i++) { 201 if (note == _chordNotes[i]) return true; 202 } 203 return false; 204 } 205 206 207 /** shift note to the nearest note on this chord. 208 * @param note MIDI note number (0-127). 209 * @return Returns shifted note. if the note is in this chord, no shift. 210 */ 211 public function shift(note:int) : int { 212 var i:int, imax:int = _chordNotes.length, octaveShift:int = 0; 213 while (note < _chordNotes[0]) { 214 note += 12; 215 octaveShift -= 12; 216 } 217 for (i=0; i<imax; i++) { 218 if (note <= _chordNotes[i]) return _chordNotes[i] + octaveShift; 219 } 220 return _chordNotes[imax-1]; 221 } 222 223 224 /** get note by index on this chord. 225 * @param index index on this chord. You can specify both posi and nega values. 226 * @param centerOctave The octave of index = 0. 227 * @return MIDI note number on this chord. 228 */ 229 public function getNote(index:int) : int { 230 return _chordNotes[index]; 24 231 } 25 232 } 26 233 } 27 234 235 as3/SiOPM/trunk/src/org/si/sion/utils/Scale.as
r2989 r3013 174 174 175 175 176 /** base note (0-11)*/176 /** base note number */ 177 177 public function get baseNote() : int { return _scaleNotes[0]; } 178 178 … … 200 200 <listing version="3.0"> 201 201 var table:Array = [1,0,1,0,0,1,0,1,0,0,1,0]; // c,d,f,g,b- is available on "C japanese scale". 202 scale.setScaleTable("Fjap", 5, table); // "F" is 5th tone from "C".202 scale.setScaleTable("Fjap", 65, table); // 65="F"s note number 203 203 </listing> 204 204 */ … … 222 222 /** check note availability on this scale. 223 223 * @param note MIDI note number (0-127). 224 * @return Returns true if the note on this scale.224 * @return Returns true if the note is on this scale. 225 225 */ 226 226 public function check(note:int) : Boolean { … … 232 232 /** shift note to the nearest note on this scale. 233 233 * @param note MIDI note number (0-127). 234 * @return Returns shifted note. if the note on this scale, no shift.234 * @return Returns shifted note. if the note is on this scale, no shift. 235 235 */ 236 236 public function shift(note:int) : int { as3/SiOPM/trunk/src/org/si/sion/utils/SiONPresetVoice.as
r2989 r3013 18 18 <listing version="3.0"> 19 19 var voices:SiONPresetVoice = new SiONPresetVoice(); // create new instance. 20 var bas eVoiceList:Array = voices["valsound.base"]; // access voice list by categoly key21 var bas e10:SiONVoice = baseVoiceList[10]; // access voice by index20 var bassVoiceList:Array = voices["valsound.bass"]; // access voice list by categoly key 21 var bass10:SiONVoice = bassVoiceList[10]; // access voice by index 22 22 </listing> 23 23 @example Or you can access Array list by categolies property. … … 78 78 79 79 if (includeFlag & INCLUDE_VALSOUND) { 80 _categoly("valsound.bas e");81 _OPN("valsound.bas e1", "Analog Bass #2+FBsynth", 6,7, 31,00,00,12,01,18,1,01,0,0, 31,00,01,12,01,04,1,02,0,0, 31,00,00,09,00,03,0,01,7,0, 31,00,00,09,00,03,0,01,3,0);82 _OPN("valsound.bas e2", "Analog Bass", 5,6, 31,00,00,00,00,41,0,01,0,0, 20,00,00,10,00,00,0,01,1,0, 24,00,00,08,00,00,0,01,2,0, 20,00,00,10,00,00,0,01,3,0);83 _OPN("valsound.bas e3", "Analog bass #2 (q2)", 6,4, 21,05,00,00,02,35,0,00,0,0, 26,10,00,11,01,00,0,01,0,0, 27,00,00,11,00,00,0,01,3,0, 27,14,00,11,01,00,0,01,7,0);84 _OPN("valsound.bas e4", "Chopper Bass 0", 0,5, 28,14,15,15,04,25,2,10,1,0, 31,14,10,09,03,34,2,00,2,0, 31,14,09,09,02,23,0,00,3,0, 31,06,05,11,02,00,0,00,7,0);85 _OPN("valsound.bas e5", "Chopper Bass 1", 0,5, 28,14,15,15,04,30,1,14,1,0, 31,14,10,09,02,35,1,03,2,0, 31,14,09,09,02,25,0,00,3,0, 31,06,05,11,01,00,0,00,7,0);86 _OPN("valsound.bas e6", "Chopper bass 2 (CUT)", 0,4, 31,15,28,05,02,28,3,15,6,0, 31,10,15,04,04,41,3,04,6,0, 31,08,03,05,01,21,2,00,6,0, 31,02,02,05,15,00,2,00,6,0);87 _OPN("valsound.bas e7", "Chopper bass 3", 0,5, 31,18,02,13,09,28,2,13,1,0, 31,10,15,04,04,41,3,01,2,0, 31,08,03,05,01,21,2,00,3,0, 31,02,02,12,15,00,2,00,7,0);88 _OPN("valsound.bas e8", "Elec.Chopper bass+ 4", 0,5, 31,18,02,13,09,28,2,13,1,0, 31,10,15,04,04,41,3,01,2,0, 31,08,03,05,01,21,2,00,3,0, 31,02,02,12,15,00,2,01,7,0);89 _OPN("valsound.bas e9", "Effect Bass 1", 4,3, 23,05,04,07,02,00,0,01,3,0, 30,02,02,08,02,00,1,07,3,0, 24,05,04,07,02,00,0,01,7,0, 31,02,02,08,02,00,1,10,7,0);90 _OPN("valsound.bas e10", "Effect Bass 2 to UP", 4,3, 03,06,05,15,02,00,0,01,3,0, 07,04,03,15,02,00,1,07,3,0, 03,06,05,15,02,00,0,01,7,0, 07,04,03,15,02,00,1,10,7,0);91 _OPN("valsound.bas e11", "Effect Bass 1", 4,3, 22,05,06,00,00,09,0,01,3,0, 19,03,04,07,01,00,0,07,3,0, 23,00,00,00,00,19,0,01,7,0, 20,02,00,07,01,00,0,01,7,0);92 _OPN("valsound.bas e12", "Mohaaa", 0,5, 07,00,00,15,00,21,0,01,0,0, 06,00,00,15,00,18,0,02,0,0, 08,00,00,15,00,23,0,01,0,0, 18,00,00,15,00,00,0,02,0,0);93 _OPN("valsound.bas e13", "Effect FB Bass #5", 0,7, 31,06,02,15,03,20,0,01,3,0, 31,06,02,15,06,14,2,02,0,0, 06,06,02,15,01,08,0,01,7,0, 31,05,01,15,02,00,0,02,0,0);94 _OPN("valsound.bas e14", "Magical bass", 0,7, 31,08,00,06,10,38,1,01,3,0, 28,18,05,06,13,47,1,10,7,0, 31,07,07,06,08,23,2,00,2,0, 28,09,06,08,01,00,2,00,0,0);95 _OPN("valsound.bas e15", "E.Bass #6", 0,7, 31,15,00,10,05,35,1,14,3,0, 31,14,07,07,04,41,1,04,7,0, 31,14,03,00,02,18,1,00,3,0, 31,12,08,08,01,00,0,00,7,0);96 _OPN("valsound.bas e16", "E.Bass #7", 3,7, 31,15,00,10,05,29,1,10,7,0, 31,13,07,07,04,46,1,04,7,0, 31,14,05,00,02,19,1,00,3,0, 31,12,04,08,01,00,0,00,0,0);97 _OPN("valsound.bas e17", "E.Bass 70", 2,5, 31,08,00,00,03,34,0,00,3,0, 31,14,06,09,02,42,0,08,0,0, 31,16,03,00,02,20,0,00,7,0, 31,12,05,08,02,00,0,01,0,0);98 _OPN("valsound.bas e18", "VAL006 Bass like Euro", 0,4, 31,07,07,11,02,25,3,06,0,0, 31,06,06,11,01,55,3,04,7,0, 31,09,06,11,01,18,2,00,3,0, 31,06,08,11,15,00,2,01,0,0);99 _OPN("valsound.bas e19", "E.Bass x2", 2,7, 31,14,08,03,01,33,0,00,1,0, 31,17,08,09,05,30,0,14,2,0, 31,15,08,05,05,35,0,04,3,0, 31,15,08,06,01,00,0,01,7,0);100 _OPN("valsound.bas e20", "E.Bass x4", 2,7, 31,14,03,00,02,33,1,03,3,0, 23,16,04,12,03,30,2,10,0,0, 31,13,03,11,03,27,1,00,7,0, 31,07,05,09,01,00,3,01,0,0);101 _OPN("valsound.bas e21", "Metal pick bass X5", 3,7, 31,14,00,06,13,51,2,13,0,0, 31,13,00,06,13,21,0,01,0,0, 31,09,00,06,13,23,0,00,0,0, 31,09,00,07,13,00,0,00,0,0);102 _OPN("valsound.bas e22", "Groove Bass 1", 5,3, 31,00,00,00,00,38,0,00,0,0, 21,00,00,13,00,05,0,00,0,0, 21,00,00,13,00,03,0,01,0,0, 21,00,00,13,00,03,0,01,0,0);103 _OPN("valsound.bas e23", "Analog Bass Groove #2", 6,5, 31,00,00,00,00,41,0,02,0,0, 31,00,00,10,00,02,0,01,0,0, 31,00,00,10,00,01,0,01,7,0, 31,00,00,10,00,01,0,01,3,0);104 _OPN("valsound.bas e24", "Harmonics #1", 6,6, 31,12,09,00,02,45,1,02,3,0, 31,10,08,06,01,00,1,01,7,0, 31,13,08,05,02,00,1,02,7,0, 31,16,12,05,10,00,1,00,3,0);105 _OPN("valsound.bas e25", "Low Bass x1", 5,3, 31,00,09,15,00,25,2,00,0,0, 31,15,06,08,01,00,1,00,1,0, 31,15,06,08,01,00,1,01,2,0, 31,15,00,07,02,00,1,01,3,0);106 _OPN("valsound.bas e26", "Low_bass x2 Little FB", 5,6, 21,00,09,00,00,24,2,00,0,0, 21,15,06,08,01,00,1,00,1,0, 21,15,06,08,01,00,1,01,2,0, 27,15,00,07,02,00,1,01,3,0);107 _OPN("valsound.bas e27", "Low Bass x1 Rezzo.", 5,3, 31,00,09,15,00,30,2,00,0,0, 31,15,06,12,01,02,1,00,1,0, 31,15,06,12,01,02,1,01,2,0, 31,15,10,12,02,02,1,04,3,0);108 _OPN("valsound.bas e28", "Low Bass Picked", 5,7, 31,05,00,00,11,33,1,00,0,0, 30,12,04,09,01,00,1,00,0,0, 27,14,08,09,03,00,1,01,0,0, 27,14,07,12,15,06,1,05,0,0);109 _OPN("valsound.bas e29", "metal base", 0,5, 20,10,09,15,01,22,0,00,7,0, 17,09,00,00,02,22,0,01,7,0, 21,09,00,00,01,18,0,00,3,0, 18,08,00,08,01,00,0,01,3,0);110 _OPN("valsound.bas e30", "e.n.bass 1", 3,7, 27,14,00,04,04,25,0,07,0,0, 31,12,00,04,03,45,0,02,0,0, 31,19,00,04,05,15,0,00,0,0, 31,12,06,07,01,00,0,00,0,0);111 _OPN("valsound.bas e31", "psg bass 1", 5,7, 31,14,00,00,00,22,0,00,0,0, 31,14,03,08,05,00,0,01,3,0, 31,14,03,08,03,00,0,00,0,0, 31,16,03,08,03,00,0,01,7,0);112 _OPN("valsound.bas e32", "psg bass 2", 5,7, 31,14,00,00,00,22,0,01,0,0, 31,14,03,08,05,00,0,02,3,0, 31,14,03,08,03,00,0,00,0,0, 31,16,03,08,03,00,0,01,7,0);113 _OPN("valsound.bas e33", "rezonance type bass #1", 2,0, 24,19,02,13,10,33,1,03,3,0, 26,16,05,14,06,28,1,00,0,0, 15,14,06,08,05,14,1,00,0,0, 31,07,05,09,02,00,0,02,7,0);114 _OPN("valsound.bas e34", "slap bass", 2,2, 31,10,07,08,02,33,0,00,7,0, 21,08,08,07,05,23,3,07,7,0, 31,05,06,07,01,37,0,00,3,0, 31,08,06,07,05,00,0,01,7,0);115 _OPN("valsound.bas e35", "slap bass 1", 2,7, 31,14,07,08,02,33,0,00,7,0, 21,15,06,07,04,18,2,06,7,0, 31,05,06,07,01,40,0,00,3,0, 31,12,07,07,05,00,0,01,3,0);116 _OPN("valsound.bas e36", "slap bass 2 (1+)", 2,7, 31,14,07,08,02,33,0,00,7,0, 21,15,06,07,04,28,2,07,7,0, 31,05,06,07,01,40,0,00,3,0, 31,12,07,07,05,00,0,01,3,0);117 _OPN("valsound.bas e37", "slap bass #3", 2,7, 31,14,07,00,05,32,0,03,7,0, 31,16,01,12,04,35,0,10,0,0, 31,11,02,00,03,23,1,00,3,0, 31,12,05,07,01,00,0,00,0,0);118 _OPN("valsound.bas e38", "slap bass pull", 2,2, 31,10,07,08,02,33,0,00,7,0, 21,08,08,09,05,23,3,10,7,0, 31,05,06,10,01,37,0,00,3,0, 31,16,06,11,01,00,0,01,7,0);119 _OPN("valsound.bas e39", "slap bass mute", 2,2, 31,18,07,11,12,33,0,00,7,0, 21,11,08,11,15,23,3,07,7,0, 31,15,06,11,11,37,0,00,3,0, 31,15,06,13,11,00,0,01,7,0);120 _OPN("valsound.bas e40", "slap bass pick", 2,2, 31,10,07,08,02,33,0,00,7,0, 21,09,08,07,05,23,3,07,7,0, 31,05,06,08,01,37,0,00,3,0, 31,11,06,10,05,00,0,01,7,0);121 _OPN("valsound.bas e41", "super bass #2", 2,2, 24,18,02,13,09,12,2,03,3,0, 26,16,05,14,09,24,1,01,0,0, 31,12,02,08,03,22,1,00,7,0, 31,07,05,09,02,00,0,01,0,0);122 _OPN("valsound.bas e42", "sp_bass#3 soft", 2,3, 24,18,02,13,09,25,2,03,3,0, 26,16,05,14,09,24,1,01,0,0, 31,12,02,08,03,32,1,00,7,0, 31,07,05,09,02,00,0,01,0,0);123 _OPN("valsound.bas e43", "sp_bass#4 soft*2", 2,1, 24,18,02,13,10,28,2,03,3,0, 26,16,05,14,06,24,1,00,0,0, 31,12,02,08,03,30,1,00,7,0, 31,07,05,09,02,00,0,01,0,0);124 _OPN("valsound.bas e44", "sp_bass#5 attack", 0,5, 19,18,02,15,10,30,2,00,3,0, 31,16,05,14,05,24,1,00,0,0, 31,12,02,08,03,30,1,00,7,0, 31,10,07,09,02,00,0,01,0,0);125 _OPN("valsound.bas e45", "sp.bass#6 rezz+pipebass",2,3, 24,18,02,13,09,35,2,12,3,0, 26,16,05,14,09,25,1,02,0,0, 31,12,02,08,03,32,1,00,7,0, 31,07,05,09,02,00,0,01,0,0);126 _OPN("valsound.bas e46", "synth bass 1", 4,3, 30,00,00,00,00,23,0,01,3,0, 27,04,00,07,01,00,0,01,3,0, 30,00,00,00,00,18,0,01,7,0, 25,04,00,07,01,00,0,01,7,0);127 _OPN("valsound.bas e47", "synth bass 2 myon", 5,7, 14,00,09,12,00,26,2,00,0,0, 14,15,06,08,01,00,1,00,1,0, 20,15,06,08,01,00,1,01,2,0, 18,15,00,12,02,00,1,01,3,0);128 _OPN("valsound.bas e48", "synth bass #3 cho!", 3,7, 31,11,09,00,04,32,1,01,3,0, 31,15,07,08,05,41,1,08,7,0, 26,18,07,10,06,04,1,00,3,0, 31,09,06,07,01,00,0,00,7,0);129 _OPN("valsound.bas e49", "synth-wind-bass #4", 2,7, 31,13,09,00,04,32,1,00,3,0, 31,15,07,08,04,21,1,01,0,0, 26,18,07,08,03,21,1,01,7,0, 31,09,06,07,01,00,0,00,0,0);130 _OPN("valsound.bas e50", "synth bass #5 q2", 4,4, 20,00,00,08,07,17,0,00,3,0, 18,07,04,11,00,00,0,01,3,0, 18,00,00,09,00,22,0,01,7,0, 15,00,00,11,01,00,0,01,7,0);131 _OPN("valsound.bas e51", "old wood bass", 5,7, 31,15,00,13,02,28,1,00,0,0, 31,10,01,12,01,04,0,02,0,0, 25,10,01,12,01,04,0,01,0,0, 31,10,01,12,01,04,0,02,0,0);132 _OPN("valsound.bas e52", "w.bass bright", 2,7, 31,13,03,10,02,32,1,00,7,0, 31,12,04,10,03,20,1,00,0,0, 31,17,00,10,07,15,1,02,3,0, 31,06,01,10,05,00,1,01,0,0);133 _OPN("valsound.bas e53", "w.bass x2 bow", 4,5, 31,11,05,00,03,25,1,00,3,0, 31,10,09,08,04,00,1,01,3,0, 23,12,05,00,04,14,1,00,7,0, 31,12,09,07,05,00,1,02,7,0);134 _OPN("valsound.bas e54", "wood bass 3 (muted1)", 5,5, 31,15,00,15,02,38,1,00,0,0, 31,10,01,12,01,04,0,02,0,0, 25,10,01,12,01,02,0,01,0,0, 31,10,01,12,01,04,0,01,0,0);80 _categoly("valsound.bass"); 81 _OPN("valsound.bass1", "Analog Bass #2+FBsynth", 6,7, 31,00,00,12,01,18,1,01,0,0, 31,00,01,12,01,04,1,02,0,0, 31,00,00,09,00,03,0,01,7,0, 31,00,00,09,00,03,0,01,3,0); 82 _OPN("valsound.bass2", "Analog Bass", 5,6, 31,00,00,00,00,41,0,01,0,0, 20,00,00,10,00,00,0,01,1,0, 24,00,00,08,00,00,0,01,2,0, 20,00,00,10,00,00,0,01,3,0); 83 _OPN("valsound.bass3", "Analog bass #2 (q2)", 6,4, 21,05,00,00,02,35,0,00,0,0, 26,10,00,11,01,00,0,01,0,0, 27,00,00,11,00,00,0,01,3,0, 27,14,00,11,01,00,0,01,7,0); 84 _OPN("valsound.bass4", "Chopper Bass 0", 0,5, 28,14,15,15,04,25,2,10,1,0, 31,14,10,09,03,34,2,00,2,0, 31,14,09,09,02,23,0,00,3,0, 31,06,05,11,02,00,0,00,7,0); 85 _OPN("valsound.bass5", "Chopper Bass 1", 0,5, 28,14,15,15,04,30,1,14,1,0, 31,14,10,09,02,35,1,03,2,0, 31,14,09,09,02,25,0,00,3,0, 31,06,05,11,01,00,0,00,7,0); 86 _OPN("valsound.bass6", "Chopper bass 2 (CUT)", 0,4, 31,15,28,05,02,28,3,15,6,0, 31,10,15,04,04,41,3,04,6,0, 31,08,03,05,01,21,2,00,6,0, 31,02,02,05,15,00,2,00,6,0); 87 _OPN("valsound.bass7", "Chopper bass 3", 0,5, 31,18,02,13,09,28,2,13,1,0, 31,10,15,04,04,41,3,01,2,0, 31,08,03,05,01,21,2,00,3,0, 31,02,02,12,15,00,2,00,7,0); 88 _OPN("valsound.bass8", "Elec.Chopper bass+ 4", 0,5, 31,18,02,13,09,28,2,13,1,0, 31,10,15,04,04,41,3,01,2,0, 31,08,03,05,01,21,2,00,3,0, 31,02,02,12,15,00,2,01,7,0); 89 _OPN("valsound.bass9", "Effect Bass 1", 4,3, 23,05,04,07,02,00,0,01,3,0, 30,02,02,08,02,00,1,07,3,0, 24,05,04,07,02,00,0,01,7,0, 31,02,02,08,02,00,1,10,7,0); 90 _OPN("valsound.bass10", "Effect Bass 2 to UP", 4,3, 03,06,05,15,02,00,0,01,3,0, 07,04,03,15,02,00,1,07,3,0, 03,06,05,15,02,00,0,01,7,0, 07,04,03,15,02,00,1,10,7,0); 91 _OPN("valsound.bass11", "Effect Bass 1", 4,3, 22,05,06,00,00,09,0,01,3,0, 19,03,04,07,01,00,0,07,3,0, 23,00,00,00,00,19,0,01,7,0, 20,02,00,07,01,00,0,01,7,0); 92 _OPN("valsound.bass12", "Mohaaa", 0,5, 07,00,00,15,00,21,0,01,0,0, 06,00,00,15,00,18,0,02,0,0, 08,00,00,15,00,23,0,01,0,0, 18,00,00,15,00,00,0,02,0,0); 93 _OPN("valsound.bass13", "Effect FB Bass #5", 0,7, 31,06,02,15,03,20,0,01,3,0, 31,06,02,15,06,14,2,02,0,0, 06,06,02,15,01,08,0,01,7,0, 31,05,01,15,02,00,0,02,0,0); 94 _OPN("valsound.bass14", "Magical bass", 0,7, 31,08,00,06,10,38,1,01,3,0, 28,18,05,06,13,47,1,10,7,0, 31,07,07,06,08,23,2,00,2,0, 28,09,06,08,01,00,2,00,0,0); 95 _OPN("valsound.bass15", "E.Bass #6", 0,7, 31,15,00,10,05,35,1,14,3,0, 31,14,07,07,04,41,1,04,7,0, 31,14,03,00,02,18,1,00,3,0, 31,12,08,08,01,00,0,00,7,0); 96 _OPN("valsound.bass16", "E.Bass #7", 3,7, 31,15,00,10,05,29,1,10,7,0, 31,13,07,07,04,46,1,04,7,0, 31,14,05,00,02,19,1,00,3,0, 31,12,04,08,01,00,0,00,0,0); 97 _OPN("valsound.bass17", "E.Bass 70", 2,5, 31,08,00,00,03,34,0,00,3,0, 31,14,06,09,02,42,0,08,0,0, 31,16,03,00,02,20,0,00,7,0, 31,12,05,08,02,00,0,01,0,0); 98 _OPN("valsound.bass18", "VAL006 Bass like Euro", 0,4, 31,07,07,11,02,25,3,06,0,0, 31,06,06,11,01,55,3,04,7,0, 31,09,06,11,01,18,2,00,3,0, 31,06,08,11,15,00,2,01,0,0); 99 _OPN("valsound.bass19", "E.Bass x2", 2,7, 31,14,08,03,01,33,0,00,1,0, 31,17,08,09,05,30,0,14,2,0, 31,15,08,05,05,35,0,04,3,0, 31,15,08,06,01,00,0,01,7,0); 100 _OPN("valsound.bass20", "E.Bass x4", 2,7, 31,14,03,00,02,33,1,03,3,0, 23,16,04,12,03,30,2,10,0,0, 31,13,03,11,03,27,1,00,7,0, 31,07,05,09,01,00,3,01,0,0); 101 _OPN("valsound.bass21", "Metal pick bass X5", 3,7, 31,14,00,06,13,51,2,13,0,0, 31,13,00,06,13,21,0,01,0,0, 31,09,00,06,13,23,0,00,0,0, 31,09,00,07,13,00,0,00,0,0); 102 _OPN("valsound.bass22", "Groove Bass 1", 5,3, 31,00,00,00,00,38,0,00,0,0, 21,00,00,13,00,05,0,00,0,0, 21,00,00,13,00,03,0,01,0,0, 21,00,00,13,00,03,0,01,0,0); 103 _OPN("valsound.bass23", "Analog Bass Groove #2", 6,5, 31,00,00,00,00,41,0,02,0,0, 31,00,00,10,00,02,0,01,0,0, 31,00,00,10,00,01,0,01,7,0, 31,00,00,10,00,01,0,01,3,0); 104 _OPN("valsound.bass24", "Harmonics #1", 6,6, 31,12,09,00,02,45,1,02,3,0, 31,10,08,06,01,00,1,01,7,0, 31,13,08,05,02,00,1,02,7,0, 31,16,12,05,10,00,1,00,3,0); 105 _OPN("valsound.bass25", "Low Bass x1", 5,3, 31,00,09,15,00,25,2,00,0,0, 31,15,06,08,01,00,1,00,1,0, 31,15,06,08,01,00,1,01,2,0, 31,15,00,07,02,00,1,01,3,0); 106 _OPN("valsound.bass26", "Low_bass x2 Little FB", 5,6, 21,00,09,00,00,24,2,00,0,0, 21,15,06,08,01,00,1,00,1,0, 21,15,06,08,01,00,1,01,2,0, 27,15,00,07,02,00,1,01,3,0); 107 _OPN("valsound.bass27", "Low Bass x1 Rezzo.", 5,3, 31,00,09,15,00,30,2,00,0,0, 31,15,06,12,01,02,1,00,1,0, 31,15,06,12,01,02,1,01,2,0, 31,15,10,12,02,02,1,04,3,0); 108 _OPN("valsound.bass28", "Low Bass Picked", 5,7, 31,05,00,00,11,33,1,00,0,0, 30,12,04,09,01,00,1,00,0,0, 27,14,08,09,03,00,1,01,0,0, 27,14,07,12,15,06,1,05,0,0); 109 _OPN("valsound.bass29", "metal bass", 0,5, 20,10,09,15,01,22,0,00,7,0, 17,09,00,00,02,22,0,01,7,0, 21,09,00,00,01,18,0,00,3,0, 18,08,00,08,01,00,0,01,3,0); 110 _OPN("valsound.bass30", "e.n.bass 1", 3,7, 27,14,00,04,04,25,0,07,0,0, 31,12,00,04,03,45,0,02,0,0, 31,19,00,04,05,15,0,00,0,0, 31,12,06,07,01,00,0,00,0,0); 111 _OPN("valsound.bass31", "psg bass 1", 5,7, 31,14,00,00,00,22,0,00,0,0, 31,14,03,08,05,00,0,01,3,0, 31,14,03,08,03,00,0,00,0,0, 31,16,03,08,03,00,0,01,7,0); 112 _OPN("valsound.bass32", "psg bass 2", 5,7, 31,14,00,00,00,22,0,01,0,0, 31,14,03,08,05,00,0,02,3,0, 31,14,03,08,03,00,0,00,0,0, 31,16,03,08,03,00,0,01,7,0); 113 _OPN("valsound.bass33", "rezonance type bass #1", 2,0, 24,19,02,13,10,33,1,03,3,0, 26,16,05,14,06,28,1,00,0,0, 15,14,06,08,05,14,1,00,0,0, 31,07,05,09,02,00,0,02,7,0); 114 _OPN("valsound.bass34", "slap bass", 2,2, 31,10,07,08,02,33,0,00,7,0, 21,08,08,07,05,23,3,07,7,0, 31,05,06,07,01,37,0,00,3,0, 31,08,06,07,05,00,0,01,7,0); 115 _OPN("valsound.bass35", "slap bass 1", 2,7, 31,14,07,08,02,33,0,00,7,0, 21,15,06,07,04,18,2,06,7,0, 31,05,06,07,01,40,0,00,3,0, 31,12,07,07,05,00,0,01,3,0); 116 _OPN("valsound.bass36", "slap bass 2 (1+)", 2,7, 31,14,07,08,02,33,0,00,7,0, 21,15,06,07,04,28,2,07,7,0, 31,05,06,07,01,40,0,00,3,0, 31,12,07,07,05,00,0,01,3,0); 117 _OPN("valsound.bass37", "slap bass #3", 2,7, 31,14,07,00,05,32,0,03,7,0, 31,16,01,12,04,35,0,10,0,0, 31,11,02,00,03,23,1,00,3,0, 31,12,05,07,01,00,0,00,0,0); 118 _OPN("valsound.bass38", "slap bass pull", 2,2, 31,10,07,08,02,33,0,00,7,0, 21,08,08,09,05,23,3,10,7,0, 31,05,06,10,01,37,0,00,3,0, 31,16,06,11,01,00,0,01,7,0); 119 _OPN("valsound.bass39", "slap bass mute", 2,2, 31,18,07,11,12,33,0,00,7,0, 21,11,08,11,15,23,3,07,7,0, 31,15,06,11,11,37,0,00,3,0, 31,15,06,13,11,00,0,01,7,0); 120 _OPN("valsound.bass40", "slap bass pick", 2,2, 31,10,07,08,02,33,0,00,7,0, 21,09,08,07,05,23,3,07,7,0, 31,05,06,08,01,37,0,00,3,0, 31,11,06,10,05,00,0,01,7,0); 121 _OPN("valsound.bass41", "super bass #2", 2,2, 24,18,02,13,09,12,2,03,3,0, 26,16,05,14,09,24,1,01,0,0, 31,12,02,08,03,22,1,00,7,0, 31,07,05,09,02,00,0,01,0,0); 122 _OPN("valsound.bass42", "sp_bass#3 soft", 2,3, 24,18,02,13,09,25,2,03,3,0, 26,16,05,14,09,24,1,01,0,0, 31,12,02,08,03,32,1,00,7,0, 31,07,05,09,02,00,0,01,0,0); 123 _OPN("valsound.bass43", "sp_bass#4 soft*2", 2,1, 24,18,02,13,10,28,2,03,3,0, 26,16,05,14,06,24,1,00,0,0, 31,12,02,08,03,30,1,00,7,0, 31,07,05,09,02,00,0,01,0,0); 124 _OPN("valsound.bass44", "sp_bass#5 attack", 0,5, 19,18,02,15,10,30,2,00,3,0, 31,16,05,14,05,24,1,00,0,0, 31,12,02,08,03,30,1,00,7,0, 31,10,07,09,02,00,0,01,0,0); 125 _OPN("valsound.bass45", "sp.bass#6 rezz+pipebass",2,3, 24,18,02,13,09,35,2,12,3,0, 26,16,05,14,09,25,1,02,0,0, 31,12,02,08,03,32,1,00,7,0, 31,07,05,09,02,00,0,01,0,0); 126 _OPN("valsound.bass46", "synth bass 1", 4,3, 30,00,00,00,00,23,0,01,3,0, 27,04,00,07,01,00,0,01,3,0, 30,00,00,00,00,18,0,01,7,0, 25,04,00,07,01,00,0,01,7,0); 127 _OPN("valsound.bass47", "synth bass 2 myon", 5,7, 14,00,09,12,00,26,2,00,0,0, 14,15,06,08,01,00,1,00,1,0, 20,15,06,08,01,00,1,01,2,0, 18,15,00,12,02,00,1,01,3,0); 128 _OPN("valsound.bass48", "synth bass #3 cho!", 3,7, 31,11,09,00,04,32,1,01,3,0, 31,15,07,08,05,41,1,08,7,0, 26,18,07,10,06,04,1,00,3,0, 31,09,06,07,01,00,0,00,7,0); 129 _OPN("valsound.bass49", "synth-wind-bass #4", 2,7, 31,13,09,00,04,32,1,00,3,0, 31,15,07,08,04,21,1,01,0,0, 26,18,07,08,03,21,1,01,7,0, 31,09,06,07,01,00,0,00,0,0); 130 _OPN("valsound.bass50", "synth bass #5 q2", 4,4, 20,00,00,08,07,17,0,00,3,0, 18,07,04,11,00,00,0,01,3,0, 18,00,00,09,00,22,0,01,7,0, 15,00,00,11,01,00,0,01,7,0); 131 _OPN("valsound.bass51", "old wood bass", 5,7, 31,15,00,13,02,28,1,00,0,0, 31,10,01,12,01,04,0,02,0,0, 25,10,01,12,01,04,0,01,0,0, 31,10,01,12,01,04,0,02,0,0); 132 _OPN("valsound.bass52", "w.bass bright", 2,7, 31,13,03,10,02,32,1,00,7,0, 31,12,04,10,03,20,1,00,0,0, 31,17,00,10,07,15,1,02,3,0, 31,06,01,10,05,00,1,01,0,0); 133 _OPN("valsound.bass53", "w.bass x2 bow", 4,5, 31,11,05,00,03,25,1,00,3,0, 31,10,09,08,04,00,1,01,3,0, 23,12,05,00,04,14,1,00,7,0, 31,12,09,07,05,00,1,02,7,0); 134 _OPN("valsound.bass54", "wood bass 3 (muted1)", 5,5, 31,15,00,15,02,38,1,00,0,0, 31,10,01,12,01,04,0,02,0,0, 25,10,01,12,01,02,0,01,0,0, 31,10,01,12,01,04,0,01,0,0); 135 135 136 136 as3/SiOPM/trunk/src/org/si/sound/Arpeggiator.as
r2989 r3013 87 87 88 88 89 /** Arpeggio pattern*/89 /** Note index array of the arpeggio pattern. If the index is out of range, insert rest instead.*/ 90 90 public function set pattern(pat:Array) : void 91 91 { 92 _dataNormal.clear(); 93 _dataPort.clear(); 94 if (pat) { 95 _arpeggio = Vector.<int>(pat); 96 var i:int, imax:int = pat.length, 97 seqNormal:MMLSequence = _dataNormal.appendNewSequence(), 98 seqPort:MMLSequence = _dataPort.appendNewSequence(); 99 _noteEventsNormal.length = imax; 100 _noteEventsPort.length = imax; 101 seqNormal.alloc().appendNewEvent(MMLEvent.REPEAT_ALL, 0); 102 seqPort.alloc().appendNewEvent(MMLEvent.REPEAT_ALL, 0); 103 for (i=0; i<imax; i++) { 104 _noteEventsNormal[i] = seqNormal.appendNewEvent(MMLEvent.NOTE, scale.getNote(pat[i]), _step); 105 _noteEventsPort[i] = seqPort.appendNewEvent(MMLEvent.NOTE, scale.getNote(pat[i]), 0); 106 seqPort.appendNewEvent(MMLEvent.SLUR, 0, _step); 92 if (track) { 93 _dataNormal.clear(); 94 _dataPort.clear(); 95 if (pat) { 96 _arpeggio = Vector.<int>(pat); 97 var i:int, imax:int = pat.length, note:int, 98 seqNormal:MMLSequence = _dataNormal.appendNewSequence(), 99 seqPort:MMLSequence = _dataPort.appendNewSequence(); 100 _noteEventsNormal.length = imax; 101 _noteEventsPort.length = imax; 102 seqNormal.alloc().appendNewEvent(MMLEvent.REPEAT_ALL, 0); 103 seqPort.alloc().appendNewEvent(MMLEvent.REPEAT_ALL, 0); 104 for (i=0; i<imax; i++) { 105 note = scale.getNote(pat[i]); 106 if (note>=0 && note<128) { 107 _noteEventsNormal[i] = seqNormal.appendNewEvent(MMLEvent.NOTE, note, _step); 108 _noteEventsPort[i] = seqPort.appendNewEvent(MMLEvent.NOTE, note, 0); 109 seqPort.appendNewEvent(MMLEvent.SLUR, 0, _step); 110 } else { 111 _noteEventsNormal[i] = seqNormal.appendNewEvent(MMLEvent.REST, 0, _step); 112 _noteEventsPort[i] = seqPort.appendNewEvent(MMLEvent.REST, 0, _step); 113 } 114 } 115 _data = (_portament == 0) ? _dataNormal : _dataPort; 107 116 } 108 _data = (_portament == 0) ? _dataNormal : _dataPort;109 117 } 110 118 } … … 140 148 override public function play() : void { 141 149 _data = (_portament == 0) ? _dataNormal : _dataPort; 142 sequenceOn(); 150 sequenceOn(); 143 151 var t:SiMMLTrack = track; 144 152 if (t) t.setPortament(_portament); as3/SiOPM/trunk/src/org/si/sound/base/SingleTrackObject.as
r2989 r3013 9 9 import org.si.sion.*; 10 10 import org.si.sion.sequencer.SiMMLTrack; 11 import org.si.sound.base.SoundObject;12 11 13 12 … … 55 54 } 56 55 57 /** track. Available only after play(). */56 /** track. Available only after play(). Returns null when the track is not playing. */ 58 57 public function get track() : SiMMLTrack { 59 58 if (_track && !_track.isActive) _track = null;

