@@ -92,7 +92,7 @@ def __init__(
9292 self .stateful = stateful
9393
9494 # Generate frequencies
95- self .freq , self .freq_d , self .freq_u = _genfreqs (limits , fraction , fs )
95+ self .freq , self .freq_d , self .freq_u , self . nominal_freq = _genfreqs (limits , fraction , fs )
9696 self .num_bands = len (self .freq )
9797
9898
@@ -137,6 +137,7 @@ def filter(
137137 mode : str = "rms" ,
138138 detrend : bool = True ,
139139 calculate_level : Literal [True ] = True ,
140+ nominal : Literal [False ] = False ,
140141 ) -> Tuple [np .ndarray , List [float ]]: ...
141142
142143 @overload
@@ -147,6 +148,7 @@ def filter(
147148 mode : str = "rms" ,
148149 detrend : bool = True ,
149150 calculate_level : Literal [True ] = True ,
151+ nominal : Literal [False ] = False ,
150152 ) -> Tuple [np .ndarray , List [float ], List [np .ndarray ]]: ...
151153
152154 @overload
@@ -157,6 +159,7 @@ def filter(
157159 mode : str = "rms" ,
158160 detrend : bool = True ,
159161 calculate_level : Literal [False ] = False ,
162+ nominal : Literal [False ] = False ,
160163 ) -> Tuple [None , List [float ]]: ...
161164
162165 @overload
@@ -167,24 +170,71 @@ def filter(
167170 mode : str = "rms" ,
168171 detrend : bool = True ,
169172 calculate_level : Literal [False ] = False ,
173+ nominal : Literal [False ] = False ,
170174 ) -> Tuple [None , List [float ], List [np .ndarray ]]: ...
171175
176+ @overload
177+ def filter (
178+ self ,
179+ x : List [float ] | np .ndarray ,
180+ sigbands : Literal [False ] = False ,
181+ mode : str = "rms" ,
182+ detrend : bool = True ,
183+ calculate_level : Literal [True ] = True ,
184+ nominal : Literal [True ] = ...,
185+ ) -> Tuple [np .ndarray , List [str ]]: ...
186+
187+ @overload
188+ def filter (
189+ self ,
190+ x : List [float ] | np .ndarray ,
191+ sigbands : Literal [True ],
192+ mode : str = "rms" ,
193+ detrend : bool = True ,
194+ calculate_level : Literal [True ] = True ,
195+ nominal : Literal [True ] = ...,
196+ ) -> Tuple [np .ndarray , List [str ], List [np .ndarray ]]: ...
197+
198+ @overload
199+ def filter (
200+ self ,
201+ x : List [float ] | np .ndarray ,
202+ sigbands : Literal [False ] = False ,
203+ mode : str = "rms" ,
204+ detrend : bool = True ,
205+ calculate_level : Literal [False ] = False ,
206+ nominal : Literal [True ] = ...,
207+ ) -> Tuple [None , List [str ]]: ...
208+
209+ @overload
210+ def filter (
211+ self ,
212+ x : List [float ] | np .ndarray ,
213+ sigbands : Literal [True ],
214+ mode : str = "rms" ,
215+ detrend : bool = True ,
216+ calculate_level : Literal [False ] = False ,
217+ nominal : Literal [True ] = ...,
218+ ) -> Tuple [None , List [str ], List [np .ndarray ]]: ...
219+
172220 def filter (
173221 self ,
174222 x : List [float ] | np .ndarray ,
175223 sigbands : bool = False ,
176224 mode : str = "rms" ,
177225 detrend : bool = True ,
178226 calculate_level : bool = True ,
179- ) -> Tuple [np .ndarray | None , List [float ]] | Tuple [np .ndarray | None , List [float ], List [np .ndarray ]]:
227+ nominal : bool = False ,
228+ ) -> Tuple [np .ndarray | None , List [float ] | List [str ]] | Tuple [np .ndarray | None , List [float ] | List [str ], List [np .ndarray ]]:
180229 """
181230 Apply the pre-designed filter bank to a signal.
182231
183232 :param x: Input signal (1D array or 2D array [channels, samples]).
184233 :param sigbands: If True, also return the signal in the time domain divided into bands.
185234 :param mode: 'rms' for energy-based level, 'peak' for peak-holding level.
186235 :param detrend: If True, remove DC offset from signal before filtering (Default: True).
187- :param calculate_level: If True, calculate SPL
236+ :param calculate_level: If True, calculate SPL.
237+ :param nominal: If True, return IEC 61260-1 nominal frequency labels (List[str]) instead of exact floats.
188238 :return: A tuple containing (SPL_array, Frequencies_list) or (SPL_array, Frequencies_list, signals).
189239 """
190240
@@ -220,10 +270,12 @@ def filter(
220270 if sigbands and xb is not None :
221271 xb = [band [0 ] for band in xb ]
222272
273+ freq_out = self .nominal_freq if nominal else self .freq
274+
223275 if sigbands and xb is not None :
224- return spl , self . freq , xb
276+ return spl , freq_out , xb
225277 else :
226- return spl , self . freq
278+ return spl , freq_out
227279
228280 def _process_bands (
229281 self ,
0 commit comments