public void AddInstrument(RiffChunkListIns_ ins_List, List <WaveformBase> aWaveformList)
        {
            int tuning = 0;

            for (int i = 0; i < ins_List.lartListList.Count; i++)
            {
                RiffChunkListLart lartList = ( RiffChunkListLart )ins_List.lartListList[i];

                RiffChunkArt1 art1Chunk = lartList.art1Body;

                tuning = art1Chunk.tuning;
            }

            int instrument = ( int )ins_List.inshChunk.midiLocal.instrument;

            for (int i = 0; i < ins_List.lrgnListList.Count; i++)
            {
                RiffChunkListLrgn lrgnList = ( RiffChunkListLrgn )ins_List.lrgnListList[i];

                if (instrumentArray[instrument] == null)
                {
                    instrumentArray[instrument] = new InstrumentDls(lrgnList, aWaveformList, tuning);
                }
                else
                {
                    InstrumentDls lInstrumentDls = ( InstrumentDls )instrumentArray[instrument];
                    lInstrumentDls.AddSoundfont(lrgnList, aWaveformList, tuning);
                }
            }
        }
Пример #2
0
        public SoundclusterDls(RiffDls_Riff aDls_Riff)
        {
            BankDictionary = new Dictionary <int, ABank>();

            RiffDls_Riff dls_Riff = aDls_Riff;

            List <WaveformReaderPcm> lWaveformList = new List <WaveformReaderPcm>();

            try
            {
                Logger.Error(dls_Riff.GetChunk("LIST").GetType().ToString());
                RiffChunkList        lRiffChunkList = ( RiffChunkList )dls_Riff.GetChunk("LIST");
                List <RiffChunkList> wvplListList   = lRiffChunkList.GetChunkListList("LIST", RiffChunkListWvpl.TYPE);
                //RiffChunkListWvpl wvplList = ( RiffChunkListWvpl )dls_Riff.wvplListList;

                List <RiffChunkList> waveListList = wvplListList[0].GetChunkListList("LIST", RiffChunkListWave.TYPE);

                for (int i = 0; i < waveListList.Count; i++)
                {
                    RiffChunkListWave lWaveList = ( RiffChunkListWave )waveListList[i];

                    lWaveformList.Add(new WaveformReaderPcm(lWaveList, dls_Riff.name));
                }

                RiffChunkListLins linsList = ( RiffChunkListLins )dls_Riff.linsListList;

                Logger.Warning("linsList.ins_ListList.Count:" + linsList.ins_ListList.Count);

                for (int i = 0; i < linsList.ins_ListList.Count; i++)
                {
                    RiffChunkListIns_ ins_List = ( RiffChunkListIns_ )linsList.ins_ListList[i];

                    RiffDls_Insh inshChunk = ( RiffDls_Insh )ins_List.inshChunk;

                    int bank = ( int )inshChunk.midiLocal.bank;

                    if (( uint )bank == 0x80000000)
                    {
                        Logger.Warning("Change Bank:" + bank.ToString("X8"));

                        bank = 0x7F00;
                    }

                    if (BankDictionary.ContainsKey(bank) == false)
                    {
                        Logger.Warning("Bank:" + bank.ToString("X8"));
                        BankDictionary.Add(bank, new BankDls());
                    }

                    BankDls lDlsBank = ( BankDls )BankDictionary[bank];
                    lDlsBank.AddInstrument(ins_List, lWaveformList);
                }
            }
            catch (Exception aExpection)
            {
                Logger.Error("Expection at RIFF Read:" + aExpection.ToString());
            }
        }
Пример #3
0
        public SoundclusterDls(RiffFile aRiffFile)
            : base()
        {
            RiffChunkListDls_ dls_Riff = ( RiffChunkListDls_ )aRiffFile.riffChunkList;

            List <WaveformBase> lWaveformList = new List <WaveformBase>();

            try
            {
                RiffChunkListWvpl wvplList = ( RiffChunkListWvpl )dls_Riff.wvplListList;

                for (int i = 0; i < wvplList.waveListList.Count; i++)
                {
                    RiffChunkListWave lWaveList = ( RiffChunkListWave )wvplList.waveListList[i];

                    lWaveformList.Add(new WaveformDls(lWaveList, aRiffFile.name));
                }

                RiffChunkListLins linsList = ( RiffChunkListLins )dls_Riff.linsListList;

                Logger.LogWarning("linsList.ins_ListList.Count:" + linsList.ins_ListList.Count);

                for (int i = 0; i < linsList.ins_ListList.Count; i++)
                {
                    RiffChunkListIns_ ins_List = ( RiffChunkListIns_ )linsList.ins_ListList[i];

                    RiffChunkInsh inshChunk = ( RiffChunkInsh )ins_List.inshChunk;

                    int bank = ( int )inshChunk.midiLocal.bank;

                    if (( uint )bank == 0x80000000)
                    {
                        Logger.LogWarning("Change Bank:" + bank.ToString("X8"));

                        bank = 0x7F00;
                    }

                    if (bankDictionary.ContainsKey(bank) == false)
                    {
                        Logger.LogWarning("Bank:" + bank.ToString("X8"));
                        bankDictionary.Add(bank, new BankDls());
                    }

                    BankDls lDlsBank = ( BankDls )bankDictionary[bank];
                    lDlsBank.AddInstrument(ins_List, lWaveformList);
                }
            }
            catch (Exception aExpection)
            {
                Logger.LogError("Expection at RIFF Read:" + aExpection.ToString());
            }
        }