¿Como pasar un archivo de la carpeta Resources a un File?

Tengo un aechivo .mp3 en la carpeta "app\src\main\res\raw\archivo.mp3" en mi proyecto de Android Studio, y quiero pasarlo a un File(), y luego a un InputStream.
He probado lo siguiente pero me da error:
val fileUri = Uri.parse("android.resource://"+packageName+"/" +R.raw.do_nota)
var file :File = File(fileUri.toString())
val input :InputStream = InputStream(file)

Necesitas primeramente definir el permiso :
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

y requerirlo manualmente:
https://stackoverflow.com/questions/55413660/set-permision-in-kotlin
lo más sencillo para leer un archivo desde /raw es usar el método openRawResource()
 //Obtiene archivo de directorio /raw
 val inputStream:InputStream = resources.openRawResource(R.raw.archivo)

Este sería un ejemplo el cual obtiene el contenido de un archivo almacenado en el directorio /raw (R.raw.archivo) y almacena su contenido en otro archivo en el directorio de almacenamiento externo:
   private fun saveFile() {

try {

//Define nombre de archivo destino.
val newFileName = "nuevo_archivo.txt"
//Define directorio.
val newFileDir = "/Android/"
//Obtiene directorio de almacenamiento externo y directorio donde se copiara archivo.
val path_newFileName = Environment.getExternalStorageDirectory().toString() + newFileDir

//Obtiene archivo de directorio /raw
val inputStream:InputStream = resources.openRawResource(R.raw.archivo)
//Lee contenido de archivo
val inputString = inputStream.bufferedReader().use{it.readText()}

//Define y crea archivo
var myExternalFile:File = File(path_newFileName,newFileName)
myExternalFile.createNewFile();

try {
val fileOutPutStream = FileOutputStream(myExternalFile)
//Guarda contenido en archivo
fileOutPutStream.write(inputString.toByteArray())
fileOutPutStream.close()
} catch (e: IOException) {
Log.d(TAG, "IOException " + e.message)
}

} catch (e:Exception){
Log.d(TAG, "Exception : " + e.toString())
}

    }