Commit Graph

  • 9544a130ab feat(song): add basic JSON marshaling/unmarshaling tests to make sure everything gets marshalled properly Matias Lahti 2020-11-02 16:36:54 +02:00
  • e0a793ea6d Reorganize the project folder structure and how go packages are organized. Veikko Sariola 2020-10-30 22:05:26 +02:00
  • 23e8bc0c5f Remove bridge.newSynthState & add 1 to RandSeed during Render calls, so now an empty struct corresponds to the Sointu default behavior. Veikko Sariola 2020-10-28 20:03:21 +02:00
  • 8183c698da Separate Synth and SynthState: SynthState is the part that Render changes. Veikko Sariola 2020-10-28 13:44:34 +02:00
  • 64afa9fb48 Change the C-API to roughly match the new Go-API. Veikko Sariola 2020-10-27 20:15:06 +02:00
  • 5f4b85b0a4 Change the Go API to have two versions: Render(buffer []float32), which always fill the whole buffer, and RenderTime(buffer []float32,int maxtime), which ends either when the buffer is full, or modulated time is reached. Veikko Sariola 2020-10-27 17:26:08 +02:00
  • 7a9ac3489b Add polyphonism support to bridge.go Veikko Sariola 2020-10-26 12:47:22 +02:00
  • 1d07b4f192 Change the .asm song format so it's a bit easier to parse, by replacing PORT and GLOBALPORT macros with LOCALPORT and GLOBALPORT. Veikko Sariola 2020-10-26 12:53:17 +02:00
  • f495b0575a Fix bug in song.go: the note was pulled from the song data incorrectly. Veikko Sariola 2020-10-26 12:49:27 +02:00
  • debeaa181c Fix bug in song.go: len(s.Patterns) should have been len(s.Tracks). Veikko Sariola 2020-10-26 12:48:33 +02:00
  • 470ba28592 Change the Render function in bridge.go to return a tuple of: number of samples rendered; bool indicating if rowend was reached; and a possible error. Veikko Sariola 2020-10-26 08:30:43 +02:00
  • acab824523 Update README.md Veikko Sariola 2020-10-24 23:36:56 +03:00
  • 6c90ba2067 Implement a song struct to hold all the information of a single song (corresponding one .asm file) and Render function for it. Veikko Sariola 2020-10-24 23:25:23 +03:00
  • be7a4e21f3 Optimize asm player size, removing one unnecessary instruction. Veikko Sariola 2020-10-24 22:07:58 +03:00
  • 3bb3e5c88e Fix su_render_samples to return correct values when built in 32-bit. Veikko Sariola 2020-10-24 17:04:27 +03:00
  • aa133b4606 Change bridge.go so that there is just SetPatch(...) function, instead of having to SetCommands, SetValues etc. Veikko Sariola 2020-10-24 16:15:15 +03:00
  • 1abc6f22d5 Change the Go bridge API to more idiomatic Go, offering a callback when the row advances. Veikko Sariola 2020-10-24 14:39:10 +03:00
  • 6e85ff674a Change the sointu.h api to return -1, 0 or n>0 depending if buffer is full and/or row ended. Veikko Sariola 2020-10-24 13:00:08 +03:00
  • c9e8000c5f Remove the cmake magic to create bridge.go from bridge.go.in. Veikko Sariola 2020-10-23 00:04:54 +03:00
  • 163af33c9b Add .cache/ to .gitignore. Veikko Sariola 2020-10-22 23:31:05 +03:00
  • 896e7e70b1 Add Opcode type to bridge, and pull the opcodes from the cgo side. Veikko Sariola 2020-10-22 23:29:37 +03:00
  • af75dd38aa Add common build folder names to .gitignore. Veikko Sariola 2020-10-22 21:05:10 +03:00
  • 95b70018cc Fix all CMake tests passing on MinGW: consider minor (< 1e-6) errors in waveform shape successes. Veikko Sariola 2020-10-22 21:03:54 +03:00
  • b9ec015b4a Document MinGW build commands in README.md. Veikko Sariola 2020-10-22 17:46:51 +03:00
  • 7aac3917b7 Implement a bridge to call Sointu from Go language. Veikko Sariola 2020-10-21 20:07:45 +03:00
  • af14cd310b Change .asm files that are actually only ever included into .inc-files, and rename all files as _header.inc & _footer.inc, depending where they are included. Veikko Sariola 2020-10-20 09:06:53 +03:00
  • 06e8365c06 Update README.md Veikko Sariola 2020-10-21 09:50:19 +03:00
  • 7e3dc19c83 Add inverse gain to compressor. The inverse gain is applied to the signal before any compressor calculations. Veikko Sariola 2020-05-27 18:53:54 +03:00
  • c5b6e6e28c Move su_load_gmdls into the responsibility of the intro to call, anticipating multicore rendering so it is called once before all the cores are spun up. Veikko Sariola 2020-05-27 17:08:35 +03:00
  • 200937aa50 Fix single shot samples: only first half of them was getting played. Veikko Sariola 2020-05-27 16:21:49 +03:00
  • 8956f524c9 Only compile introspection.asm when SU_USE_INTROSPECTION is defined. Veikko Sariola 2020-05-27 16:04:52 +03:00
  • 45e554a9f9 Fix yasm warnings about flags being ignored on section redeclaration. Veikko Sariola 2020-05-27 13:17:28 +03:00
  • 5e05057240 Fix builds and tests to pass on Linux. Veikko 2020-05-26 21:27:53 +03:00
  • b64723323f Move player.asm back to sointu.asm, as they were getting again pretty intertwined. Veikko Sariola 2020-05-26 21:36:06 +03:00
  • e049bf2dce Change loadnote to load values from [-1,1], to allow using notes for both positive and negative modulations. Veikko Sariola 2020-05-26 18:58:49 +03:00
  • 3cdada41e0 Rename labels in envelope into more sensible. Veikko Sariola 2020-05-26 18:34:47 +03:00
  • ceae6ffcba Clean up the op_advance code&comments and remove one unnecessary jump. Veikko Sariola 2020-05-26 18:13:16 +03:00
  • 91b8912015 Rename all SU_BEGIN_* macros into BEGIN_*; there's no real risk of nameclash and makes the code more readable. Veikko Sariola 2020-05-26 17:45:37 +03:00
  • efc6db71ab Reverse the logic of USE_SECTIONS (it's now DISABLE_SECTIONS) and then remove unnecessary defines. Veikko Sariola 2020-05-26 17:30:50 +03:00
  • 3b10476dc2 Remove unused strucs / struc members; in particular: .params /.ports. Veikko Sariola 2020-05-26 16:35:19 +03:00
  • cf86a951f5 Move all constants into the end of sointu.asm, littering them around started getting messy. Veikko Sariola 2020-05-26 16:30:57 +03:00
  • 35b8253776 Delete CONCATENATE macro - it is not used anymore. Veikko Sariola 2020-05-26 14:25:15 +03:00
  • dac5afea60 Implement IN, OUTAUX and AUX opcodes, to conveniently input from or output to global ports. Veikko Sariola 2020-05-25 23:14:02 +03:00
  • 17c6afceb4 Fix bug that su_env_map was not compiled when using only compressor, and rename it to su_nonlinear_map. Veikko Sariola 2020-05-25 20:45:36 +03:00
  • 1f92373a63 Limit compressor stack use. Veikko Sariola 2020-05-25 20:37:34 +03:00
  • 1eb6974d5d Optimize compressor size. Veikko Sariola 2020-05-25 20:29:34 +03:00
  • 55d9ca0ffc Reverse the voiceno counter: now it starts from MAX_VOICES and decrements until 0. This way, the VM needs not know anything about MAX_VOICES. Veikko Sariola 2020-05-25 17:23:54 +03:00
  • a193b8b1ef Inline transform_values into the VM, leading to a slightly more efficient register use. Veikko Sariola 2020-05-25 16:57:50 +03:00
  • 3198452b9c Add a change log. Veikko Sariola 2020-05-25 14:14:13 +03:00
  • 33d83d29a5 Update project description & version. Veikko Sariola 2020-05-25 13:50:09 +03:00
  • 8d0ae21fb6 Remove separate playerstack and clean up the code. Veikko Sariola 2020-05-25 11:16:49 +03:00
  • 7de7b49e24 Change apply to "do" and add brackets. Veikko Sariola 2020-05-24 01:11:17 +03:00
  • 2c6f4f44d5 Use some of the unused space of synth object for curvoices. Veikko Sariola 2020-05-24 00:45:59 +03:00
  • 457c1fdc32 Move things to stack, anticipating support for multicore rendering. Veikko Sariola 2020-05-24 00:32:49 +03:00
  • 5c25eacd08 Optimize delay for better register use. Veikko Sariola 2020-05-23 17:40:22 +03:00
  • da52c10f7f Get rid of transformed values and use the header of the voice for that; saves _CX completely for the opcode. Veikko Sariola 2020-05-23 17:30:52 +03:00
  • 79b384a0d6 Clean up comments and some defines. Veikko Sariola 2020-05-23 16:02:29 +03:00
  • bd005d52a7 Clean up whitespace. Veikko Sariola 2020-05-23 15:09:32 +03:00
  • 6f06306f0c Re-engineer delay, to use stack for the delay WRK pointer and to support note-syncing transpose. Veikko Sariola 2020-05-23 15:05:38 +03:00
  • afbff66e36 Use strucs for stack locations, instead of hard-coding them everywhere. Veikko Sariola 2020-05-21 17:43:14 +03:00
  • 654e5868bc Implement support for 64-bit builds. Veikko Sariola 2020-05-21 17:18:18 +03:00
  • 6f7fed4c6b Move jnc *_mono, ..., *_mono: code from function bodies to the stereofilter helper. Veikko Sariola 2020-05-20 08:49:23 +03:00
  • dc99157fbb Implement unison oscillators: multiple versions of slightly detuned oscillators that are added up to make a signal. Veikko Sariola 2020-05-19 21:12:49 +03:00
  • adc4a6e45f Implement sample-based oscillators, with sample import from gm.dls. Veikko Sariola 2020-05-19 18:29:47 +03:00
  • 77b989d88d Optimize size. Veikko Sariola 2020-05-18 16:25:20 +03:00
  • 666fd385d1 Fix bug in SEND STEREO. Veikko Sariola 2020-05-18 16:23:49 +03:00
  • 5d1145be39 Improve README. Veikko Sariola 2020-05-17 16:48:28 +03:00
  • fc0ad4c011 Implement compressor. Veikko Sariola 2020-05-17 16:37:08 +03:00
  • 71a5a18257 Implement player speed modulation opcode for triplets and such. Veikko Sariola 2020-05-17 09:51:20 +03:00
  • 15717557f1 Split polyphony test into two tests. Veikko Sariola 2020-05-17 08:32:35 +03:00
  • f06810d956 Optimize size. Veikko Sariola 2020-05-16 23:53:39 +03:00
  • 3b33b4e4d2 Improve README. Veikko Sariola 2020-05-16 23:26:21 +03:00
  • d87d2e22cf Implement new effect: bit-crusher. Veikko Sariola 2020-05-16 23:22:31 +03:00
  • 6a0a2fc36c Optimize the implementations of gain and invgain. Veikko Sariola 2020-05-16 23:01:16 +03:00
  • ac5b4dd496 Make clip opcode working and add regression tests to it. Veikko Sariola 2020-05-16 22:49:59 +03:00
  • 5760f78201 Implement gain and inverse gain effects, for the moments when you just need them. Veikko Sariola 2020-05-16 22:29:08 +03:00
  • e966bc0084 Improve README. Veikko Sariola 2020-05-16 21:55:32 +03:00
  • 87264c443c Add tests for opcode stereo variants, squashing several bugs in the process. Implement receive opcode to test stereo sending. Veikko Sariola 2020-05-16 21:23:41 +03:00
  • f9388b028a Rename test files to represent better the new opcodes they correspond to. Veikko Sariola 2020-05-16 18:32:56 +03:00
  • 42ebc52c96 Remove trailing spaces and convert tabs to spaces. Veikko Sariola 2020-05-16 09:16:23 +03:00
  • d328431413 Improve README. Veikko Sariola 2020-05-16 08:54:55 +03:00
  • 78d4cd50e8 Rewrote most of the synth to better support stereo signals and polyphony. VSTi removed as there is no plan to update the VSTi to support the new features. Veikko Sariola 2020-05-16 08:25:52 +03:00
  • 5c1b87f254 Improve comments for UpdateInstrument Veikko Sariola 2020-05-04 20:19:58 +03:00
  • 6be7959cd1 Refactor the waveshaper function to save some bytes. Veikko Sariola 2020-05-03 17:02:08 +03:00
  • 3c3fe6caf8 Improve comments and formatting. Veikko Sariola 2020-05-03 16:34:39 +03:00
  • 212951c75d Make tests rebuild when 4klang.asm and 4klang.inc are changed. Veikko Sariola 2020-05-03 12:50:42 +03:00
  • 9546574f13 Add regression test for AUX output. Veikko Sariola 2020-05-03 11:21:09 +03:00
  • c63dfd74f9 Make transform macro definition slightly more readable. Veikko Sariola 2020-05-03 11:12:53 +03:00
  • 53a1be9b61 Refactor all values to have a universal support for modulations. Veikko Sariola 2020-05-01 16:56:30 +03:00
  • 0c08f3d41c Remove unnecessary short jump. Veikko Sariola 2020-05-01 09:34:17 +03:00
  • 8dc7a9b5a0 Fix some name manglings. Veikko Sariola 2020-05-01 09:31:36 +03:00
  • 405ef66b31 Remove unnecessary code from Power-function. Veikko Sariola 2020-05-01 09:17:10 +03:00
  • 660da68a48 Add regression test for polyphony (MAX_VOICES = 2). Veikko Sariola 2020-05-01 08:51:43 +03:00
  • f97cea2a17 Refactor 4klang to use cross-platform defines and 4klang.asm & .inc to work more like .c and .h. Veikko Sariola 2020-04-25 23:45:47 +03:00
  • 771c0b96e3 Put back 8klang builds. Veikko Sariola 2020-04-30 13:08:05 +03:00
  • 09c497fef6 Add regression tests for delay modulations. Veikko Sariola 2020-04-25 11:29:14 +03:00
  • 7170b049d3 Add regression tests for VCF opcode and its modulations. Veikko Sariola 2020-04-24 22:51:42 +03:00
  • 4b9b1710eb Add regression tests for delay (DLL) opcode. Veikko Sariola 2020-04-23 20:06:41 +03:00
  • a49fba060c Add regression tests for distortion, including sample-and-hold and modulations. Veikko Sariola 2020-04-18 21:21:21 +03:00
  • 41222b09a7 Move all raw audio files related to tests into subfolders, to have slightly more clean folder structure and to avoid mixing source files and data files. Veikko Sariola 2020-04-18 19:47:16 +03:00