Bläddra i källkod

feat: 声轨编码通过接口获取

TIANYONG 4 veckor sedan
förälder
incheckning
5b65ee5166
5 ändrade filer med 519 tillägg och 436 borttagningar
  1. 474 209
      src/constant/instruments.ts
  2. 1 1
      src/page-instrument/evaluat-model/index.tsx
  3. 37 225
      src/state.ts
  4. 6 0
      src/utils/baseApi.ts
  5. 1 1
      vite.config.ts

+ 474 - 209
src/constant/instruments.ts

@@ -1,211 +1,439 @@
-const instruments: any = {
-	'Acoustic Grand Piano': '大钢琴',
-	'Bright Acoustic Piano': '明亮的钢琴',
-	'Electric Grand Piano': '电钢琴',
-	'Rhodes Piano': '柔和的电钢琴',
-	'Chorused Piano': '加合唱效果的电钢琴',
-	Harpsichord: '羽管键琴',
-	Clavichord: '科拉维科特琴',
-	Celesta: '钢片琴',
-	Glockenspiel: '钢片琴',
-	'Music box': '八音盒',
-	Vibraphone: '颤音琴',
-	Marimba: '马林巴',
-	Xylophone: '木琴',
-	'Tubular Bells': '管钟',
-	Dulcimer: '大扬琴',
-	'Hammond Organ': '击杆风琴',
-	'Percussive Organ': '打击式风琴',
-	'Rock Organ': '摇滚风琴',
-	'Church Organ': '教堂风琴',
-	'Reed Organ': '簧管风琴',
-	Accordian: '手风琴',
-	Harmonica: '口琴',
-	'Tango Accordian': '探戈手风琴',
-	'Acoustic Guitar': '钢弦吉他',
-	'Electric Guitar': '闷音电吉他',
-	'Overdriven Guitar': '加驱动效果的电吉他',
-	'Distortion Guitar': '加失真效果的电吉他',
-	'Guitar Harmonics': '吉他和音',
-	'Acoustic Bass': '大贝司',
-	'Electric Bass': '电贝司',
-	'Fretless Bass': '无品贝司',
-	'Slap Bass': '掌击',
-	'Synth Bass': '电子合成',
-	Violin: '小提琴',
-	Viola: '中提琴',
-	Cello: '大提琴',
-	Contrabass: '低音大提琴',
-	'Tremolo Strings': '弦乐群颤音音色',
-	'Pizzicato Strings': '弦乐群拨弦音色',
-	'Orchestral Harp': '竖琴',
-	Timpani: '定音鼓',
-	'String Ensemble': '弦乐合奏音色',
-	'Synth Strings': '合成弦乐合奏音色',
-	'Choir Aahs': '人声合唱',
-	'Voice Oohs': '人声',
-	'Synth Voice': '合成人声',
-	'Orchestra Hit': '管弦乐敲击齐奏',
-	Trumpet: '小号',
-	Trombone: '长号',
-	Tuba: '大号',
-	'Muted Trumpet': '加弱音器小号',
-	'French Horn': '法国号',
-	'Brass Section': '铜管组',
-	'Synth Brass': '合成铜管音色',
-	'Soprano Sax': '高音萨克斯管',
-	'Alto Sax': '中音萨克斯管',
-	'Tenor Sax': '次中音萨克斯管',
-	'Baritone Sax': '低音萨克斯管',
-	Oboe: '双簧管',
-	'English Horn': '英国管',
-	Bassoon: '巴松',
-	'Soprano Saxophone': '高音萨克斯管',
-	'Alto Saxophone': '中音萨克斯管',
-	'Tenor Saxophone': '次中音萨克斯管',
-	'Baritone Saxophone': '低音萨克斯管',
-	Piccolo: '短笛',
-	Flute: '长笛',
-	Recorder: '竖笛',
-	'Soprano Recorder': '高音竖笛',
-	'Pan Flute': '排箫',
-	'Bottle Blow': '瓶木管',
-	Whistle: '口哨声',
-	Ocarina: '陶笛',
-	Lead: '合成主音',
-	'Lead lead': '合成主音',
-	'Pad age': '合成音色',
-	Pad: '合成音色',
-	FX: '合成效果  科幻',
-	Sitar: '西塔尔',
-	Banjo: '班卓琴',
-	Shamisen: '三昧线',
-	Koto: '十三弦筝',
-	Kalimba: '卡林巴',
-	Bagpipe: '风笛',
-	Fiddle: '民族提琴',
-	Shanai: '山奈',
-	'Tinkle Bell': '叮当铃',
-	Agogos: '阿戈戈铃',
-	'Steel Drums': '钢鼓',
-	'Taiko Drum': '太鼓',
-	'Melodic Toms': '嗵嗵鼓',
-	'Synth Drums': '合成鼓',
-	'Reverse Cymbals': '反向镲',
-	'Agogo Bells': '阿戈戈铃',
-	'Taiko Drums': '太鼓',
-	Bongos: '邦戈鼓',
-	'Bongo Bell': '邦戈铃',
-	Congas: '康加鼓',
-	Guiro: '刮壶',
-	'Guitar Fret Noise': '吉他换把杂音',
-	'Breath Noise': '呼吸声',
-	Seashore: '海浪声',
-	'Bird Tweet': '鸟鸣',
-	'Telephone Ring': '电话铃',
-	Helicopter: '直升机',
-	Applause: '鼓掌声',
-	Gunshot: '枪声',
-	'Acoustic Bass Drum': '大鼓',
-	'Bass Drum': '大鼓',
-	'Side Drum': '小鼓鼓边',
-	'Acoustic Snare': '小鼓',
-	'Hand Claps': '拍手',
-	'Electric Snare': '小鼓',
-	'Low Floor Tom': '低音嗵鼓',
-	'Closed Hi-Hat': '闭合踩镲',
-	'High Floor Tom': '高音落地嗵鼓',
-	'Pedal Hi-Hat': '脚踏踩镲',
-	'Low Tom': '低音嗵鼓',
-	'Open Hi-Hat': '开音踩镲',
-	'Low-Mid Tom': '中低音嗵鼓',
-	'Hi Mid Tom': '高音鼓',
-	'Crash Cymbals': '对镲',
-	'High Tom': '高音嗵鼓',
-	'Ride Cymbals': '叮叮镲',
-	'Chinese Cymbals': '中国镲',
-	'Ride Bell': '圆铃',
-	Tambourine: '铃鼓',
-	'Splash Cymbal': '溅音镲',
-	Cowbell: '牛铃',
-	'Crash Cymbal': '强音钹',
-	'Vibra-Slap': '颤音器',
-	'Ride Cymbal': '打点钹',
-	'Hi Bongo': '高音邦戈鼓',
-	'Low Bongo': '低音邦戈鼓',
-	'Mute Hi Conga': '弱音高音康加鼓',
-	'Open Hi Conga': '强音高音康加鼓',
-	'Low Conga': '低音康加鼓',
-	'High Timbale': '高音天巴鼓',
-	'Low Timbale': '低音天巴鼓',
-	'High Agogo': '高音阿戈戈铃',
-	'Low Agogo': '低音阿戈戈铃',
-	Cabasa: '卡巴萨',
-	Maracas: '沙锤',
-	'Short Whistle': '短口哨',
-	'Long Whistle': '长口哨',
-	'Short Guiro': '短刮壶',
-	'Long Guiro': '长刮壶',
-	Claves: '响棒',
-	'Hi Wood Block': '高音木鱼',
-	'Low Wood Block': '低音木鱼',
-	'Mute Triangle': '弱音三角铁',
-	'Open Triangle': '强音三角铁',
-	'Drum Set': '架子鼓',
-	'Hulusi flute': '葫芦丝',
-	Melodica: '口风琴',
-	'Snare Drum': '小军鼓',
-	'Horn in F': '圆号',
-	'Horns in F': '圆号',
-	Triangle: '三角铁',
-	Vibrato: '颤音琴',
-	'Suspend Cymbals': '吊镲',
-	'Suspended Cymbals': '吊镲',
-	'Tom-Toms': '嗵嗵鼓',
-	Bell: '铃铛',
-	Bells: '铃铛',
-	'Alto Clarinet': '中音单簧管',
-	'Bass Clarinet': '低音单簧管',
-	Clarinet: '单簧管',
-	Cornet: '短号',
-	Euphonium: '上低音号',
-	'crash cymbals': '对镲',
-	Castanets: '响板',
-	Shaker: '沙锤',
-	'Mark tree': '音树',
-	Chimes: '管钟',
-	'Mark Tree': '音树',
-	'Tom-toms': '嗵嗵鼓',
-	'Hi-Hat': '踩镲',
-	'Sleigh Bells': '雪橇铃',
-	Flexatone: '弹音器',
-	'Brake drum': '闸鼓',
-	Gong: '锣',
-	'concert tom': '音乐会嗵嗵鼓',
-	'brake drum': '车轮鼓',
-	'finger cymbal': '指钹',
-	'ride cymbal': '叮叮镲',
-	'Concert Toms': '音乐会嗵嗵鼓',
-	Vibraslap: '弹音器',
-	'Wood Blocks': '木鱼',
-	'Temple Blocks': '木鱼',
-	'Wood Block': '木鱼',
-	'Field Drum': '军鼓',
-	'Quad-Toms': '筒鼓',
-	Quads: '筒鼓',
-	'Drums set': '架子鼓',
-	'High Bongo': '邦戈',
-	Timbales: '天巴鼓',
-	'rain stick': '雨棒',
-	'String Bass': '弦乐低音',
-	'Floor Tom': '侧嗵鼓',
-	'Brake Drum': '闸鼓',
-	'Tam-tam': '大锣',
-	Cymbal: '镲',
-	Cymbals: '镲',
-	Whip: '乐鞭',
-	whip: '乐鞭'
-};
+// const instruments: any = {
+// 	'Acoustic Grand Piano': '大钢琴',
+// 	'Bright Acoustic Piano': '明亮的钢琴',
+// 	'Electric Grand Piano': '电钢琴',
+// 	'Rhodes Piano': '柔和的电钢琴',
+// 	'Chorused Piano': '加合唱效果的电钢琴',
+// 	Harpsichord: '羽管键琴',
+// 	Clavichord: '科拉维科特琴',
+// 	Celesta: '钢片琴',
+// 	Glockenspiel: '钢片琴',
+// 	'Music box': '八音盒',
+// 	Vibraphone: '颤音琴',
+// 	Marimba: '马林巴',
+// 	Xylophone: '木琴',
+// 	'Tubular Bells': '管钟',
+// 	Dulcimer: '大扬琴',
+// 	'Hammond Organ': '击杆风琴',
+// 	'Percussive Organ': '打击式风琴',
+// 	'Rock Organ': '摇滚风琴',
+// 	'Church Organ': '教堂风琴',
+// 	'Reed Organ': '簧管风琴',
+// 	Accordian: '手风琴',
+// 	Harmonica: '口琴',
+// 	'Tango Accordian': '探戈手风琴',
+// 	'Acoustic Guitar': '钢弦吉他',
+// 	'Electric Guitar': '闷音电吉他',
+// 	'Overdriven Guitar': '加驱动效果的电吉他',
+// 	'Distortion Guitar': '加失真效果的电吉他',
+// 	'Guitar Harmonics': '吉他和音',
+// 	'Acoustic Bass': '大贝司',
+// 	'Electric Bass': '电贝司',
+// 	'Fretless Bass': '无品贝司',
+// 	'Slap Bass': '掌击',
+// 	'Synth Bass': '电子合成',
+// 	Violin: '小提琴',
+// 	Viola: '中提琴',
+// 	Cello: '大提琴',
+// 	Contrabass: '低音大提琴',
+// 	'Tremolo Strings': '弦乐群颤音音色',
+// 	'Pizzicato Strings': '弦乐群拨弦音色',
+// 	'Orchestral Harp': '竖琴',
+// 	Timpani: '定音鼓',
+// 	'String Ensemble': '弦乐合奏音色',
+// 	'Synth Strings': '合成弦乐合奏音色',
+// 	'Choir Aahs': '人声合唱',
+// 	'Voice Oohs': '人声',
+// 	'Synth Voice': '合成人声',
+// 	'Orchestra Hit': '管弦乐敲击齐奏',
+// 	Trumpet: '小号',
+// 	Trombone: '长号',
+// 	Tuba: '大号',
+// 	'Muted Trumpet': '加弱音器小号',
+// 	'French Horn': '法国号',
+// 	'Brass Section': '铜管组',
+// 	'Synth Brass': '合成铜管音色',
+// 	'Soprano Sax': '高音萨克斯管',
+// 	'Alto Sax': '中音萨克斯管',
+// 	'Tenor Sax': '次中音萨克斯管',
+// 	'Baritone Sax': '低音萨克斯管',
+// 	Oboe: '双簧管',
+// 	'English Horn': '英国管',
+// 	Bassoon: '巴松',
+// 	'Soprano Saxophone': '高音萨克斯管',
+// 	'Alto Saxophone': '中音萨克斯管',
+// 	'Tenor Saxophone': '次中音萨克斯管',
+// 	'Baritone Saxophone': '低音萨克斯管',
+// 	Piccolo: '短笛',
+// 	Flute: '长笛',
+// 	Recorder: '竖笛',
+// 	'Soprano Recorder': '高音竖笛',
+// 	'Pan Flute': '排箫',
+// 	'Bottle Blow': '瓶木管',
+// 	Whistle: '口哨声',
+// 	Ocarina: '陶笛',
+// 	Lead: '合成主音',
+// 	'Lead lead': '合成主音',
+// 	'Pad age': '合成音色',
+// 	Pad: '合成音色',
+// 	FX: '合成效果  科幻',
+// 	Sitar: '西塔尔',
+// 	Banjo: '班卓琴',
+// 	Shamisen: '三昧线',
+// 	Koto: '十三弦筝',
+// 	Kalimba: '卡林巴',
+// 	Bagpipe: '风笛',
+// 	Fiddle: '民族提琴',
+// 	Shanai: '山奈',
+// 	'Tinkle Bell': '叮当铃',
+// 	Agogos: '阿戈戈铃',
+// 	'Steel Drums': '钢鼓',
+// 	'Taiko Drum': '太鼓',
+// 	'Melodic Toms': '嗵嗵鼓',
+// 	'Synth Drums': '合成鼓',
+// 	'Reverse Cymbals': '反向镲',
+// 	'Agogo Bells': '阿戈戈铃',
+// 	'Taiko Drums': '太鼓',
+// 	Bongos: '邦戈鼓',
+// 	'Bongo Bell': '邦戈铃',
+// 	Congas: '康加鼓',
+// 	Guiro: '刮壶',
+// 	'Guitar Fret Noise': '吉他换把杂音',
+// 	'Breath Noise': '呼吸声',
+// 	Seashore: '海浪声',
+// 	'Bird Tweet': '鸟鸣',
+// 	'Telephone Ring': '电话铃',
+// 	Helicopter: '直升机',
+// 	Applause: '鼓掌声',
+// 	Gunshot: '枪声',
+// 	'Acoustic Bass Drum': '大鼓',
+// 	'Bass Drum': '大鼓',
+// 	'Side Drum': '小鼓鼓边',
+// 	'Acoustic Snare': '小鼓',
+// 	'Hand Claps': '拍手',
+// 	'Electric Snare': '小鼓',
+// 	'Low Floor Tom': '低音嗵鼓',
+// 	'Closed Hi-Hat': '闭合踩镲',
+// 	'High Floor Tom': '高音落地嗵鼓',
+// 	'Pedal Hi-Hat': '脚踏踩镲',
+// 	'Low Tom': '低音嗵鼓',
+// 	'Open Hi-Hat': '开音踩镲',
+// 	'Low-Mid Tom': '中低音嗵鼓',
+// 	'Hi Mid Tom': '高音鼓',
+// 	'Crash Cymbals': '对镲',
+// 	'High Tom': '高音嗵鼓',
+// 	'Ride Cymbals': '叮叮镲',
+// 	'Chinese Cymbals': '中国镲',
+// 	'Ride Bell': '圆铃',
+// 	Tambourine: '铃鼓',
+// 	'Splash Cymbal': '溅音镲',
+// 	Cowbell: '牛铃',
+// 	'Crash Cymbal': '强音钹',
+// 	'Vibra-Slap': '颤音器',
+// 	'Ride Cymbal': '打点钹',
+// 	'Hi Bongo': '高音邦戈鼓',
+// 	'Low Bongo': '低音邦戈鼓',
+// 	'Mute Hi Conga': '弱音高音康加鼓',
+// 	'Open Hi Conga': '强音高音康加鼓',
+// 	'Low Conga': '低音康加鼓',
+// 	'High Timbale': '高音天巴鼓',
+// 	'Low Timbale': '低音天巴鼓',
+// 	'High Agogo': '高音阿戈戈铃',
+// 	'Low Agogo': '低音阿戈戈铃',
+// 	Cabasa: '卡巴萨',
+// 	Maracas: '沙锤',
+// 	'Short Whistle': '短口哨',
+// 	'Long Whistle': '长口哨',
+// 	'Short Guiro': '短刮壶',
+// 	'Long Guiro': '长刮壶',
+// 	Claves: '响棒',
+// 	'Hi Wood Block': '高音木鱼',
+// 	'Low Wood Block': '低音木鱼',
+// 	'Mute Triangle': '弱音三角铁',
+// 	'Open Triangle': '强音三角铁',
+// 	'Drum Set': '架子鼓',
+// 	'Hulusi flute': '葫芦丝',
+// 	Melodica: '口风琴',
+// 	'Snare Drum': '小军鼓',
+// 	'Horn in F': '圆号',
+// 	'Horns in F': '圆号',
+// 	Triangle: '三角铁',
+// 	Vibrato: '颤音琴',
+// 	'Suspend Cymbals': '吊镲',
+// 	'Suspended Cymbals': '吊镲',
+// 	'Tom-Toms': '嗵嗵鼓',
+// 	Bell: '铃铛',
+// 	Bells: '铃铛',
+// 	'Alto Clarinet': '中音单簧管',
+// 	'Bass Clarinet': '低音单簧管',
+// 	Clarinet: '单簧管',
+// 	Cornet: '短号',
+// 	Euphonium: '上低音号',
+// 	'crash cymbals': '对镲',
+// 	Castanets: '响板',
+// 	Shaker: '沙锤',
+// 	'Mark tree': '音树',
+// 	Chimes: '管钟',
+// 	'Mark Tree': '音树',
+// 	'Tom-toms': '嗵嗵鼓',
+// 	'Hi-Hat': '踩镲',
+// 	'Sleigh Bells': '雪橇铃',
+// 	Flexatone: '弹音器',
+// 	'Brake drum': '闸鼓',
+// 	Gong: '锣',
+// 	'concert tom': '音乐会嗵嗵鼓',
+// 	'brake drum': '车轮鼓',
+// 	'finger cymbal': '指钹',
+// 	'ride cymbal': '叮叮镲',
+// 	'Concert Toms': '音乐会嗵嗵鼓',
+// 	Vibraslap: '弹音器',
+// 	'Wood Blocks': '木鱼',
+// 	'Temple Blocks': '木鱼',
+// 	'Wood Block': '木鱼',
+// 	'Field Drum': '军鼓',
+// 	'Quad-Toms': '筒鼓',
+// 	Quads: '筒鼓',
+// 	'Drums set': '架子鼓',
+// 	'High Bongo': '邦戈',
+// 	Timbales: '天巴鼓',
+// 	'rain stick': '雨棒',
+// 	'String Bass': '弦乐低音',
+// 	'Floor Tom': '侧嗵鼓',
+// 	'Brake Drum': '闸鼓',
+// 	'Tam-tam': '大锣',
+// 	Cymbal: '镲',
+// 	Cymbals: '镲',
+// 	Whip: '乐鞭',
+// 	whip: '乐鞭'
+// };
+/** 获取分轨名称 */
+
+// 乐器code码
+export const musicalInstrumentCodeInfo = [
+	{
+	  name: '长笛',
+	  code: 'Flute',
+	  id: 1
+	},
+	{
+	  name: '短笛',
+	  code: 'Piccolo',
+	  id: 2
+	},
+	{
+	  name: '单簧管',
+	  code: 'Clarinet',
+	  id: 3
+	},
+	{
+	  name: '低音单簧管',
+	  code: 'Bass Clarinet',
+	  id: 4
+	},
+	{
+	  name: '中音萨克斯',
+	  code: 'Alto Saxophone',
+	  id: 5
+	},
+	{
+	  name: '次中音萨克斯',
+	  code: 'Tenor Saxophone',
+	  id: 6
+	},
+	{
+	  name: '高音萨克斯',
+	  code: 'Soprano Saxophone',
+	  id: 7
+	},
+	{
+	  name: '上低音萨克斯',
+	  code: 'Baritone Saxophone',
+	  id: 8
+	},
+	{
+	  name: '双簧管',
+	  code: 'Oboe',
+	  id: 9
+	},
+	{
+	  name: '大管',
+	  code: 'Bassoon',
+	  id: 10
+	},
+	{
+	  name: '小号',
+	  code: 'Trumpet',
+	  id: 11
+	},
+	{
+	  name: '圆号',
+	  code: 'Horn',
+	  id: 12
+	},
+	{
+	  name: '长号',
+	  code: 'Trombone',
+	  id: 13
+	},
+	{
+	  name: '上低音号',
+	  code: 'Baritone',
+	  id: 14
+	},
+	{
+	  name: '次中音号',
+	  code: 'Euphonium',
+	  id: 15
+	},
+	{
+	  name: '大号',
+	  code: 'Tuba',
+	  id: 16
+	},
+	{
+	  name: '钢琴',
+	  code: 'Piano',
+	  id: 17
+	},
+	{
+	  name: '电钢琴',
+	  code: 'Electronical Piano',
+	  id: 18
+	},
+	{
+	  name: '钢片琴',
+	  code: 'Glockenspiel',
+	  id: 19
+	},
+	{
+	  name: '小提琴',
+	  code: 'Violin',
+	  id: 20
+	},
+	{
+	  name: '中提琴',
+	  code: 'Viola',
+	  id: 21
+	},
+	{
+	  name: '大提琴',
+	  code: 'Violoncello',
+	  id: 22
+	},
+	{
+	  name: '低音提琴',
+	  code: 'Contrabass',
+	  id: 23
+	},
+	{
+	  name: '架子鼓',
+	  code: 'Drum Set',
+	  id: 24
+	},
+	{
+	  name: '小鼓',
+	  code: 'Snare Drum',
+	  id: 25
+	},
+	{
+	  name: '马林巴',
+	  code: 'Marimba',
+	  id: 26
+	},
+	{
+	  name: '颤音琴',
+	  code: 'Vibraphone',
+	  id: 27
+	},
+	{
+	  name: '钟琴',
+	  code: 'Chimes',
+	  id: 28
+	},
+	{
+	  name: '木琴',
+	  code: 'Xylophone',
+	  id: 29
+	},
+	{
+	  name: '管钟',
+	  code: 'Tubular Bells',
+	  id: 30
+	},
+	{
+	  name: '定音鼓',
+	  code: 'Timpani',
+	  id: 31
+	},
+	{
+	  name: '键盘',
+	  code: 'Mallets',
+	  id: 32
+	},
+	{
+	  name: '排箫',
+	  code: 'Panpipes',
+	  id: 33
+	},
+	{
+	  name: '陶笛',
+	  code: 'Ocarina',
+	  id: 34
+	},
+	{
+	  name: '陶笛',
+	  code: 'Alto Ocarina',
+	  id: 34
+	},
+	{
+	  name: '葫芦丝',
+	  code: 'Woodwind',
+	  id: 35
+	},
+	{
+	  name: '葫芦丝',
+	  code: 'Hulusi',
+	  id: 35
+	},
+	{
+	  name: '口风琴',
+	  code: 'Nai',
+	  id: 36
+	},
+	{
+	  name: '口风琴',
+	  code: 'Melodica',
+	  id: 36
+	},
+	{
+	  name: '德式竖笛',
+	  code: 'Tenor Recorder',
+	  id: 37
+	},
+	{
+	  name: '德式竖笛',
+	  code: 'German Recorder',
+	  id: 37
+	},
+	{
+	  name: '英式竖笛',
+	  code: 'Baroque Recorder',
+	  id: 38
+	},
+	{
+	  name: '高音陶笛',
+	  code: 'Whistling',
+	  id: 39
+	},
+	{
+	  name: '高音陶笛',
+	  code: 'Soprano Ocarina',
+	  id: 39
+	},
+]
+
+export let instruments: any = {}
+
 /** 获取分轨名称 */
 export const getInstrumentName = (name = '') => {
   name = name.toLocaleLowerCase().replace(/ /g, '')
@@ -276,4 +504,41 @@ export const sortMusical = (name: string, index: number) => {
 		break;
 	}
 	return sortId
-  }
+  }
+
+  export const fixInstrumentNameCode = (trackId: string | number) => {
+	let code: any;
+	const trackName = instruments[trackId] || ''
+	if (trackName.includes('长笛')) {
+		code = 2
+	} else if (trackName.includes('单簧管')) {
+		code = 4
+	} else if (trackName.includes('萨克斯')) {
+		code = 5
+	} else if (trackName.includes('小号')) {
+		code = 12
+	} else if (trackName.includes('圆号')) {
+		code = 13
+	} else if (trackName.includes('长号')) {
+		code = 14
+	} else if (trackName.includes('上低音号')) {
+		code = 15
+	} else if (trackName.includes('大号')) {
+		code = 17
+	} else if (trackName.includes('德式竖笛')) {
+		code = 'piccolo'
+	} else if (trackName.includes('英式竖笛')) {
+		code = 'baroque-recorder'
+	} else if (trackName.includes('葫芦丝')) {
+		code = 'hulusi-flute'
+	} else if (trackName.includes('排箫')) {
+		code = 'pan-flute'
+	} else if (trackName.includes('高音陶笛')) {
+		code = 'whistling'
+	} else if (trackName.includes('陶笛')) {
+		code = 'ocarina'
+	} else if (trackName.includes('口风琴')) {
+		code = 'melodica'
+	}
+	return code;
+}

+ 1 - 1
src/page-instrument/evaluat-model/index.tsx

@@ -3,7 +3,7 @@ import { connectWebsocket, evaluatingData, handleEndBegin, handleStartBegin, han
 import Earphone from "./earphone";
 import styles from "./index.module.less";
 import SoundEffect from "./sound-effect";
-import state, { handleRessetState, resetPlaybackToStart, musicalInstrumentCodeInfo, clearSelection, initSetPlayRate, resetBaseRate } from "/src/state";
+import state, { handleRessetState, resetPlaybackToStart, clearSelection, initSetPlayRate, resetBaseRate } from "/src/state";
 import { storeData } from "/src/store";
 import { browser } from "/src/utils";
 import { getNoteByMeasuresSlursStart } from "/src/helpers/formateMusic";

+ 37 - 225
src/state.ts

@@ -11,7 +11,7 @@ import { toggleFollow } from "./view/follow-practice";
 import { browser, setStorageSpeed, setGlobalData } from "./utils";
 import { api_cloudGetMediaStatus, api_createMusicPlayer, api_cloudChangeSpeed, api_cloudSuspend, api_cloudSetCurrentTime, api_cloudDestroy } from "./helpers/communication";
 import { verifyCanRepeat, getDuration, xmlAddPartName } from "./helpers/formateMusic";
-import { getMusicSheetDetail } from "./utils/baseApi"
+import { getMusicSheetDetail, getInstrumentCode } from "./utils/baseApi"
 import { getQuery } from "/src/utils/queryString";
 import { followData, skipNotePractice } from "/src/view/follow-practice/index"
 import { changeSongSourceByBeat } from "/src/view/audio-list"
@@ -25,6 +25,7 @@ import { undoData, moveData } from "/src/view/plugins/move-music-score"
 import { HANDLE_WORK_ADD } from "/src/page-instrument/custom-plugins/work-index";
 import { speedBeatTo, unitImgs } from "/src/helpers/beatConfig"
 import IndexedDBService from "/src/utils/indexedDB";
+import { musicalInstrumentCodeInfo, instruments, fixInstrumentNameCode } from "/src/constant/instruments";
 
 const query: any = getQuery();
 
@@ -61,229 +62,6 @@ export type ISonges = {
  */
 const classids = [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 30, 31, 35, 36, 38, 108, 150, 151, 152, 153, 154, 155, 156, 157, 158, 178, 179, 180, 181, 182]; // 大雅金唐, 竖笛教程, 声部训练展开的分类ID
 
-// 乐器code码
-export const musicalInstrumentCodeInfo = [
-  {
-    name: '长笛',
-    code: 'Flute',
-    id: 1
-  },
-  {
-    name: '短笛',
-    code: 'Piccolo',
-    id: 2
-  },
-  {
-    name: '单簧管',
-    code: 'Clarinet',
-    id: 3
-  },
-  {
-    name: '低音单簧管',
-    code: 'Bass Clarinet',
-    id: 4
-  },
-  {
-    name: '中音萨克斯',
-    code: 'Alto Saxophone',
-    id: 5
-  },
-  {
-    name: '次中音萨克斯',
-    code: 'Tenor Saxophone',
-    id: 6
-  },
-  {
-    name: '高音萨克斯',
-    code: 'Soprano Saxophone',
-    id: 7
-  },
-  {
-    name: '上低音萨克斯',
-    code: 'Baritone Saxophone',
-    id: 8
-  },
-  {
-    name: '双簧管',
-    code: 'Oboe',
-    id: 9
-  },
-  {
-    name: '大管',
-    code: 'Bassoon',
-    id: 10
-  },
-  {
-    name: '小号',
-    code: 'Trumpet',
-    id: 11
-  },
-  {
-    name: '圆号',
-    code: 'Horn',
-    id: 12
-  },
-  {
-    name: '长号',
-    code: 'Trombone',
-    id: 13
-  },
-  {
-    name: '上低音号',
-    code: 'Baritone',
-    id: 14
-  },
-  {
-    name: '次中音号',
-    code: 'Euphonium',
-    id: 15
-  },
-  {
-    name: '大号',
-    code: 'Tuba',
-    id: 16
-  },
-  {
-    name: '钢琴',
-    code: 'Piano',
-    id: 17
-  },
-  {
-    name: '电钢琴',
-    code: 'Electronical Piano',
-    id: 18
-  },
-  {
-    name: '钢片琴',
-    code: 'Glockenspiel',
-    id: 19
-  },
-  {
-    name: '小提琴',
-    code: 'Violin',
-    id: 20
-  },
-  {
-    name: '中提琴',
-    code: 'Viola',
-    id: 21
-  },
-  {
-    name: '大提琴',
-    code: 'Violoncello',
-    id: 22
-  },
-  {
-    name: '低音提琴',
-    code: 'Contrabass',
-    id: 23
-  },
-  {
-    name: '架子鼓',
-    code: 'Drum Set',
-    id: 24
-  },
-  {
-    name: '小鼓',
-    code: 'Snare Drum',
-    id: 25
-  },
-  {
-    name: '马林巴',
-    code: 'Marimba',
-    id: 26
-  },
-  {
-    name: '颤音琴',
-    code: 'Vibraphone',
-    id: 27
-  },
-  {
-    name: '钟琴',
-    code: 'Chimes',
-    id: 28
-  },
-  {
-    name: '木琴',
-    code: 'Xylophone',
-    id: 29
-  },
-  {
-    name: '管钟',
-    code: 'Tubular Bells',
-    id: 30
-  },
-  {
-    name: '定音鼓',
-    code: 'Timpani',
-    id: 31
-  },
-  {
-    name: '键盘',
-    code: 'Mallets',
-    id: 32
-  },
-  {
-    name: '排箫',
-    code: 'Panpipes',
-    id: 33
-  },
-  {
-    name: '陶笛',
-    code: 'Ocarina',
-    id: 34
-  },
-  {
-    name: '陶笛',
-    code: 'Alto Ocarina',
-    id: 34
-  },
-  {
-    name: '葫芦丝',
-    code: 'Woodwind',
-    id: 35
-  },
-  {
-    name: '葫芦丝',
-    code: 'Hulusi',
-    id: 35
-  },
-  {
-    name: '口风琴',
-    code: 'Nai',
-    id: 36
-  },
-  {
-    name: '口风琴',
-    code: 'Melodica',
-    id: 36
-  },
-  {
-    name: '德式竖笛',
-    code: 'Tenor Recorder',
-    id: 37
-  },
-  {
-    name: '德式竖笛',
-    code: 'German Recorder',
-    id: 37
-  },
-  {
-    name: '英式竖笛',
-    code: 'Baroque Recorder',
-    id: 38
-  },
-  {
-    name: '高音陶笛',
-    code: 'Whistling',
-    id: 39
-  },
-  {
-    name: '高音陶笛',
-    code: 'Soprano Ocarina',
-    id: 39
-  },
-]
 
 const state = reactive({
   systemType: "" as "teacher" | "web" | "student",
@@ -1469,6 +1247,19 @@ export const getMusicDetail = async (id: string, type?: string) => {
   }
 };
 
+// 获取后台配置的声轨编码
+const initInstrumentCode = async () => {
+  const res = await getInstrumentCode();
+  if (res?.code === 200 && res.data?.length) {
+    for (let item of res.data) {
+      const codes = item.code.split(',') || [item.code]
+      codes.forEach((code: any) => {
+        instruments[code] = item.name
+      })
+    }
+  }
+  // console.log('声轨codes',instruments)
+}
 
 // 判断有没有xml缓存,有则直接使用
 const queryMusicXml = async (id: string, xmlUr: string) => {
@@ -1490,6 +1281,11 @@ const queryMusicXml = async (id: string, xmlUr: string) => {
 }
 
 const getMusicInfo = async (res: any) => {
+  try {
+    await initInstrumentCode()
+  } catch (error) {
+    // console.log(error)
+  }
   // 是否支持总谱
   state.isScoreRender = res.data?.isScoreRender
   // 是否默认显示总谱
@@ -1898,7 +1694,23 @@ const setState = (data: any, index: number) => {
    * 获取指法code
    */
   // const code = state.isConcert ? matchVoicePart(state.trackId, "CONCERT") : matchVoicePart(state.musicalCodeId, "SINGLE");
-  const code = matchVoicePart(state.trackId, "CONCERT")
+
+  // 如果是midi的曲子,midi的曲子没有musicSheetSoundList原音列表,指法需要通过musicalInstruments字段判断
+  if (data.musicSheetType === "SINGLE" && data.playMode === 'MIDI' && data.musicalInstruments?.length) {
+    const currentInstrumentId = query.instrumentId || storeData.user?.instrumentId;
+    let midiTrackId = null
+    if (currentInstrumentId) {
+      midiTrackId = data.musicalInstruments.find((item: any) => item.id == currentInstrumentId)?.code?.split(',')?.[0]
+    } else {
+      midiTrackId = data.musicalInstruments[0]?.code?.split(',')?.[0]
+    }
+    state.trackId = midiTrackId || state.trackId
+  }
+
+  let code = matchVoicePart(state.trackId, "CONCERT")
+  if (code == 1 || !code) {
+    code = fixInstrumentNameCode(state.trackId)
+  }
   state.fingeringInfo = subjectFingering(code);
   console.log("🚀 ~ state.fingeringInfo:", code, state.fingeringInfo, state.trackId, state.track);
   state.musicalCodeId = state.fingeringInfo?.id || 0

+ 6 - 0
src/utils/baseApi.ts

@@ -19,4 +19,10 @@ export const creatMusicSheetImg = (data: any) => {
     isContentCenter: true, // 内容平台
     data
   });
+};
+
+/** 获取总控平台乐器编码 */
+export const getInstrumentCode = () => {
+  const url = `/musicSheet/instrumentCode`;
+  return request.get(url);
 };

+ 1 - 1
vite.config.ts

@@ -81,7 +81,7 @@ export default defineConfig({
     // https: true,
     proxy: {
       "^/instrument/.*": {
-        target: "https://test.gym.lexiaoya.cn",
+        target: "https://dev.gym.lexiaoya.cn",
         changeOrigin: true,
         rewrite: (path) => path.replace(/^\/instrument/, ""),
       },