
    rh-                       S r SSKJr  SSKrSSKJr  SSSSS	S
S.r0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_S#S$_S%S&_S'S(_S)S*_0 S+S,_S-S._S/S0_S1S2_S3S4_S5S6_S7S8_S9S:_S;S<_S=S>_S?S@_SASB_SCSD_SESF_SGSF_SHSI_SJSK_E0 SLSM_SNSO_SPSQ_SRSS_STSU_SVSW_SXSY_SZS[_S\S]_S^S__S`Sa_SbSc_SdSe_SfSg_ShSi_SjSk_SlSm_E0 SnSo_SpSq_SrSq_SsSt_SuSv_SwSx_SySz_S{S|_S}S~_SS_SS_SS_SS_SS_SS_SS_SS_ESSSSSSS.Er " S S\R                  5      r	S r
S r " S S\R                  5      r\S:X  a  SSKr\R                  " \5        gg)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                      \ rS rSrSrg)HumdrumInstrumentException    N)__name__
__module____qualname____firstlineno____static_attributes__r       U/home/james-whalen/.local/lib/python3.13/site-packages/music21/humdrum/instruments.pyr   r      s    r   r   c                l    SSK Jn   [        U    n[        X5      " 5       nU$ !   [	        SU  35      e= f)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 *IC)music21r   "humdrumInstrumentClassToInstrumentgetattrr   )hdClassr   iiObjs       r   fromHumdrumClassr      sJ     #N.w7z%'N(B7)LN 	N   # 3c                l    SSK Jn   [        U    n[        X5      " 5       nU$ !   [	        SU  35      e= f)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: *I)r   r   humdrumInstrumentsr   r   )hdInstr   r   r   s       r   fromHumdrumInstrumentr      sJ     #Mv&z%'M(B6(KM 	Mr   c                  &    \ rS rSrS rS rS rSrg)Testi  c                    SSK Jn  [         H6  n[        U   nU R                  [	        X5      " 5       R
                  S 5        M8     g Nr   r   )r   r   r   assertNotEqualr   instrumentNameselfr   xr   s       r   testClassesTest.testClasses  s7    &3A215A
 6 8 G GN 4r   c                    SSK Jn  [         H6  n[        U   nU R                  [	        X5      " 5       R
                  S 5        M8     g r   )r   r   r   r   r   r   r   s       r   testIndividualsTest.testIndividuals  s7    &#A"1%A
 6 8 G GN $r   c                r   SSK Jn  UR                  S5      n/ nUR                  5        H/  nSUR                  ;   d  M  UR                  [        U5      5        M1     U R                  U/ SQ5        UR                  S   R                  5       R                  5       nU R                  SUR                  5        g )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   testHumdrumParseTest.testHumdrumParse  s    "LL./Aqyy( ''A/  	)F	Hwwqz!!#113fdll+r   r   N)r   r   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	!>!> 	N"M$,8 ,: zT r   