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); } } }
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()); } }
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()); } }