a
    $ñ»jøF  ã                   @  sž  d dl mZ d dlZd dlZd dlmZ ddlmZmZ G dd„ de	ƒZ
G dd	„ d	ejƒZG d
d„ dejƒZG dd„ de	ƒZG dd„ dejƒZG dd„ dejƒZG dd„ de	ƒZG dd„ dejƒZeG dd„ dƒƒZeG dd„ dƒƒZeG dd„ dƒƒZeG dd„ dƒƒZeG dd„ dƒƒZd d!œd"d#„Zd d!œd$d%„Zdd&d'œd(d)„Zed*ƒeG d+d,„ d,ƒƒƒZed-ƒeG d.d/„ d/ƒƒƒZed0ƒeG d1d2„ d2ƒƒƒZed3ƒeG d4d5„ d5ƒƒƒZed6ƒeG d7d8„ d8ƒƒƒZed9ƒeG d:d;„ d;ƒƒƒZ ed<ƒeG d=d>„ d>ƒƒƒZ!ed?ƒeG d@dA„ dAƒƒƒZ"edBƒeG dCdD„ dDƒƒƒZ#edEƒeG dFdG„ dGƒƒƒZ$edHƒeG dIdJ„ dJƒƒƒZ%edKƒeG dLdM„ dMƒƒƒZ&edNƒeG dOdP„ dPƒƒƒZ'dS )Qé    )ÚannotationsN)Ú	dataclassé   )Úevent_classÚT_JSON_DICTc                      sB   e Zd ZdZddœdd„Zedd dœdd„ƒZ‡ fd	d
„Z‡  ZS )ÚGraphObjectIdze
    An unique ID for a graph object (AudioContext, AudioNode, AudioParam)
    in Web Audio API.
    Ústr©Úreturnc                 C  s   | S ©N© ©Úselfr   r   ú5E:\soccer\ml_env\Lib\site-packages\mycdp/web_audio.pyÚto_json   s    zGraphObjectId.to_json©Újsonr
   c                 C  s   | |ƒS r   r   ©Úclsr   r   r   r   Ú	from_json   s    zGraphObjectId.from_jsonc                   s   d  tƒ  ¡ ¡S )NzGraphObjectId({})©ÚformatÚsuperÚ__repr__r   ©Ú	__class__r   r   r      s    zGraphObjectId.__repr__©	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úclassmethodr   r   Ú__classcell__r   r   r   r   r      s
   r   c                   @  s:   e Zd ZdZdZdZddœdd„Zedd dœd	d
„ƒZdS )ÚContextTypezEnum of BaseAudioContext types.ZrealtimeZoffliner   r	   c                 C  s   | j S r   ©Úvaluer   r   r   r   r   %   s    zContextType.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   (   s    zContextType.from_jsonN)	r   r   r   r    ZREALTIMEZOFFLINEr   r!   r   r   r   r   r   r#       s   r#   c                   @  s>   e Zd ZdZdZdZdZddœdd„Zedd d	œd
d„ƒZ	dS )ÚContextStatez(Enum of AudioContextState from the spec.Z	suspendedÚrunningÚclosedr   r	   c                 C  s   | j S r   r$   r   r   r   r   r   3   s    zContextState.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   6   s    zContextState.from_jsonN)
r   r   r   r    Z	SUSPENDEDZRUNNINGZCLOSEDr   r!   r   r   r   r   r   r&   -   s   r&   c                      sB   e Zd ZdZddœdd„Zedd dœdd„ƒZ‡ fd	d
„Z‡  ZS )ÚNodeTypezEnum of AudioNode types.r   r	   c                 C  s   | S r   r   r   r   r   r   r   >   s    zNodeType.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   A   s    zNodeType.from_jsonc                   s   d  tƒ  ¡ ¡S )NzNodeType({})r   r   r   r   r   r   E   s    zNodeType.__repr__r   r   r   r   r   r)   ;   s
   r)   c                   @  s>   e Zd ZdZdZdZdZddœdd„Zedd d	œd
d„ƒZ	dS )ÚChannelCountModez2Enum of AudioNode::ChannelCountMode from the spec.zclamped-maxÚexplicitÚmaxr   r	   c                 C  s   | j S r   r$   r   r   r   r   r   O   s    zChannelCountMode.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   R   s    zChannelCountMode.from_jsonN)
r   r   r   r    ZCLAMPED_MAXZEXPLICITZMAX_r   r!   r   r   r   r   r   r*   I   s   r*   c                   @  s:   e Zd ZdZdZdZddœdd„Zedd dœd	d
„ƒZdS )ÚChannelInterpretationz7Enum of AudioNode::ChannelInterpretation from the spec.ZdiscreteZspeakersr   r	   c                 C  s   | j S r   r$   r   r   r   r   r   \   s    zChannelInterpretation.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   _   s    zChannelInterpretation.from_jsonN)	r   r   r   r    ZDISCRETEZSPEAKERSr   r!   r   r   r   r   r   r-   W   s   r-   c                      sB   e Zd ZdZddœdd„Zedd dœdd„ƒZ‡ fd	d
„Z‡  ZS )Ú	ParamTypezEnum of AudioParam types.r   r	   c                 C  s   | S r   r   r   r   r   r   r   g   s    zParamType.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   j   s    zParamType.from_jsonc                   s   d  tƒ  ¡ ¡S )NzParamType({})r   r   r   r   r   r   n   s    zParamType.__repr__r   r   r   r   r   r.   d   s
   r.   c                   @  s:   e Zd ZdZdZdZddœdd„Zedd dœd	d
„ƒZdS )ÚAutomationRatez1Enum of AudioParam::AutomationRate from the spec.za-ratezk-rater   r	   c                 C  s   | j S r   r$   r   r   r   r   r   w   s    zAutomationRate.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   z   s    zAutomationRate.from_jsonN)	r   r   r   r    ZA_RATEZK_RATEr   r!   r   r   r   r   r   r/   r   s   r/   c                   @  sT   e Zd ZU dZded< ded< ded< ded< ddœd	d
„Zedd dœdd„ƒZdS )ÚContextRealtimeDataz0Fields in AudioContext that change in real-time.ÚfloatÚcurrent_timeÚrender_capacityÚcallback_interval_meanÚcallback_interval_variancer   r	   c                 C  s2   t ƒ }| j|d< | j|d< | j|d< | j|d< |S )NÚcurrentTimeÚrenderCapacityÚcallbackIntervalMeanÚcallbackIntervalVariance)Údictr2   r3   r4   r5   ©r   r   r   r   r   r   �   s    



zContextRealtimeData.to_jsonr   c                 C  s0   | t |d ƒt |d ƒt |d ƒt |d ƒd�S )Nr6   r7   r8   r9   )r2   r3   r4   r5   )r1   r   r   r   r   r   •   s    



üzContextRealtimeData.from_jsonN©r   r   r   r    Ú__annotations__r   r!   r   r   r   r   r   r0      s   
r0   c                   @  sp   e Zd ZU dZded< ded< ded< ded	< ded
< ded< dZded< ddœdd„Zedd dœdd„ƒZdS )ÚBaseAudioContextz%Protocol object for BaseAudioContext.r   Ú
context_idr#   Úcontext_typer&   Úcontext_stater1   Úcallback_buffer_sizeÚmax_output_channel_countÚsample_rateNz$typing.Optional[ContextRealtimeData]Úrealtime_datar   r	   c                 C  sj   t ƒ }| j ¡ |d< | j ¡ |d< | j ¡ |d< | j|d< | j|d< | j|d< | jd urf| j ¡ |d< |S )NÚ	contextIdÚcontextTypeÚcontextStateÚcallbackBufferSizeÚmaxOutputChannelCountÚ
sampleRateÚrealtimeData)	r:   r?   r   r@   rA   rB   rC   rD   rE   r;   r   r   r   r   ­   s    



zBaseAudioContext.to_jsonr   c                 C  sj   | t  |d ¡t |d ¡t |d ¡t|d ƒt|d ƒt|d ƒ| dd ¡d urbt |d ¡nd d�S )	NrF   rG   rH   rI   rJ   rK   rL   )r?   r@   rA   rB   rC   rD   rE   )r   r   r#   r&   r1   Úgetr0   r   r   r   r   r   ¹   s    


ÿözBaseAudioContext.from_json)	r   r   r   r    r=   rE   r   r!   r   r   r   r   r   r>   Ÿ   s   
r>   c                   @  sD   e Zd ZU dZded< ded< ddœdd„Zedd d	œd
d„ƒZdS )ÚAudioListenerz"Protocol object for AudioListener.r   Úlistener_idr?   r   r	   c                 C  s&   t ƒ }| j ¡ |d< | j ¡ |d< |S )NÚ
listenerIdrF   )r:   rO   r   r?   r;   r   r   r   r   Ð   s    zAudioListener.to_jsonr   c                 C  s    | t  |d ¡t  |d ¡d�S )NrP   rF   )rO   r?   ©r   r   r   r   r   r   r   Ö   s    þzAudioListener.from_jsonNr<   r   r   r   r   rN   Ê   s   
rN   c                   @  st   e Zd ZU dZded< ded< ded< ded< ded	< ded
< ded< ded< ddœdd„Zedd dœdd„ƒZdS )Ú	AudioNodezProtocol object for AudioNode.r   Únode_idr?   r)   Ú	node_typer1   Únumber_of_inputsÚnumber_of_outputsÚchannel_countr*   Úchannel_count_moder-   Úchannel_interpretationr   r	   c                 C  sn   t ƒ }| j ¡ |d< | j ¡ |d< | j ¡ |d< | j|d< | j|d< | j|d< | j ¡ |d< | j	 ¡ |d< |S )	NÚnodeIdrF   ÚnodeTypeÚnumberOfInputsÚnumberOfOutputsÚchannelCountÚchannelCountModeÚchannelInterpretation)
r:   rS   r   r?   rT   rU   rV   rW   rX   rY   r;   r   r   r   r   ê   s    


zAudioNode.to_jsonr   c                 C  sb   | t  |d ¡t  |d ¡t |d ¡t|d ƒt|d ƒt|d ƒt |d ¡t |d ¡d	�S )
NrZ   rF   r[   r\   r]   r^   r_   r`   )rS   r?   rT   rU   rV   rW   rX   rY   )r   r   r)   r1   r*   r-   r   r   r   r   r   ö   s    


ÿÿözAudioNode.from_jsonNr<   r   r   r   r   rR   Þ   s   
rR   c                   @  st   e Zd ZU dZded< ded< ded< ded< ded	< d
ed< d
ed< d
ed< ddœdd„Zedd dœdd„ƒZdS )Ú
AudioParamzProtocol object for AudioParam.r   Úparam_idrS   r?   r.   Ú
param_typer/   Úrater1   Údefault_valueÚ	min_valueÚ	max_valuer   r	   c                 C  sn   t ƒ }| j ¡ |d< | j ¡ |d< | j ¡ |d< | j ¡ |d< | j ¡ |d< | j|d< | j|d< | j	|d< |S )	NÚparamIdrZ   rF   Ú	paramTyperd   ÚdefaultValueÚminValueÚmaxValue)
r:   rb   r   rS   r?   rc   rd   re   rf   rg   r;   r   r   r   r     s    


zAudioParam.to_jsonr   c                 C  sb   | t  |d ¡t  |d ¡t  |d ¡t |d ¡t |d ¡t|d ƒt|d ƒt|d ƒd	�S )
Nrh   rZ   rF   ri   rd   rj   rk   rl   )rb   rS   r?   rc   rd   re   rf   rg   )r   r   r.   r/   r1   r   r   r   r   r      s    


øzAudioParam.from_jsonNr<   r   r   r   r   ra     s   
ra   z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]r	   c                  c  s   ddi} | V }dS )zCEnables WebAudio domain and starts sending context lifetime events.ÚmethodzWebAudio.enableNr   ©Úcmd_dictr   r   r   r   Úenable.  s    ÿrp   c                  c  s   ddi} | V }dS )zDisables the WebAudio domain.rm   zWebAudio.disableNr   rn   r   r   r   Údisable6  s    ÿrq   z?typing.Generator[T_JSON_DICT, T_JSON_DICT, ContextRealtimeData])r?   r
   c                 c  s0   t ƒ }|  ¡ |d< d|dœ}|V }t |d ¡S )zV
    Fetch the realtime data from the registered contexts.
    :param context_id:
    rF   zWebAudio.getRealtimeData)rm   ÚparamsrL   )r:   r   r0   r   )r?   rr   ro   r   r   r   r   Úget_realtime_data>  s    þrs   zWebAudio.contextCreatedc                   @  s.   e Zd ZU dZded< edd dœdd„ƒZdS )	ÚContextCreatedz6Notifies that a new BaseAudioContext has been created.r>   Úcontextr   r   c                 C  s   | t  |d ¡d�S ©Nru   )ru   ©r>   r   r   r   r   r   r   U  s    zContextCreated.from_jsonN©r   r   r   r    r=   r!   r   r   r   r   r   rt   O  s   
rt   zWebAudio.contextWillBeDestroyedc                   @  s.   e Zd ZU dZded< edd dœdd„ƒZdS )	ÚContextWillBeDestroyedz=Notifies that an existing BaseAudioContext will be destroyed.r   r?   r   r   c                 C  s   | t  |d ¡d�S )NrF   )r?   rQ   r   r   r   r   r   `  s    z ContextWillBeDestroyed.from_jsonNrx   r   r   r   r   ry   Z  s   
ry   zWebAudio.contextChangedc                   @  s.   e Zd ZU dZded< edd dœdd„ƒZdS )	ÚContextChangedzf
    Notifies that existing BaseAudioContext has changed some properties
    (id stays the same).
    r>   ru   r   r   c                 C  s   | t  |d ¡d�S rv   rw   r   r   r   r   r   n  s    zContextChanged.from_jsonNrx   r   r   r   r   rz   e  s   
rz   zWebAudio.audioListenerCreatedc                   @  s.   e Zd ZU dZded< edd dœdd„ƒZdS )	ÚAudioListenerCreatedz@Notifies that the construction of an AudioListener has finished.rN   Úlistenerr   r   c                 C  s   | t  |d ¡d�S )Nr|   )r|   )rN   r   r   r   r   r   r   y  s    zAudioListenerCreated.from_jsonNrx   r   r   r   r   r{   s  s   
r{   z%WebAudio.audioListenerWillBeDestroyedc                   @  s6   e Zd ZU dZded< ded< edd dœdd„ƒZd	S )
ÚAudioListenerWillBeDestroyedz3Notifies that a new AudioListener has been created.r   r?   rO   r   r   c                 C  s    | t  |d ¡t  |d ¡d�S )NrF   rP   )r?   rO   rQ   r   r   r   r   r   …  s    þz&AudioListenerWillBeDestroyed.from_jsonNrx   r   r   r   r   r}   ~  s
   
r}   zWebAudio.audioNodeCreatedc                   @  s.   e Zd ZU dZded< edd dœdd„ƒZdS )	ÚAudioNodeCreatedz/Notifies that a new AudioNode has been created.rR   Únoder   r   c                 C  s   | t  |d ¡d�S )Nr   )r   )rR   r   r   r   r   r   r   “  s    zAudioNodeCreated.from_jsonNrx   r   r   r   r   r~   �  s   
r~   z!WebAudio.audioNodeWillBeDestroyedc                   @  s6   e Zd ZU dZded< ded< edd dœdd„ƒZd	S )
ÚAudioNodeWillBeDestroyedz7Notifies that an existing AudioNode has been destroyed.r   r?   rS   r   r   c                 C  s    | t  |d ¡t  |d ¡d�S )NrF   rZ   )r?   rS   rQ   r   r   r   r   r   Ÿ  s    þz"AudioNodeWillBeDestroyed.from_jsonNrx   r   r   r   r   r€   ˜  s
   
r€   zWebAudio.audioParamCreatedc                   @  s.   e Zd ZU dZded< edd dœdd„ƒZdS )	ÚAudioParamCreatedz0Notifies that a new AudioParam has been created.ra   Úparamr   r   c                 C  s   | t  |d ¡d�S )Nr‚   )r‚   )ra   r   r   r   r   r   r   ­  s    zAudioParamCreated.from_jsonNrx   r   r   r   r   r�   §  s   
r�   z"WebAudio.audioParamWillBeDestroyedc                   @  s>   e Zd ZU dZded< ded< ded< edd dœdd	„ƒZd
S )ÚAudioParamWillBeDestroyedz8Notifies that an existing AudioParam has been destroyed.r   r?   rS   rb   r   r   c                 C  s,   | t  |d ¡t  |d ¡t  |d ¡d�S )NrF   rZ   rh   )r?   rS   rb   rQ   r   r   r   r   r   º  s
    ýz#AudioParamWillBeDestroyed.from_jsonNrx   r   r   r   r   rƒ   ²  s   
rƒ   zWebAudio.nodesConnectedc                   @  sN   e Zd ZU dZded< ded< ded< ded< ded< ed	d d
œdd„ƒZdS )ÚNodesConnectedz+Notifies that two AudioNodes are connected.r   r?   Ú	source_idÚdestination_idútyping.Optional[float]Úsource_output_indexÚdestination_input_indexr   r   c              	   C  sh   | t  |d ¡t  |d ¡t  |d ¡| dd ¡d urBt|d ƒnd | dd ¡d ur`t|d ƒnd d�S ©NrF   ÚsourceIdÚdestinationIdÚsourceOutputIndexZdestinationInputIndex)r?   r…   r†   rˆ   r‰   ©r   r   rM   r1   r   r   r   r   r   Í  s    ÿÿôzNodesConnected.from_jsonNrx   r   r   r   r   r„   Ã  s   
r„   zWebAudio.nodesDisconnectedc                   @  sN   e Zd ZU dZded< ded< ded< ded< ded< ed	d d
œdd„ƒZdS )ÚNodesDisconnectedz¡
    Notifies that AudioNodes are disconnected. The destination can be null,
    and it means all the outgoing connections from the source are disconnected.
    r   r?   r…   r†   r‡   rˆ   r‰   r   r   c              	   C  sh   | t  |d ¡t  |d ¡t  |d ¡| dd ¡d urBt|d ƒnd | dd ¡d ur`t|d ƒnd d�S rŠ   rŽ   r   r   r   r   r   í  s    ÿÿôzNodesDisconnected.from_jsonNrx   r   r   r   r   r�   à  s   
r�   zWebAudio.nodeParamConnectedc                   @  sF   e Zd ZU dZded< ded< ded< ded< edd d	œd
d„ƒZdS )ÚNodeParamConnectedz9Notifies that an AudioNode is connected to an AudioParam.r   r?   r…   r†   r‡   rˆ   r   r   c                 C  sJ   | t  |d ¡t  |d ¡t  |d ¡| dd ¡d urBt|d ƒnd d�S ©NrF   r‹   rŒ   r�   )r?   r…   r†   rˆ   rŽ   r   r   r   r   r   	  s    ÿùzNodeParamConnected.from_jsonNrx   r   r   r   r   r�      s   
r�   zWebAudio.nodeParamDisconnectedc                   @  sF   e Zd ZU dZded< ded< ded< ded< edd d	œd
d„ƒZdS )ÚNodeParamDisconnectedz<Notifies that an AudioNode is disconnected to an AudioParam.r   r?   r…   r†   r‡   rˆ   r   r   c                 C  sJ   | t  |d ¡t  |d ¡t  |d ¡| dd ¡d urBt|d ƒnd d�S r‘   rŽ   r   r   r   r   r      s    ÿùzNodeParamDisconnected.from_jsonNrx   r   r   r   r   r’     s   
r’   )(Ú
__future__r   ÚenumÚtypingÚdataclassesr   Úutilr   r   r   r   ÚEnumr#   r&   r)   r*   r-   r.   r/   r0   r>   rN   rR   ra   rp   rq   rs   rt   ry   rz   r{   r}   r~   r€   r�   rƒ   r„   r�   r�   r’   r   r   r   r   Ú<module>   s€   *)%					