チェンジセット 3013

差分発生行の前後
無視リスト:
コミット日時:
2009/08/12 16:31:06 (3 年前)
コミッタ:
keim
ログメッセージ:

サウンドライブラリ SiON ver0.5.6 更新 スペルミス修正,サンプル追加

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/SiOPM/trunk/doc/mml_reference/siopm_mml_ref_05.html

    r2989 r3013  
    14731473          </div> 
    14741474        </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> 
    14751492      </div> 
    14761493       
  • as3/SiOPM/trunk/doc/mml_reference/siopm_mml_ref_05_e.html

    r2989 r3013  
    14741474          </div> 
    14751475        </div> 
     1476        <div class='appendex'> 
     1477          <div class='title'>%11; Control the voice of PMS guitar</div> 
     1478          <div> 
     1479The 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> 
     1482When the 1st argument is 0, voice is defined by following 5 arguments.<br/> 
     1483The 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/> 
     1484The 5th argument is for the pitch of plunking noise and specifyed by note number (defalut=60=o5c).<br/> 
     1485The 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> 
     1488When 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> 
    14761493      </div> 
    14771494       
  • as3/SiOPM/trunk/samples/SiONKaosillator/Kaosillator.as

    r2989 r3013  
    4747            rythmLoop.setVoice(2, percusVoices[16]); // close hihat 
    4848            rythmLoop.setVoice(3, percusVoices[21]); // open hihat 
    49             rythmLoop.setVoice(4, presetVoice["valsound.base3"]); // base 
     49            rythmLoop.setVoice(4, presetVoice["valsound.bass3"]); // bass 
    5050             
    5151            // listen click 
  • as3/SiOPM/trunk/src/org/si/sion/sequencer/SiMMLTrack.as

    r2989 r3013  
    99    import org.si.sion.module.SiOPMChannelBase; 
    1010    import org.si.sion.module.SiOPMTable; 
     11    import org.si.sion.sequencer.base.MMLData; 
    1112    import org.si.sion.sequencer.base.MMLEvent; 
    1213    import org.si.sion.sequencer.base.MMLSequence; 
     
    8990 
    9091        // internal use 
     92        private var _mmlData:MMLData;       // mml data 
    9193        private var _table:SiMMLTable;      // table 
    9294        private var _keyOnCounter:int;      // key on counter 
     
    227229            executor = new MMLExecutor(); 
    228230             
     231            _mmlData = null; 
    229232            _set_processMode = new Vector.<int>(2, true); 
    230233             
     
    262265            _eventTriggerTypeOn = 0; 
    263266            _eventTriggerTypeOff = 0; 
     267            _mmlData = (seq) ? seq._owner : null; 
    264268            executor.initialize(seq); 
    265269             
     
    469473        /** Channel module type (%) and select tone (1st argument of '@'). 
    470474         *  @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
    473477         */ 
    474478        public function setChannelModuleType(type:int, channelNum:int, toneNum:int=-1) : void 
     
    693697        internal function prepareBuffer(bufferingTick:int) : int 
    694698        { 
     699            // register tables 
     700            if (_mmlData) _mmlData._regiterTables(); 
     701             
    695702            // almost executing this 
    696703            if (_trackStartDelay == 0) return bufferingTick; 
  • as3/SiOPM/trunk/src/org/si/sion/sequencer/base/MMLData.as

    r2989 r3013  
    6060        function MMLData() 
    6161        { 
    62             sequenceGroup = new MMLSequenceGroup(); 
     62            sequenceGroup = new MMLSequenceGroup(this); 
    6363            globalSequence = new MMLSequence(); 
    6464             
  • as3/SiOPM/trunk/src/org/si/sion/sequencer/base/MMLSequence.as

    r2989 r3013  
    2828        private var _isTerminal:Boolean; 
    2929         
     30        /** @private [internal use] owner data */ 
     31        public var _owner:MMLData; 
    3032         
    3133         
     
    4749        function MMLSequence(term:Boolean = false) 
    4850        { 
     51            _owner = null; 
    4952            headEvent = null; 
    5053            tailEvent = null; 
  • as3/SiOPM/trunk/src/org/si/sion/sequencer/base/MMLSequenceGroup.as

    r2989 r3013  
    1414    // valiables 
    1515    //-------------------------------------------------- 
    16        // terminator 
     16        // terminator 
    1717        private var _term:MMLSequence; 
     18         
     19        // owner data 
     20        private var _owner:MMLData 
    1821         
    1922         
     
    3841    // constructor 
    3942    //-------------------------------------------------- 
    40         function MMLSequenceGroup(
     43        function MMLSequenceGroup(owner:MMLData
    4144        { 
     45            _owner = owner; 
    4246            _sequences = new Vector.<MMLSequence>(); 
    4347            _term = new MMLSequence(true); 
     
    111115        { 
    112116            var seq:MMLSequence = _freeList.pop() || new MMLSequence(); 
     117            seq._owner = _owner; 
    113118            _sequences.push(seq); 
    114119            return seq; 
  • as3/SiOPM/trunk/src/org/si/sion/utils/Chord.as

    r2989 r3013  
    11//---------------------------------------------------------------------------------------------------- 
    22// Chord class 
    3 //  Copyright (c) 2009 keim All rights reserved. 
     3//  Copyright (c) 2008 keim All rights reserved. 
    44//  Distributed under BSD-style license (see org.si.license.txt). 
    55//---------------------------------------------------------------------------------------------------- 
     
    77 
    88package org.si.sion.utils { 
    9     /** This represents chord */ 
     9    /** Chord class. */ 
    1010    public class Chord 
    1111    { 
    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 */ 
    1361        protected var _chordName:String; 
    1462         
    1563         
     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         */ 
    1698        public function get chordName() : String { return _chordName; } 
    1799        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        { 
    18180            _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]; 
    24231        } 
    25232    } 
    26233} 
    27234 
     235 
  • as3/SiOPM/trunk/src/org/si/sion/utils/Scale.as

    r2989 r3013  
    174174         
    175175         
    176         /** base note (0-11) */ 
     176        /** base note number */ 
    177177        public function get baseNote() : int { return _scaleNotes[0]; } 
    178178         
     
    200200<listing version="3.0"> 
    201201    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 
    203203</listing> 
    204204         */ 
     
    222222        /** check note availability on this scale.  
    223223         *  @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. 
    225225         */ 
    226226        public function check(note:int) : Boolean { 
     
    232232        /** shift note to the nearest note on this scale.  
    233233         *  @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. 
    235235         */ 
    236236        public function shift(note:int) : int { 
  • as3/SiOPM/trunk/src/org/si/sion/utils/SiONPresetVoice.as

    r2989 r3013  
    1818<listing version="3.0"> 
    1919var voices:SiONPresetVoice = new SiONPresetVoice(); // create new instance. 
    20 var baseVoiceList:Array = voices["valsound.base"];  // access voice list by categoly key 
    21 var base10:SiONVoice = baseVoiceList[10];           // access voice by index 
     20var bassVoiceList:Array = voices["valsound.bass"];  // access voice list by categoly key 
     21var bass10:SiONVoice = bassVoiceList[10];           // access voice by index 
    2222</listing> 
    2323@example Or you can access Array list by categolies property. 
     
    7878 
    7979            if (includeFlag & INCLUDE_VALSOUND) { 
    80                 _categoly("valsound.base"); 
    81                 _OPN("valsound.base1",  "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.base2",  "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.base3",  "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.base4",  "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.base5",  "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.base6",  "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.base7",  "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.base8",  "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.base9",  "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.base10", "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.base11", "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.base12", "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.base13", "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.base14", "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.base15", "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.base16", "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.base17", "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.base18", "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.base19", "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.base20", "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.base21", "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.base22", "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.base23", "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.base24", "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.base25", "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.base26", "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.base27", "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.base28", "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.base29", "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.base30", "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.base31", "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.base32", "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.base33", "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.base34", "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.base35", "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.base36", "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.base37", "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.base38", "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.base39", "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.base40", "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.base41", "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.base42", "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.base43", "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.base44", "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.base45", "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.base46", "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.base47", "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.base48", "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.base49", "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.base50", "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.base51", "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.base52", "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.base53", "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.base54", "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); 
    135135 
    136136 
  • as3/SiOPM/trunk/src/org/si/sound/Arpeggiator.as

    r2989 r3013  
    8787         
    8888         
    89         /** Arpeggio pattern */ 
     89        /** Note index array of the arpeggio pattern. If the index is out of range, insert rest instead.*/ 
    9090        public function set pattern(pat:Array) : void 
    9191        { 
    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; 
    107116                } 
    108                 _data = (_portament == 0) ? _dataNormal : _dataPort; 
    109117            } 
    110118        } 
     
    140148        override public function play() : void {  
    141149            _data = (_portament == 0) ? _dataNormal : _dataPort; 
    142             sequenceOn();  
     150            sequenceOn(); 
    143151            var t:SiMMLTrack = track; 
    144152            if (t) t.setPortament(_portament); 
  • as3/SiOPM/trunk/src/org/si/sound/base/SingleTrackObject.as

    r2989 r3013  
    99    import org.si.sion.*; 
    1010    import org.si.sion.sequencer.SiMMLTrack; 
    11     import org.si.sound.base.SoundObject; 
    1211     
    1312     
     
    5554        } 
    5655         
    57         /** track. Available only after play(). */ 
     56        /** track. Available only after play(). Returns null when the track is not playing. */ 
    5857        public function get track() : SiMMLTrack {  
    5958            if (_track && !_track.isActive) _track = null;