Более того. Было еще минимум две версии переписанного AY Emul на C, делалось для Chiptune musicdisk и еще чего то.
Вид для печати
согласен, для плеера, эмулятора и трекера нужны разные либы с разными АПИ. для трекера подойдёт что-то вроде BASS. то есть, манипуляция со звуком должна быть на уровне семплов, каналов и эффектов
создал семпл (цифровой или AY-like), поставил его играться в канал, и накладываешь эффекты прямо во время воспроизведения
если я правильно понял newart, ему нужно именно то, что есть в моей библиотеке :v2_yahoo:
то есть,
1) функция out_reg(t, num_reg, value), которая симулирует вывод в регистр на точно заданной микросекунде (все t должны неубывать. в идеале - строго возрастать)
2) возможность спросить у чипа: эй, а сколько семплов у тебя уже готово с учётом последнего t, на котором была запись?
3) возможность получить N семплов из буфера. но не больше, чем уже готово
---------- Post added at 21:14 ---------- Previous post was at 21:06 ----------
... а может быь и нет. может, newart-у нужен "живой" AY. чтобы DLL сама крутила цикл в отдельном потоке, сама постоянно выводила звук, а код трекера в реальном времени писал в регистры и не заморачивался с буферами и звукокартами :confused:
А каким боком умение написать DLL относится к кодингу на ZX?
...А может быть ворона, а может быть собака, а может быть корова! (что тоже хорошо :) )
У меня несколько частей в либе:
IO(read data) => Core{Process(search and convert raw data to track) => Tracking(interpret track data to device commands)} => Device(convert commands to sound dump) => Sound{Mixer(mix multichannel data to stereo)=>Backend(play sound)}
Эти части достаточно самостоятельны и отвязаны друг от друга. Путем адаптации любую из них можно юзать.