Git Product home page Git Product logo

furnace's Introduction

Furnace (chiptune tracker)

screenshot

the biggest multi-system chiptune tracker ever made!

downloads | discussion/help | developer info | Unix/Linux packages | FAQ


downloads

check out the Releases page. available for Windows, macOS and Linux.

for other operating systems, you may build the source.

see here for the latest unstable build.

features

  • a large selection of sound chips:
    • Yamaha FM chips:
      • YM2151 (OPM)
      • YM2203 (OPN)
      • YM2413 (OPLL)
      • YM2414 (OPZ) used in Yamaha TX81Z
      • YM2608 (OPNA) used in PC-98
      • YM2610 (OPNB) used in Neo Geo
      • YM2610B (OPNB2)
      • YM2612 (OPN2) used in Sega Genesis and FM Towns
      • YM3526 (OPL) used in C64 Sound Expander
      • YM3812 (OPL2)
      • YMF262 (OPL3) with full 4-op support!
      • Y8950 (OPL with ADPCM)
    • ESS ESFM (like OPL3 but with more features)
    • square wave chips:
      • AY-3-8910/YM2149(F) used in several computers and game consoles
      • Commodore VIC used in the VIC-20
      • Microchip AY8930
      • TI SN76489 used in Sega Master System and BBC Micro
      • PC Speaker
      • Philips SAA1099 used in SAM Coupé
      • OKI MSM5232 used in some arcade boards
    • sample chips:
      • SNES
      • Amiga
      • SegaPCM - all 16 channels
      • Capcom QSound
      • Yamaha YMZ280B (PCMD8)
      • Ricoh RF5C68 used in Sega CD and FM Towns
      • OKI MSM6258 and MSM6295
      • Konami K007232
      • Konami K053260
      • Irem GA20
      • Ensoniq ES5506
      • Namco C140
      • Namco C219
    • wavetable chips:
      • HuC6280 used in PC Engine
      • Konami Bubble System WSG
      • Konami SCC/SCC+
      • Namco arcade chips (WSG/C15/C30)
      • WonderSwan
      • Seta/Allumer X1-010
      • Sharp SM8521 used in Tiger Game.com
    • NES (Ricoh 2A03/2A07), with additional expansion sound support:
      • Konami VRC6
      • Konami VRC7
      • MMC5
      • Famicom Disk System
      • Sunsoft 5B
      • Namco 163
      • Family Noraebang (OPLL)
    • SID (6581/8580) used in Commodore 64
    • Mikey used in Atari Lynx
    • ZX Spectrum beeper
      • SFX-like engine
      • QuadTone engine
    • Pokémon Mini
    • Commodore PET
    • TED used in Commodore Plus/4
    • Casio PV-1000
    • TIA used in Atari 2600
      • including software tuning engine (TIunA)
    • POKEY used in Atari 8-bit computers
    • Game Boy
      • including SOFTWARE ENVELOPES (zombie mode)
    • Virtual Boy
    • Game Boy Advance
      • DMA (direct memory access) two channel mode
      • MinMod software driver by Natt Akuma
    • Nintendo DS
    • modern/fantasy:
      • Commander X16 VERA
      • tildearrow Sound Unit
      • PowerNoise
      • Bifurcator
      • SID2
      • Generic PCM DAC
  • mix and match sound chips!
    • over 200 ready to use presets from computers, game consoles and arcade boards...
    • ...or create your own - up to 32 of them or a total of 128 channels!
  • DefleMask compatibility
    • loads .dmf modules from all versions (beta 1 to 1.1.9)
    • saves .dmf modules - both modern and legacy
      • Furnace doubles as a module downgrader
    • loads/saves .dmp instruments and .dmw wavetables as well
    • clean-room design (guesswork and ABX tests only, no decompilation involved)
    • some bug/quirk implementation for increased playback accuracy through compatibility flags
  • VGM export
  • ZSM export for Commander X16
  • modular layout that you may adapt to your needs
  • audio file export - entire song, per chip or per channel
  • quality emulation cores (Nuked, MAME, SameBoy, Mednafen PCE, NSFplay, puNES, reSID, Stella, SAASound, vgsound_emu and ymfm)
  • wavetable synthesizer
    • available on wavetable chips
    • create complex sounds with ease - provide up to two wavetables, select an effect and let go!
  • MIDI input support
  • additional features:
    • FM macros!
    • negative octaves
    • advanced arp macros
    • arbitrary pitch samples
    • sample loop points
    • SSG envelopes and ADPCM-B in Neo Geo
    • pitchable OPLL drums
    • full duty/cutoff range in C64
    • full 16-channel SegaPCM
    • ability to change tempo mid-song
    • decimal tempo/tick rate
    • multiple sub-songs in a module
    • per-channel oscilloscope with waveform centering
    • built-in sample editor
    • chip mixing settings
    • built-in visualizer in pattern view
  • open-source under GPLv2 or later.

quick references

packages

Packaging status

some people have provided packages for Unix/Unix-like distributions. here's a list.

  • Flatpak: yes! Furnace is now available on Flathub thanks to ColinKinloch.

  • Arch Linux: furnace is in the official repositories.

  • Chimera Linux: furnace is in the contrib repository.

  • FreeBSD: a package in ports is available courtesy of ehaupt.

  • Nix: package thanks to OPNA2608.

  • openSUSE: a package is available, courtesy of fpesari.

  • Void Linux: furnace is available in the official repository.


developer info

Build furnace

if you can't download these artifacts (because GitHub requires you to be logged in), go here instead.

NOTE: do not download the project's source as a .zip or .tar.gz as these do not include the project's submodules which are necessary to proceed with building. please instead use Git as shown below.

dependencies

  • CMake
  • Git (for cloning the repository)
  • JACK (optional, macOS/Linux only)
  • a C/C++ compiler (e.g. Visual Studio or MinGW on Windows, Xcode (the command-line tools are enough) on macOS or GCC on Linux)

if building under Windows or macOS, no additional dependencies are required. otherwise, you may also need the following:

  • libpulse
  • libx11
  • libasound
  • libGL
  • any other libraries which may be used by SDL

some Linux distributions (e.g. Ubuntu or openSUSE) will require you to install the -dev versions of these.

having libintl is recommended for locale support, but if it isn't present, Furnace will use its own implementation.

getting the source

type the following on a terminal/console: (make sure Git is installed)

git clone --recursive https://github.com/tildearrow/furnace.git
cd furnace

(the --recursive parameter ensures submodules are fetched as well)

compilation

your typical CMake project.

Windows using MSVC

as of now tildearrow uses MinGW for Windows builds, but thanks to OPNA2608 this works again!

from the developer tools command prompt:

mkdir build
cd build
cmake ..

then open the solution file in Visual Studio and build.

alternatively, do:

msbuild ALL_BUILD.vcxproj

Windows using MinGW

setting up MinGW is a bit more complicated. two benefits are a faster, hotter Furnace, and Windows XP support.

however, one huge drawback is lack of backtrace support, so you'll have to use gdb when diagnosing a crash.

mkdir build
cd build
cmake -G "MinGW Makefiles" ..
mingw32-make

you may use "MSYS Makefiles" instead, depending on how you installed MinGW.

macOS, Linux and other Unix/Unix-like

mkdir build
cd build
cmake ..
make

on macOS you may do the following instead:

mkdir build
cd build
cmake -G Xcode ..

...and then load the project on Xcode or type xcodebuild.

CMake options

To add an option from the command-line: -D<NAME>=<VALUE>
Example: cmake -DBUILD_GUI=OFF -DWARNINGS_ARE_ERRORS=ON ..

Available options:

Name Default Description
BUILD_GUI ON Build the tracker (disable to build only a headless player)
WITH_LOCALE ON Enable language support
USE_RTMIDI ON Build with MIDI support using RtMidi
USE_SDL2 ON Build with SDL2 (required to build with GUI)
USE_SNDFILE ON Build with libsndfile (required in order to work with audio files)
USE_BACKWARD ON Use backward-cpp to print a backtrace on crash/abort
USE_FREETYPE OFF Build with FreeType support
USE_MOMO auto*** Build a libintl implementation instead of using the system one
WITH_JACK auto* Whether to build with JACK support. Auto-detects if JACK is available
WITH_PORTAUDIO ON Whether to build with PortAudio.
SYSTEM_FFTW OFF Use a system-installed version of FFTW instead of the vendored one
SYSTEM_FMT OFF Use a system-installed version of fmt instead of the vendored one
SYSTEM_LIBSNDFILE OFF Use a system-installed version of libsndfile instead of the vendored one
SYSTEM_RTMIDI OFF Use a system-installed version of RtMidi instead of the vendored one
SYSTEM_ZLIB OFF Use a system-installed version of zlib instead of the vendored one
SYSTEM_SDL2 OFF Use a system-installed version of SDL2 instead of the vendored one
SYSTEM_FREETYPE OFF Use a system-installed version of FreeType instead of the vendored one
SUPPORT_XP OFF Build a Windows XP-compatible binary
WARNINGS_ARE_ERRORS OFF** Whether warnings in furnace's C++ code should be treated as errors
WITH_DEMOS ON Install demo songs on make install
WITH_INSTRUMENTS ON Install demo instruments on make install
WITH_WAVETABLES ON Install wavetables on make install
SHOW_OPEN_ASSETS_MENU_ENTRY OFF Show option to open built-in assets directory (on supported platforms)
CONSOLE_SUBSYSTEM OFF Build with subsystem set to Console on Windows
FORCE_APPLE_BIN OFF Enable installation of binaries (when doing make install) to PREFIX/bin on Apple platforms

(*) ON if system-installed JACK detected, otherwise OFF

(**) but consider enabling this & reporting any errors that arise from it!

(***) enabled by default if both libintl and setlocale aren't present (MSVC and Android), or on macOS

CMake Error

if it says something about a missing subdirectory in extern, then either:

  1. you didn't set up submodules, or
  2. you downloaded the source as a .zip or .tar.gz. don't do this.

if 1, you may run git submodule update --init --recursive. this will initialize submodules.

if 2, clone this repo.

console usage

(note: if on Windows, type furnace.exe instead, or Debug\furnace.exe on MSVC)

./furnace

this opens the program.

./furnace -console <file>

this will play a compatible file.

./furnace -console -view commands <file>

this will play a compatible file and enable the commands view.

note that console mode may not work correctly on Windows. you may have to quit using the Task Manager.


frequently asked questions

it doesn't open under macOS!

this is due to Apple's application signing policy. a workaround is to right click on the Furnace app icon and select Open.

it says "Furnace" is damaged and can't be opened!

as of Monterey, this workaround no longer works (especially on ARM). yeah, Apple has decided to be strict on the matter. if you happen to be on that version (or later), use this workaround instead (on a Terminal):

xattr -d com.apple.quarantine /path/to/Furnace.app

(replace /path/to/ with the path where Furnace.app is located)

you may need to log out and/or reboot after doing this.

where's the manual?

it is in doc/.

is there a tutorial?

a video tutorial (of a previous version) is available on YouTube, made by Spinning Square Waves.

I've lost my song!

Furnace keeps backups of the songs you've worked on before. go to file > restore backup.

.spc export?

not yet! coming in 0.7 though, eventually...

ROM export?

not yet! coming in 0.7 though, eventually...

my .dmf song sounds odd at a certain point

Furnace's .dmf compatibility isn't perfect and it's mostly because DefleMask does things different.

my song sounds terrible after saving as .dmf!

you should only save as .dmf if you're really sure, because the DefleMask format has several limitations. save in Furnace song format instead (.fur).


footnotes

copyright (C) 2021-2024 tildearrow and contributors.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Furnace is NOT affiliated with Delek or DefleMask in any form, regardless of its ability to load and save the .dmf, .dmp and .dmw file formats. additionally, Furnace does not intend to replace DefleMask, nor any other program.

furnace's People

Contributors

akumanatt avatar aquamarine-axo avatar awuwunya avatar brickblock369 avatar cam900 avatar colinkinloch avatar deved2 avatar djtubig-malicex avatar eknous-p avatar electrickeet avatar epictyphlosion avatar freq-mod avatar grauw avatar host12prog avatar kagamiin avatar laoo avatar liaminventions avatar lokitoon avatar ltva1 avatar lunathir avatar mooinglemur avatar opna2608 avatar revvobolt avatar scratchminer avatar techmetx11 avatar theduccinator avatar tildearrow avatar yohannd1 avatar zerobyteorg avatar zoomten avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

furnace's Issues

suggestion: .mod import

I've read in the documentation file about the amiga:

"Effects: none. as of this moment the Amiga doesn't need any effects in particular"

still, being able to import .mod files would be great, and would also allow to quickly 'convert' old-school .mods to play on other chips, or even 'extend' modules by adding some FM to them ;-)

Maybe you could be interested by this project, that converts .mod files into .vgm files, using the OPL4 chip (which is not supported by furnace)

https://github.com/superctr/mod2vgm

[YM2612 emulation] Fm instruments don't sound the way they should

emucomparison.zip - this archive contains two wav files, one recorded using Bamboo Tracker with Nuked OPN-Mod emu core (Nuked OPN2 hacked to behave like YM2608 FM block), second is the Furnace output. Difference is clear, and I'm 99.999999% sure I didn't screw up and the instrument is 1:1 identical. On Furnace it sounds horribly dry, so either some FM parameters like detune are improperly implemented (unlikely) or the emulation core isn't good enough. It isn't Nuked OPN2, bc no quantization noise, so what is it?

EDIT:BelPian.zip instrument file, unfortunately in BT format, dont have deflemask on ssd rn

FM/Wave sound is not updated as parameters are edited

I am very thankful that such a project arose. While aware that it's still very early in developemnt, some bugs, well, bug me out lol
When editing instrument, it's timbre isn't updated, it does when the stop button is hit.

Also, FM algorithms behave... weirdly. Or maybe I am misunderstanding sth.

MacOS GUI position problems

On MacOS, the menus do not display the text properly, and the highlight does not track the mouse cursor.
I'm putting these in as one issue cos they might both be symptoms of the same cause, let me know if I should split it into 2.

mouse3

Versions in test:
v0.4.5 - the real release (Furnace-0.4.5-mac.dmg)
and local build using commit 06dfb7e (2022-01-20)

System Version: macOS 10.15.7 (19H1419) / Catalina
MacBook Pro (16-inch, 2019)
Display settings:
Screenshot 2022-01-20 at 10 22 42

Devendor libraries

The CMake script should allow ppl to link against their own, system-installed versions of the vendored libraries:

  • SDL2
  • fmt
  • libsndfile
  • zlib

Suggestion: effect description displayed on upper/lower bar during input

Both Famitracker and Bamboo has it, Deflemask also was to receive it at one point. When inserting an effect into the pattern editor, a short description is displayed on a lower bar, for example:

inserting "0" into effect columns displays info about effect 00xx: "arpeggio. after using this effect the channel will rapidly switch between note, note+x and note+y.", inserting "01" displays portamneto slide up description.

Some chip suggestions

PSG:

  • Atari POKEY
  • Watara Supervision APU
  • T6W28 (mildly-enhanced SN76489)
  • GBA APU
  • VERA (Commander X16)

Wavetable:

  • 2C33 (FDS)
  • Konami SCC / SCC+
  • VSU-VUE (Virtual Boy)
  • SPGY-1001 (WonderSwan)

FM:

  • YM2413
  • OPL 1/2/3
  • MSX-AUDIO

Sample:

  • RF5C68
  • S-DSP (SNES)

Ability to edit order number via keyboard

Currently it's via left or right mouse click, may cause obvious problem with 20 orders and you want to change next order number to, for example, 00... all trackers I know use keyboard for that.

Add ability to wrap cursor around pattern editor edges

It is an option in Bamboo and Famitracker I think, idk how about Deflemask, I don't remember. Basically, pressing left while cursor is on the first track jumps cursor to the last track. In case of YM2612 SN7, pressing left on pattern editor with ch1 selected will bring cursor to noise chan of SN7.

[PC Engine] Noise mode is incomplete

http://www.blockos.org/releases/pcengine/documentation/HuC6280%20-%20CMOS%20Programmable%20Sound%20Generator%20Manual.pdf according to HuC6280 manual:

The low-order five bits are used to determine the frequency of clock signal to the noise generator. Greater the data higher the noise frequency.
R7 (noise frequency register) defines noise frequency.
This register defines the clock frequency of the noise generator:

fNCL = fmaster / (2 X 32 X 2 X NF)
where NF is the complement of 5 bits data of noise frequency register.

So, if I understand correctly, 32 different noise frequencies should be possible. Furnace supports 10, it seems.

[FM synthesis] More effects for controlling operator parameters

For some really dumb reason, Deflemask had control only for attack rates. Why? Bamboo Tracker (and ZorroTracker's alpha) has effects for Decay Rates, Release Rates, MULT, TL, FB.

Also, Brightness effect - it scales the TL of modulators only, depending on an algorithm of affected instrument.

Rearrange the FM slider layout

Or, at least, make it configurable, please.

Feeback should be to the left of algorithms. And per- operator parameters should go like: AR - DR -D2R -RR -SL -TL -KS - MULT - DT -DT2 -SSGEG. As of now it's all over it lel

SAA instrument on TIA corruption

Steps to replicate:

  1. Set system to SAA1099
  2. Create an instrument, fill it with tone + noise in waveform macro, set noise frequency just in case
  3. Add TIA
  4. Remove SAA
  5. you will have SAA instrument on TIA, sounding very weird, like some glitchy arpeggio

[YM2151] Negative octaves are very glitchy

These low notes output some random pitches, ranging from very high, like octave 6 to bass tones. Not an expert, but shouldn't YM2151 be capable of negative octaves too, like all FM chips?

Game Boy negative octaves produce some weird sounds

Most systems uncapable of producing sounds that low, simply output their lowest tone they can. Game Boy is different - instead of a lowest tone, it outputs some weird, faint high pitched whine that is constant for all tones lower than c-0. Above c-0, it outputs the real lowest tone it can, which is B1 afaik.

Noise channel of GB produces the high-pitched noise 🤔

suggestion: vgm export

Exporting to one or several .vgm files would be very useful to play songs created with furnace, on software or hardware players

.vgm format has its limitations but also it is quite universal

Install rules for data files

  • There are some demos, but they don't have any install() CMake rules associated with them

  • res/ has a desktop file & some icons that get used in the AppImage generation, but aren't installed when building furnace locally

Feature request/idea: support MIDI input

First, thank you for this very interesting project.

It does bring an alternative the the closed-source deflemask engine and GUI,
and it also includes a very capable engine for lots of chips, this is really nice !

As I see you are ready to bring more features to furnace, I think it would
be really cool to be able to use furnace engine (headlessly?) with MIDI input.

If volume, panning, vibrato etc were handled in MIDI and translated into
pseudo-deflemask commands, this would allow musicicans to compose songs
in any DAW, and to play them on simulated hardware, or to export them to .vgm format.

We can discuss and refine these different features, if you are interested in them.

Thanks !

Bug: Amiga/Sample instruments don't pitch up, only down

For some reason if you play a sample instrument above B-5 (Which is the initial pitch for some reason) sample doesn't become higher in pitch neither on playback or preview

2022-01-21.16-27-39.mp4

.
(Also just a sidenote: whenever FM instrument import drops the issues tab will be just hundreds of posts of me posting bugs while trying to make a track)

Suggestion: more than 4 effect columns

SSG has hardware envelopes, that takes some effect space. When coupled with normal music effects (portamento, fine tuning), four effects might not be enough... ZorroTracker had 8 of these. While 8 effect colums might be a lot, if not too much, 5/6 will certainly be of use.

[TIA] 01xx effect acts somewhat unreliably at negative octaves

Tested only on AY, but 01xx stays yellow (is it supposed to mean it's invalid) and doesn't affect the sound at all. 02xx, the inverse of it, works perfectly fine.

P.S: 12xx on SSG is bright green, and turns the channel output into a high pitched noise... there isn't such an effect in documentation for PSG, so it's weird for me

General major issues I catched (0.42)

Philips SAA1099/AY-3-8910

  • #18
  • no ability to set tone/noise (ah, on AY it's via wave macro, not too intuitive) or envelope generatorcan it be a macro like in Bamboo?
  • stereo panning effect for SAA1099 (does it work that way?)
  • waveform macro doesn't have envelope option. Is it due to how envelope works on SAA?

AY-8930

  • duty cycle macro works really weirdly, like it lacks some duties, and most of the values are duplicates (8-15 and 0, 1 are the same)
  • wf macro as above, only some values output some weird SMS periodic noise-like buzzing

Neo Geo

  • no ADPCM-B channel. It's Neo Geo CD?

Sega Mega Drive

  • Elis_Fur.zip this zip file contains wav exports and module in question. Not only the volume mixing is off, but also TL sweep on ch3 mode is broken

General PCM

  • #40
  • sample editor, not too pleasant IMO, even compared to DM. I would like to propose sth like BambooTracker's (yeah, I repeat myself with it lol) sample editor:
    Zrzut ekranu z 2022-01-18 13-04-23
  • sample looping doesnt seem to work except Amiga

General FM

  • #19
  • having common FM editor for YM2612 and YM2151 might be a bit confusing, since 2612 doesn't have DT2... it can be grayed out, if having separate editors for each system isn't viable? //invalid

PC Engine

  • When all six channels are being played at max volume, it distrorts. I don't know if it's the intended behaviour of a chip, Deflemask doesn't have it. (?)
  • It's impossible to preview the wave during editing.
  • amiga waves
  • I'm not sure what Duty Cyclr/Noise mode macro does, it appears to be non-functional
  • PCE wavetable cycling sounds dirty wavetable_cycling_PCE.zip, almost like it doesn't wait the end of the wave before switching to the next one //invalid

C64 8580

  • relative duty macro behaves weird, like it doesn't do anything by itself...
  • only via waveform macro, when 5- 7 values are really weird (PWM pulse, and then the combines wave kicks in)
  • sid_bug.zip this test module showcases some weird sound problem with sid. pay attention to how instruments sound in instr editor and how during playback //fixed with 15xx

YM2151

  • LFO controls is nowhere to be found at all, and it's really powerful! (most notably, AMD/PMD patterns)
  • noise mode macro would be cool too

Other

  • #20
  • only YM2151 emu core can be changed, no such ability with other systems like YM2612
  • file import/load is a MASSIVE chore and barely even works. Sometimes, I can't open other modules with "Resource temporariliy unavailable" error turns out, the default window size rendered the file browser invisible
  • When jamming keyboard, only one sound can be played at once, preventing possibility to to check out chords

Surely there are more... I will report them. I am aware fixing all of that will take some considerable amounts of time, just worth having that in one place to track the process of development of this promising software.

Negative octaves (question)

How to use them? I saw, since 0.4.3, they are allowed, but I can select octave lower than 0. Are they accessible only via pitch bend effects? ZorroTracker alpha allowed low tones up to C (-4)

[PC Engine] Wavetable phasing feasibility

I know it was discussed in #16 , where the case is that DM does it in a very dirty way, however I stumbled upon this forum thread, some posts catched my attention: https://www.pcenginefans.com/forum/index.php?topic=21779.0

Each channel waveform buffer is 32bytes. If you did a slow update ( no Txx block transfer), that's ~14cycles a byte in an unrolled loop for transfer. Assuming you changed the waveform on every 'tick' (1\60th), it's 448cycles per channel per frame. 448/119210 = 0.38% cpu resource per frame @ one channel. Not even a full 1% of cpu resource. I mean, just the act of updating it.
In other words, it's almost non existent when it comes to cpu resource. And why Deflemask puts a storage limit of 32, is beyond me. You can do other fun stuff with updating waveforms; adding two different waveforms together and divide by two; create your own 'filtering' or whatever effects directly onto the sample as a realtime process.

The downside of waveform updating on PCE, is obviously you can't match pointer playback position from one set of 32byte sample to another set, for a seamless transition. It makes the phasing a little bit dirty sounding.

Instead of replacing the whole waveform, you have a single waveform (of any length), where you write one byte per 1/60th timing or less to one specific channel - all without turning off the channel. Basically, the PCE soundchip is always in DDA mode. When you write to DDA port (also the waveform channel port), regardless if the channel is in DDA mode or waveform mode - the sample will be output to that channel's DAC. But something interesting happens; where ever that playback pointer is of the channel's waveform, the byte in the waveform memory will be replaced with the byte written to DDA port. So you can corrupt or change the waveform over time, in very specific ways, to create timbre type effects.

🤔 (if it's not possible here, that's okay, i can understand)

Can't turn off the loop flag in macros with lenght=1

When clicking that bar under the macro (loop) I can't unclick it. At all, tried left click, right-click, double click....

EDIT: unclicking the macro is possible for all but last value, why? Also to unlick the loop flag for column 3, I must click one under column 4, wut

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.