согласен, для плеера, эмулятора и трекера нужны разные либы с разными АПИ. для трекера подойдёт что-то вроде BASS. то есть, манипуляция со звуком должна быть на уровне семплов, каналов и эффектов
создал семпл (цифровой или AY-like), поставил его играться в канал, и накладываешь эффекты прямо во время воспроизведения
если я правильно понял newart, ему нужно именно то, что есть в моей библиотеке
то есть,
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 сама крутила цикл в отдельном потоке, сама постоянно выводила звук, а код трекера в реальном времени писал в регистры и не заморачивался с буферами и звукокартами
А каким боком умение написать 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)}
Эти части достаточно самостоятельны и отвязаны друг от друга. Путем адаптации любую из них можно юзать.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)