Free Fragrance Composition Software

Jun 28, 2014
After years of notepads and spreadsheets, I got around to writing a proper piece of software for managing compositions. It's still a beta version at the moment, but provides a basic way to track items in your organ and compositions you create.

Feature overview:
  • 1500 of the most common fragrance ingredients in an index, with CAS numbers and other useful info.
  • An inventory system for tracking materials and where they were sourced.
  • A composition list allowing entry of records relating to experiments, dilutions, accords and finished fragrances.

Instructions:
  • Find items in the index that you want to buy or have already bought. Filtering makes finding materials easy. For example, type in part of the name of a material and it will appear in the grid.
  • Click 'Add to inventory' to add the item to your inventory.
  • Click the 'Inventory' tab to see a list of all items in your organ.
  • It's possible to record supplier name, batch number and your own notes against each item. There's also a 'variant' field for recording information specific to the type of material, for example the country that an essential oil was produced in.
  • Once the inventory is up to date, click on the 'Compositions' tab.
  • Type a name for the composition, and select the category. Once a composition is complete you can also record a rating out of 10 based on how much you (or other people) liked it.
  • The notes field can be used to record your observations in relation to the composition (e.g. what the top notes are like, how the drydown develops, longevity, etc.)
  • Clicking 'Save' will save the composition details, while 'New' creates a new blank composition.
  • Each composition can be created from materials and/or a blend of other compositions. So in the component grid, select each material or accord using the drop down. You can then type the relevant amount in the 'amount' column, with one of the following suffixes:
  1. (no suffix) = drops
  2. d = drops
  3. m = millilitres
  4. g = grams
  5. f = fluid ounces
  6. o = ounces
  • You can also save time by typing after you select the dropdown. For example you click the dropdown and type 'Ora' then 'Orange Oil' will appear as the selected item (if it's in your inventory). Up and down arrow keys can also be used to change the selected item.

Future features:
  • More complete data in the index.
  • A batch management system for tracking all your finished batches through the aging and distribution process.
  • Calculator for scaling compositions up (e.g. how much of each material is required to make 1kg of fragrance).
  • Analysis feature showing relative strength of materials within a theoretical composition.

How you can help:
  • If anyone has a list of room temperature densities of materials keyed by CAS number, it would be very useful.
  • Many items in the index are missing note class, tag and use information and detailed descriptions.
  • It's possible for anyone to update items in the index. If you do, please let me know and your additions / modifications can be incorporated into future versions.

Download it here (requires a Windows PC with .NET framework installed):
https://sourceforge.net/projects/parfumpro/files/latest/download?source=files
 
Last edited:

nemenator

Super Member
Dec 8, 2012
Good stuff, thanks. Better than Perfumer World's.
I can't work out your .data file format to add materials though.
Any chance of another field to indicate material 'naturalness'? eg a scale of 10 from 0=organic, 2= EU natural to 9=synthetic?
 
Last edited:

jmcdowell

New member
Oct 18, 2009
Being a techno nerd this is right up my alley. I got a few exception errors when I tried to add a new material. Then I got interrupted by the day job and came back to it a couple of hours later and it worked just fine.

The only field I felt is needed, is the max use %.
I'd also love to see some export options. I keep a spreadsheet on drive, and I export to excel to merge onto labels. That way I keep my dilutions organized and cool looking. :)

Looks like it was a lot of work. Thank you for sharing it.
 

JEBeasley

Basenotes Dependent
Jul 24, 2013
Damnit, I work on a mac! Awesome project though, I considered this concept myself when I first started cataloging my materials. I went back to school for web and multimedia development after I left cabinetry so I used to be somewhat acquainted with basic programming, scripting, etc. - not any more unfortunately. Another concept I dreamed up was a function where the program could accept values from a USB scale and insert them into a field that was tallied along with other values in the formula. It seems feasible that the field accepting the value could also compare the value with known variables for IFRA restricted materials and indicate when that value has gone beyond the threshold.

I'm interested to see how this develops.
 

pkiler

Basenotes Plus
Basenotes Plus
Dec 5, 2007
Thank you Wood and Tobacco, I never got involved with the Perfumer software from Thailand because it ran on 16 bit machines only.

Will look it over...
 

pkiler

Basenotes Plus
Basenotes Plus
Dec 5, 2007
Tried to add Ambrocenide: Got this error:

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.


************** Exception Text **************
System.UnauthorizedAccessException: Access to the path 'C:\Program Files (x86)\ParfumPro\ParfumPro\Inventory.data' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
at System.IO.File.Create(String path)
at ParfumPro.Data.SaveInventory()
at ParfumPro.FormMain.buttonInvSave_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)




************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34014 built by: FX45W81RTMGDR
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
ParfumPro
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/ParfumPro/ParfumPro/ParfumPro.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34003 built by: FX45W81RTMGDR
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------


************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.


For example:


<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>


When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
 

mumsy

Basenotes Plus
Basenotes Plus
Jan 31, 2010
I work on a mac too. I love the concept but cannot access it. Is there a possible way to operate it online perhaps within a membership arena type thing?
 

JEBeasley

Basenotes Dependent
Jul 24, 2013
Mumsy, you could try a windows emulator like WINE but it's not the smoothest way to implement anything on a mac.
 

DrSmellThis

Basenotes Dependent
Apr 13, 2013
Thank you Wood and Tobacco, I never got involved with the Perfumer software from Thailand because it ran on 16 bit machines only.

Will look it over...
I tried the PW software and didn't find it was easy enough to use. Something has to be better. I downloaded Chris', but have not tried it yet. If Chris did it, it is probably good, though. :)

Also haven't found the one you use.
 

DrSmellThis

Basenotes Dependent
Apr 13, 2013
Thanks, wood and tobacco. Looks a bit too sophisticated for me at the moment. But I will look at it in more depth.
 

Niche1

Basenotes Member
Jan 1, 2014
I also get an access denied error when attempting to add to the inventory. Just a guess, it looks as though the installer doesn't apply the correct permissions to the data file when installing.

Other than that, the GUI looks pretty good.
 
Jun 28, 2014
Thanks for the feedback everyone!

Good stuff, thanks. Better than Perfumer World's.
I can't work out your .data file format to add materials though.
Any chance of another field to indicate material 'naturalness'? eg a scale of 10 from 0=organic, 2= EU natural to 9=synthetic?

Cheers! I considered XML serialisation but it's slower than binary. However a future version might include an import facility. For the time being, please add entries manually. If you add lots, especially with density information, please let me know and I'll merge it into the index for the next version.

I'll add your naturalness scale to the list of suggestions for improvement, thanks for that.


Being a techno nerd this is right up my alley. I got a few exception errors when I tried to add a new material. Then I got interrupted by the day job and came back to it a couple of hours later and it worked just fine.

The only field I felt is needed, is the max use %.
I'd also love to see some export options. I keep a spreadsheet on drive, and I export to excel to merge onto labels. That way I keep my dilutions organized and cool looking. :)

Looks like it was a lot of work. Thank you for sharing it.

If you see an exception again, please post the details and I'll fix it.

IFRA max use % would be useful actually, I'll add it to the list. Ditto with the export feature.

You're welcome. It was a lot of work but has already made my life easier, hopefully you find it useful too.


Damnit, I work on a mac! Awesome project though, I considered this concept myself when I first started cataloging my materials. I went back to school for web and multimedia development after I left cabinetry so I used to be somewhat acquainted with basic programming, scripting, etc. - not any more unfortunately. Another concept I dreamed up was a function where the program could accept values from a USB scale and insert them into a field that was tallied along with other values in the formula. It seems feasible that the field accepting the value could also compare the value with known variables for IFRA restricted materials and indicate when that value has gone beyond the threshold.

I'm interested to see how this develops.

Sorry about the Mac situation. Perhaps in future I'll port it, but that would be a lot of work.

The USB scale idea is interesting, it would require further investigation. I'll think about it!


Tried to add Ambrocenide: Got this error:
...

Thanks for the stack trace. It might be due to the security setup on your machine. I've included some code in version 1.1 that should be able to address the issue.

If the same error still occurs, please let me know. Here's the new version:

https://drive.google.com/file/d/0B3dc0GhL1P4ONnJ4aXg0SjlnTXM/edit?usp=sharing


I work on a mac too. I love the concept but cannot access it. Is there a possible way to operate it online perhaps within a membership arena type thing?

Online might be the way to go in future. Certainly it would make the software more accessible. Thanks for the suggestion, I'll see how much work is involved.


Thanks, wood and tobacco. Looks a bit too sophisticated for me at the moment. But I will look at it in more depth.

It might appear daunting at first but once you get acquainted with the interface it should be fairly intuitive.


I also get an access denied error when attempting to add to the inventory. Just a guess, it looks as though the installer doesn't apply the correct permissions to the data file when installing.

Other than that, the GUI looks pretty good.

Yes, I think it's a problem if your account isn't assigned local administrator rights.

Please try this patched version and let me know how you get on:

https://drive.google.com/file/d/0B3dc0GhL1P4ONnJ4aXg0SjlnTXM/edit?usp=sharing



Just a quick note for everyone: If you add or modify items in the index, be sure to add a CAS number.

If you have a material that does not have a CAS then it should be added to the inventory directly, or added as an accord / dilution in the compositions section.

There is a 'fudge factor' of 0.9 g/mL for the density of materials that do not have density recorded. If you're using weight units for any components then it's a good idea to add the real density number against the material in the index.
 

deadidol

Moderator
Moderator
Basenotes Plus
Jan 19, 2013
I found this that explains any issues. I haven't had time to learn a whole new operating system. I'm a computer luddite and still learning.....

I've tried several of those in the past and Parallels has always struck me as the best, but I removed all emulators from my system last year. If there's a way to do it without installing even a stripped down version of windows, I'll give it a shot.
 

thomash

Super Member
May 7, 2014
I always enjoy it when people using the so-called superior operating system need to install a stripped down version of the so-called inferior operating system in order to get things working properly...
 

deadidol

Moderator
Moderator
Basenotes Plus
Jan 19, 2013
I always enjoy it when people using the so-called superior operating system need to install a stripped down version of the so-called inferior operating system in order to get things working properly...

I don't think mac users need to install windows to get the software to "work properly"—it's that there's no mac version available to "work improperly." Or at least that's what it seems to me.
 
Last edited:

thomash

Super Member
May 7, 2014
Still, I never hear the opposite case (but lets not hijack the topic).

In any case, I love the software! This will make things A LOT easier. Eternal gratitude is yours. Was it made in .NET? I never managed to move from Cpp over C# to .NET...

How are we intended to go about dilutions eg 10% in EtOH. would you add this to the inventory or the compositions? Maybe for this a subdivision of the inventory would be useful. For example I bought 10g maltylisobutyrate, and 1 g of it I diluted to 10%. I consider this to be part of my inventory, but would not like to make it a seperate entry in the inventory list. I want to keep it linked...

Also the ability to use mg, milligrams would be useful for the small experiments I think. Or for the really powerful chemicals.

In any case many many thanks!
 
Jun 28, 2014
Hi thomash, you're welcome! Yes it's in C#. I recommend trying it, it's a lot easier than C++ :)

Dilutions can go in as compositions, and everything is linked up the way you'd expect. So in your example:
- Add maltylisobutyrate to your inventory.
- Add ethanol to your inventory, if it's not already there.
- Create a new composition, and select 'dilution' as the type, enter the name as 'maltylisobutyrate 10% w/v'.
- In the grid, select the combobox and type 'mal' to bring up maltylisobutyrate, enter '1g' for the amount.
- Click the '+' button to add another line.
- In the grid, select the combobox and type 'eth' to bring up ethanol, enter '9.1m' for the amount
- Click 'Save'
- Now the dilution can be added to a composition.

So with the compositions you're not restricted to adding raw ingredients. Each composition can be made up of accords, dilutions or even other experiments. At some point I'll do an instruction video so everyone can see the best way to use the software.

I'm working on an analysis module that does a breakdown of any given composition, so you can see the materials involved and their v/v and w/v, even if the composition has many levels of nesting.

Milligrams will be added at some point. For the time being, please enter your milligram amounts as multiples of 0.001g.
 
Last edited:

ProfessorBats

Basenotes Member
Jun 21, 2014
Another Mac user. You'd think after Mac bastardized itself to be more PC-like we'd have at least outgrown this type of situation - alas, not so! Looks like I'll be using spreadsheets for the time being, or try Perfumer's world's.
Nevertheless, thanks for sharing the fruit of your hard work!
 
Jun 28, 2014
Hi guys. I've been thinking about the future of this software. It is proving very useful for me, but I want Mac users to be able to use it too.

Did anyone manage to get it working using a Windows emulator on their Mac?

Also if anyone has updated their index with info such as chemical composition, new materials or notes, then I can merge your info into the main database.
 

mumsy

Basenotes Plus
Basenotes Plus
Jan 31, 2010
No... I just abandoned the idea I'm afraid. Loved the concept but I'm too old to struggle with technology. I caved in completely and went back to paper index cards in a plastic box and a ring binder file. Maybe some luddites will always stay that way......
 
Jun 28, 2014
Index cards are OK of course, if it works for you :)

I've been thinking about doing a website version but it's a lot of work. So I would be inclined if there was popular demand for it.

Maybe I should talk to the owners of Basenotes and see if they'd like a web version incorporated into this site.
 

pkiler

Basenotes Plus
Basenotes Plus
Dec 5, 2007
Hi, Have you made a newer version that the 1.1 that you posted almost a year ago?

I might give it a whirl in my new lab soon coming...

PK
 
Jun 28, 2014
Hey PK, 1.1 is the latest version. I'm thinking of doing a quick cleanup though.. there are some things that could be made more ergonomic.

Also considering including an MS library if anyone can get one for me.. since we all know that smells are caused by molecular vibrations.
 

Dmitriy

Basenotes Junkie
Dec 10, 2014
and at me unfortunately the program refused to operate completely (windows Vista) only throws an error .. It is a pity ... It would be interesting to try))
 
Jun 28, 2014
and at me unfortunately the program refused to operate completely (windows Vista) only throws an error .. It is a pity ... It would be interesting to try))

Did you try version 1.1 mate? If so, please PM the exception and I'll fix it. Also probably going open source with it soon anyway.
 
Jun 28, 2014
Everyone, version 2 is ready:

https://drive.google.com/file/d/0B3dc0GhL1P4OUEkwdERMbDJsSDA/view?usp=sharing

It includes two new buttons:

- As requested by pkiler, a button for analysis. I will expand upon his recommendations. For now it shows total % of items in the composition. Note that the numbers are only accurate if you have entered density in g/mL for each component. In future, it will include batch formulation assistance and some other cool features that we are cooking up.

- Another really useful button is the 'Copy' button. So whenever you split an experiment or retry an experiment with modifications, you can copy it as a new composition first!
 

nemenator

Super Member
Dec 8, 2012
What about import & export to Excel? That way I could add the naturals from SAFC or Robertet. And moreover we could then plot those Fragrance Wheels we (OK, I) have been obsessing over.
 
Jun 28, 2014
Sure, that's do-able.. would it import into the index, or into the inventory? I'm guessing the latter?

Please let me know what needs to be exported. Is it the compositions?
 
Jun 28, 2014
Sorry but I don't have a Mac to code it on.. Please try an emulator.. if you can get it to work that way then there's a bunch of people on here who would benefit greatly!
 

poe

Basenotes Member
Sep 17, 2011
I too would love to hear if anyone gets it to work on a mac....

Has anyone tried Bootcamp? I've heard mention of it from the masses.
 

David Ruskin

Basenotes Institution
May 28, 2009
There are several existing systems that Perfumers use to work using a computer. Two that come to mind are Fompack, and Winchem. Many others. All very reliable, and flexible. Unfortunately, of course, you have to pay for them.
 
Jun 28, 2014
Version 2.5 is ready to roll!

https://sourceforge.net/projects/parfumpro/files/latest/download?source=files

Release notes:

INDEX

* Added new fields to record more data about each field:
- Boiling Point
- IFRA Maximum Use %
- Strength (how strong the material smells compared to others)

* Updated the index data with 1,359 boiling points (these data may be inaccurate!)

* Added tooltips to explain more about the type of data in each field


INVENTORY

* Added a full list of currencies with some default values for them


COMPOSITIONS

* Added drop-down checkbox lists for material tags to make more room on the screen

* Added a new composition type for tinctures

* Now showing the per litre and per kilogram cost for each composition, at-a-glance

* Added the ability to enter milligram amounts by typing 'x' after the amount


BATCHES

* A new tab to make it easier to calculate and record batches in production

* A grid to show all batches

* Data fields that may be entered by the user:
- Code
- Name / Description
- Date of production
- Composition that the batch relates to
- Volume of each bottle
- Number of bottles in batch
- Notes on the batch (e.g. how long to age it for, etc.)

* Calculated fields to help with creation of the batch:
- Total volume
- Total weight
- Cost per litre
- Cost per kilogram
- Total batch cost

* A grid showing the amount to use of each material

* A 'lock' button to freeze the batch details once it is complete (for example, while a batch is locked it's numbers will remain the same even if ingredient prices change)


SETTINGS

* Added a new tab for settings, with some small features to be extended later

* Define defaults for:
- Drops / mL
- Density (it is still recommended that a density is entered for each material in the index!)
- Boiling Point
- Home Currency (the currency you use most often)

* Ability to export the index, inventory and compositions
 

thomash

Super Member
May 7, 2014
nice!

Can i suggest to filter the boiling points a bit, some of them are real non-sense. (over 2000°C) Perhaps start by kicking out those larger than 250?

I'm guessing these are calculated values based on mol wght?

Any plans of making this an open source kind of project?
 

Latest News

Whatever your taste in perfume, we've got you covered...

catalogue your collection, keep track of your perfume wish-list, log your daily fragrance wears, review your latest finds, seek out long-lost scented loves, keep track of the latest perfume news, find your new favourite fragrance, and discuss perfume with like-minded people from all over the world...

Top
pp