int ***array
- указатель на указатель на указатель на int.
(*array)
- указатель на указатель на int.
(*array)[sourceTermIndex]
- указатель на int.
(*array)[sourceTermIndex][driveCurrentIndex]
является целым.
(*array)[sourceTermIndex][driveCurrentIndex][preEmphasisIndex]
разыменовывает int, что невозможно, поэтому появляется сообщение об ошибке.
Либо массив является входным параметром, который не должен назначаться, либо вы хотите, чтобы он был выходным параметром, который является указателем на указатель на указатель на int, поэтому сделайте его четырехзвездочным указателем.
У вас также есть приведение malloc к int:
(int)malloc(2*sizeof(int)); // pre-emphasis
Не делайте этого, он просто скрывает ошибку, что левая рука должна была быть указателем. Чем раньше ошибки, тем лучше; это очень редко для того, чтобы результат malloc нужно было приводить.