Skip to content

🎹 Software for making music. Connect a MIDI keyboard to it, and the program generates the sound for the notes you play.

License

Notifications You must be signed in to change notification settings

jjvanzon/JJ.Synthesizer

Repository files navigation

JJ van Zon, 2022

🎢 JJ.Synthesizer 🎹

πŸ“” Contents

⏯ Video

Demo Video

πŸ–Ό Screen Shots

πŸ“’ Intro

JJ.Synthesizer is software for making music.

The purpose is to connect a MIDI keyboard to it, and the program generates the sound for the notes you play.

It has been a pet project of mine for a few years between about 2015 and 2018. It has been in the ice box for a few years now, because of my health issues. I am now trying to get it to the public domain at least.

It supports certain types of synthesis, like additive, subtractive, sampling, ADSR, noise generator, filters, and effects like compression and envelope following.

Install | Requires SQL Server

🐞 Bugs

When I dropped this project out of my hands, a few bugs remained. Unfortunately I was not able to resolve these bugs yet. More shortcomings might be there, but these might make it musically less unusable:

Also bugs in the main flow of the application might get priority.

πŸ‘¨β€πŸ’» Technical Wishlist

Not entirely proud of the many other little bugs that remained. Solution:
More Automated Testing?

πŸ› Reference Architecture

The patterns and practices in this project closely match the following guidelines for structuring software: JJ's Reference Architecture

βš™ Dev Env

Here you may find some pointers how to set up a developent environment to build and run JJ.Synthesizer.

πŸ–₯ Visual Studio

This project was developed using C# in Visual Studio. You might download that elsewhere.

πŸ’½ Database

  • Open the folder Database\SynthesizerDB
  • You might a file there like "SynthesizerDB.zip".
  • You could look for the one last in the list sorted by name. That should be the latest database backup.
  • The file can be unzipped and then restored in SQL Server with name "DEV_SaveTextDB".
  • The database user name "dev" may be expected with password "dev".

  • In luck, no manual work after that may be needed.
  • But it is possible that .sql files are listed after the Synthesizer backup file.
  • Those may then be executed one by one, onto the restored SynthesizerDB, to get the database more up-to-date.

  • Some of the SQL files may indicate "RUN UTILITY".
  • That indicates that the utility "JJ.Utilities.Synthesizer.DataMigration" might be run.
  • That utility would be found when opening the Synthesizer.sln.
  • Running it should show a window that allows executing a database migration step.
  • The "RUN UTILITY" sql should have indicated which step to run.
  • In an unfortunate case, it might be needed, to do a git checkout of a commit somewhere in history in order to run the utility. The commit to check out might be the one closest to the date indicated in the file name of the "RUN UTILITY" sql file.
  • Sorry for a possible lack of elegance here.

πŸ“¦ JJ.Framework

🧱 JJ.Canonical

  • JJ.Data.Canonical and JJ.Business.Canonical can also be found right next to the JJ.Framework packages in JJs-Pre-Release-Package-Feed.

πŸ•˜ Checking Out Old Commits

JJ.Synthesizer was once part of a larger code base. It was extracted to become a new git repository with history in tact. Some quirks when checking out older history items, may have to do with that. The following may only be relevant when getting older commits from history (from before 2022-11-18).

  • Commit messages:
    • May mention projects not part of the JJ.Synthesizer repo.
  • References to other non-existent projects:
    • To fix this, try referencing the NuGet version of these dependencies.
  • Broken project references to JJ.Framework / JJ.Canonical:
    • JJ.Framework / JJ.Canonical projects are no longer in the same code base.
    • You could try referencing the NuGet version of these dependencies.
    • But another solution may be to clone the JJ.Framework repository and put the JJ.Framework folder right next to the JJ.Synthesizer folder. This may fix the broken links.
    • Same for the JJ.Canonical repository.
    • But sometimes the paths are still incorrect and may need to be modified (with Notepad)?
    • But then you could use a specific commit from JJ.Framework or JJ.Canonical's history.

About

🎹 Software for making music. Connect a MIDI keyboard to it, and the program generates the sound for the notes you play.

Topics

Resources

License

Stars

Watchers

Forks

Languages