
    3j-                       d Z ddlmZ ddlZddlmZ ddddd	d
dZi dddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*i d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdFdHdIdJdKi dLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmi dndodpdqdrdqdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddddddddZ G d dej                        Z	d Z
d Z G d dej                        Zedk(  rddlZ ej                  e       yy)z
Instrument translations from
https://web.archive.org/web/20100115001258/http://www.music-cog.ohio-state.edu/Humdrum/guide.append2.html
    )annotationsN)exceptions21VocalistStringInstrumentWoodwindInstrumentBrassInstrumentKeyboardInstrument
Percussion)voxstrwwbrasklavpercsoprnSopranocantmezzoMezzoSopranocaltoAltotenorTenorbaritBaritonebassBassr   altoarpaHarpbanjoBanjobguitElectricBasscbass
ContrabasscelloVioloncellocembaHarpsichordclavi
ClavichorddulcDulcimereguitElectricGuitarguitrGuitarliutoLutekotoKotomandoMandolinpianoPianoshamiShamisensitarSitarukuleUkuleleviolaViolaviolnViolinaccor	Accordionarmon	HarmonicabagpSBagpipesbagpIcanglEnglishHornclarbBassClarinetcorHornfagotBassoonfltFluteoboeOboeorgan	PipeOrganpanpiPanFlutepiccoPiccoloreedo	ReedOrgansaxSSopranoSaxophonesaxAAltoSaxophonesaxTTenorSaxophonesaxRBaritoneSaxophoneshaku
ShakuhachitromtTrombonetrombBassTrombonetrompTrumpettubaTubabdrumBassDrumcampnChurchBellscarilcasts	CastanetschimeTubularBellscrshcCrashCymbalsglockGlockenspielgongGongmaracMaracasmarimMarimbapiattCymbalsridecRideCymbalssdrum	SnareDrumspshcSplashCymbalssteel	SteelDrumtambn
TambourinetimpaTimpaniTomTomTriangle
Vibraphone	XylophoneCelestaElectricOrgan)tomtrnglvibraxyloclesthammdc                      e Zd Zy)HumdrumInstrumentExceptionN)__name__
__module____qualname__     H/DATA/.local/lib/python3.12/site-packages/music21/humdrum/instruments.pyr   r      s    r   r   c                    ddl m} 	 t        |    } t        ||             }|S # t        t
        t        f$ r}t        d|        |d}~ww xY w)z
    Get a music21 instrument object from a humdrum instrument class abbreviation

    >>> humdrum.instruments.fromHumdrumClass('vox')
    <music21.instrument.Vocalist 'Voice'>
    r   
instrumentz4Cannot get an instrument from this humdrum class *ICN)music21r   "humdrumInstrumentClassToInstrumentgetattr
IndexErrorKeyErrorAttributeErrorr   )hdClassr   iiObjexcs        r   fromHumdrumClassr      s]     #.w7%wz1%'.1 (B7)L
	   $ AAAc                    ddl m} 	 t        |    } t        ||             }|S # t        t
        t        f$ r}t        d|        |d}~ww xY w)z
    Get a music21 instrument object from a humdrum instrument abbreviation

    >>> humdrum.instruments.fromHumdrumInstrument('calto')
    <music21.instrument.Alto 'Alto'>
    r   r   z4Cannot get an instrument from this humdrum class: *IN)r   r   humdrumInstrumentsr   r   r   r   r   )hdInstr   r   r   r   s        r   fromHumdrumInstrumentr      s]     #v&%wz1%'.1 (B6(K
	r   c                      e Zd Zd Zd Zd Zy)Testc                    ddl m} t        D ]6  }t        |   }| j                   t	        ||             j
                  d        8 y Nr   r   )r   r   r   assertNotEqualr   instrumentNameselfr   xr   s       r   testClasseszTest.testClasses  s<    &3A215A 6
A 6 8 G GN 4r   c                    ddl m} t        D ]6  }t        |   }| j                   t	        ||             j
                  d        8 y r   )r   r   r   r   r   r   r   s       r   testIndividualszTest.testIndividuals  s<    &#A"1%A 6
A 6 8 G GN $r   c                h   ddl m} |j                  d      }g }|j                         D ]+  }d|j                  v s|j                  t        |             - | j                  |g d       |j                  d   j                         j                         }| j                  d|j                         y )Nr   )corpuszPalestrina/Kyrie_40
Instrument)r   r   r   r   r      r   )r   r   parserecurseclassesappendr   assertEqualpartsflattengetInstrumentassertIn)r   r   cfoundInstrumentsr   r   s         r   testHumdrumParsezTest.testHumdrumParse  s    "LL./Aqyy( ''A/  	)F	Hwwqz!!#113fdll+r   N)r   r   r   r   r   r   r   r   r   r   r     s    OO
,r   r   __main__)__doc__
__future__r   unittestr   r   r   r   Music21Exceptionr   r   r   TestCaser   r   mainTestr   r   r   <module>r      s   #    
 & "$zYz
Iz ^z V	z
 Wz Zz Fz 
:z  F!z6 F7z8 W9z< ^=z> \?z@ ]AzB ]CzF \GzH JIzJ KzN XOzR VSzZ F[z\ Z]z^ W_zn Zozp Wqzz Y{z~ WzD XEzR [SzT [UzV ZWzX ZYz` ]azn ^ozp 
6qzz Y{z@ 
7Az` Fazf [gzh Zizj Ykzr [szx yzz O{z| }z~ zD \EzV ZWzX ^YzZ Y[z\ F]zd Zezf ]gzh ]izj [kzl ^mzp ^qzt ^uzv Fwzx Yyzz Y{z| Y}z~ ]z@ [AzB _CzD [EzH \IzJ YKzL  ez z	!>!> 	$&,8 ,: zGT r   