Возможно, можно преобразовать код C/C++ здесь в C#:
http://www.firstpr.com.au/dsp/pink-noise/
самый легкий способ стать звуковым на звуковую карту состоит в том, чтобы генерировать wav (выложите некоторые hardcoded заголовки и затем демонстрационные данные). Тогда можно играть .wav файл.
Я думаю, вы просто нашли причину, по которой встроенная сборка - заноза в заднице - это совершенно непереносимо (и не только между архитектурами; компиляторы часто имеют разный и несовместимый синтаксис). Напишите внешний файл сборки и сделайте то, что вам нужно. Передача параметров в ассемблерные подпрограммы точно такая же, как и в C-функциях; просто вперед объявите свою подпись функции где-нибудь, и вызывающий код (в C) будет делать правильные вещи. Затем реализуйте подпрограмму во внешнем файле сборки (обязательно соблюдайте соглашение о вызовах) и экспортируйте соответствующий символ, чтобы компоновщик все правильно связал. Presto - рабочая сборка!
Пример по запросу. Я не пытался скомпилировать или протестировать это каким-либо образом, так что это может быть не на 100%. Удачи.
myHeader.h:
void *someOperation(void *parameter1, int parameter2);
myAssemblyFile.s:
.text
.globl someOperation
someOperation:
add %rdx, %rcx
mov %rcx, %rax
ret
.end
mySourceCode.c:
#include "myHeader.h"
void someFunction(void)
{
void *arg1 = (void *)0x80001000;
int arg2 = 12;
void *returnValue;
printf("Calling with %x %x\n", arg1, arg2);
// call assembly function
returnValue = someOperation(arg1, arg2);
printf("Returned: %x\n", returnValue);
}